2 years agoMove TypeSourceInfo to Type.h
Reid Kleckner [Sat, 7 Dec 2019 00:10:28 +0000 (16:10 -0800)]
Move TypeSourceInfo to Type.h

TypeSourceInfo is a thin wrapper around TypeLocs. Notionally, the best
place for it to live would be TypeLoc.h, but Decl.h requires it to be
complete, so it needs to be lower in the dependency graph. Type.h seems
like the next best place.

By itself, this change has no impact on build time, because it doesn't
remove a single dependency edge from a .cpp file to a .h file, but it is
an incremental step towards making the AST headers less interdependent.

Reviewers: rsmith

Differential Revision: https://reviews.llvm.org/D71427

2 years agoSupport powerpc when builing without init_array.
Sterling Augustine [Wed, 18 Dec 2019 19:15:32 +0000 (11:15 -0800)]
Support powerpc when builing without init_array.

Summary: Also add an error case when targetting an unimplement architecture.

Subscribers: nemanjai, jsji, shchenz, #sanitizers, llvm-commits

Tags: #sanitizers, #llvm

Differential Revision: https://reviews.llvm.org/D71670

2 years ago[clang-tools-extra] Fix linking dylib for LLVMFrontendOpenMP
Michał Górny [Wed, 18 Dec 2019 21:10:20 +0000 (22:10 +0100)]
[clang-tools-extra] Fix linking dylib for LLVMFrontendOpenMP

Use LLVM_LINK_COMPONENTS to link the FrontendOpenMP library
instead of passing it explicitly to LINK_LIBS.  This fixes duplicating
the library when clang-tidy is linked to LLVM dylib.

Differential Revision: https://reviews.llvm.org/D71674

2 years agoChange triple in test case to not include triples the test shouldn't
Amy Huang [Wed, 18 Dec 2019 21:15:13 +0000 (13:15 -0800)]
Change triple in test case to not include triples the test shouldn't
This is fixes changes from a85f5efd9597d0036f5c347b362cb873bdf51f16.

2 years ago[gn build] Update console print to match the commit message (NFC)
Mehdi Amini [Wed, 18 Dec 2019 21:11:24 +0000 (16:11 -0500)]
[gn build] Update console print to match the commit message (NFC)

2 years agoRevert "[InstCombine][AMDGPU] Trim more components of *buffer_load"
Piotr Sobczak [Wed, 18 Dec 2019 21:01:04 +0000 (22:01 +0100)]
Revert "[InstCombine][AMDGPU] Trim more components of *buffer_load"

Revert D70315, as it breaks gfx8 for some reason.

This reverts commit 65f94b33808d7d69539961a6f5a2168f0a1eef41.

2 years agoTweak commit message for auto update of gn build script
Mehdi Amini [Wed, 18 Dec 2019 20:55:27 +0000 (15:55 -0500)]
Tweak commit message for auto update of gn build script

Use `[tag]` as a prefix and "port" instead of "merge" to
avoid confusing with "git merge".

2 years ago[lldb/MachO] "Fix" intentional out-of-bounds error (NFC)
Jonas Devlieghere [Wed, 18 Dec 2019 20:49:46 +0000 (12:49 -0800)]
[lldb/MachO] "Fix" intentional out-of-bounds error (NFC)

Remove the hack that populates the cpsr register in the gpr struct by
writing past the end of the array. This was tripping up ASan.

Patch by: Reva Cuthbertson

2 years ago[FPEnv] Strict versions of llvm.minimum/llvm.maximum
Ulrich Weigand [Wed, 18 Dec 2019 20:33:10 +0000 (21:33 +0100)]
[FPEnv] Strict versions of llvm.minimum/llvm.maximum

Add new intrinsics
as strict versions of llvm.minimum and llvm.maximum.

Includes SystemZ back-end support.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D71624

2 years ago[libunwind] Fix evaluating DWARF operation DW_OP_pick
Steven Wu [Wed, 18 Dec 2019 20:22:21 +0000 (12:22 -0800)]
[libunwind] Fix evaluating DWARF operation DW_OP_pick

reg is unsigned type and used here for getting array element from the end by
negating it. negation of unsigned can result in large number and array access
with that index will result in segmentation fault.

Fixes: https://bugs.llvm.org/show_bug.cgi?id=43872

Patched by: kamlesh kumar

Differential Revision: https://reviews.llvm.org/D69893

2 years agoCorrect version check 9.9.26 -> 9.99.26
Kamil Rytarowski [Wed, 18 Dec 2019 20:03:17 +0000 (21:03 +0100)]
Correct version check 9.9.26 -> 9.99.26

2 years ago[analyzer] NonnullGlobalConstants: Add support for kCFNull.
Artem Dergachev [Wed, 18 Dec 2019 20:04:18 +0000 (12:04 -0800)]
[analyzer] NonnullGlobalConstants: Add support for kCFNull.

It's a singleton in CoreFoundation that always contains a non-null CFNullRef.

2 years ago[libomptarget][nfc] Introduce atomic wrapper function
Jon Chesterfield [Wed, 18 Dec 2019 20:06:16 +0000 (20:06 +0000)]
[libomptarget][nfc] Introduce atomic wrapper function

[libomptarget][nfc] Introduce atomic wrapper function

Wraps atomic functions in a template prefixed __kmpc_atomic that
dispatches to cuda or hip atomic functions. Intended to be easily extended
to dispatch to OpenCL or C++ atomics for a third target.

Reviewers: ABataev, jdoerfert, grokos

Reviewed By: jdoerfert

Subscribers: Anastasia, jvesely, mgrang, dexonsmith, llvm-commits, mgorny, jfb, openmp-commits

Tags: #openmp, #llvm

Differential Revision: https://reviews.llvm.org/D71404

2 years ago[LoopFusion] Use the LoopInfo::isRotatedForm method (NFC).
Kit Barton [Mon, 16 Dec 2019 21:37:30 +0000 (16:37 -0500)]
[LoopFusion] Use the LoopInfo::isRotatedForm method (NFC).

Loop fusion previously had a method to check whether a loop was in rotated form. This method has
been moved into the LoopInfo class. This patch removes the old isRotated method from loop fusion,
in favour of the new one in LoopInfo.

2 years ago[InstCombine] Insert instructions before adding them to worklist
Jakub Kuderski [Wed, 18 Dec 2019 19:55:41 +0000 (14:55 -0500)]
[InstCombine] Insert instructions before adding them to worklist

This patch adds instructions to the InstCombine worklist after they are properly inserted. This way we don't get `<badref>`s printed when logging added instructions.
It also adds a check in `Worklist::Add` that ensures that all added instructions have parents.

Simple test case that illustrates the difference when run with `--debug-only=instcombine`:

define i32 @test35(i32 %a, i32 %b) {
  %1 = or i32 %a, 1135
  %2 = or i32 %1, %b
  ret i32 %2

Before this patch:
IC: ADDING: 3 instrs to worklist
IC: Visiting:   %1 = or i32 %a, 1135
IC: Visiting:   %2 = or i32 %1, %b
IC: ADD:   %2 = or i32 %a, %b
IC: Old =   %3 = or i32 %1, %b
    New =   <badref> = or i32 %2, 1135
IC: ADD:   <badref> = or i32 %2, 1135

With this patch:
IC: ADDING: 3 instrs to worklist
IC: Visiting:   %1 = or i32 %a, 1135
IC: Visiting:   %2 = or i32 %1, %b
IC: ADD:   %2 = or i32 %a, %b
IC: Old =   %3 = or i32 %1, %b
    New =   <badref> = or i32 %2, 1135
IC: ADD:   %3 = or i32 %2, 1135

Reviewers: fhahn, davide, spatel, foad, grosser, nikic

Reviewed By: nikic

Subscribers: nikic, lebedev.ri, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71093

2 years ago[Concepts] Fix incorrect move out of temporary in D41910
Saar Raz [Wed, 18 Dec 2019 19:43:53 +0000 (21:43 +0200)]
[Concepts] Fix incorrect move out of temporary in D41910

Moves out of temporaries caused warnings that failed builds.

2 years ago[libomptarget][nfc] Extract function from data_sharing, move to common
JonChesterfield [Wed, 18 Dec 2019 19:39:34 +0000 (19:39 +0000)]
[libomptarget][nfc] Extract function from data_sharing, move to common

[libomptarget][nfc] Extract function from data_sharing, move to common

Finding the first active thread in the warp is different on nvptx and amdgcn,
mostly due to warp size and the desire for efficiency.

Reviewers: ABataev, jdoerfert, grokos

Reviewed By: jdoerfert

Subscribers: jvesely, mgorny, openmp-commits

Tags: #openmp

Differential Revision: https://reviews.llvm.org/D71643

2 years ago[NFC] Update FIXME for one VFS test
Adrian McCarthy [Wed, 4 Dec 2019 21:11:02 +0000 (13:11 -0800)]
[NFC] Update FIXME for one VFS test

The VFS/subframework-symlink.m test is still XFAIL on Windows, but for
a different reason than those fixed in PR43272, so I've updated the
PR number.

2 years agoFix more VFS tests on Windows
Adrian McCarthy [Mon, 25 Nov 2019 23:57:21 +0000 (15:57 -0800)]
Fix more VFS tests on Windows

Since VFS paths can be in either Posix or Windows style, we have to use
a more flexible definition of "absolute" path.

The key here is that FileSystem::makeAbsolute is now virtual, and the
RedirectingFileSystem override checks for either concept of absolute
before trying to make the path absolute by combining it with the current

Differential Revision: https://reviews.llvm.org/D70701

2 years ago[Concepts] Fix crash in D41910
Saar Raz [Wed, 18 Dec 2019 19:31:33 +0000 (21:31 +0200)]
[Concepts] Fix crash in D41910

Differential Revision: https://reviews.llvm.org/D41910

2 years agoRevert "[AArch64][SVE] Replace integer immediate intrinsics with splat vector variant"
Danilo Carvalho Grael [Wed, 18 Dec 2019 19:01:38 +0000 (14:01 -0500)]
Revert "[AArch64][SVE] Replace integer immediate intrinsics with splat vector variant"

This reverts commit 830e08b98bcb427136443093c282b25328137cf0 and eb1857ce0da481caf82271e6d0c9fc745dfab26f.

This commit leads to an unexpected failure on test/CodeGen/AArch64/sve-gather-scatter-dag-combine.ll.

The review will need more changes before its re-commited.

2 years ago[Clang FE, SystemZ] Don't add "true" value for the "mnop-mcount" attribute.
Jonas Paulsson [Wed, 18 Dec 2019 18:12:41 +0000 (10:12 -0800)]
[Clang FE, SystemZ]  Don't add "true" value for the "mnop-mcount" attribute.

Let the "mnop-mcount" function attribute simply be present or non-present.
Update SystemZ backend as well to use hasFnAttribute() instead.

Review: Ulrich Weigand

2 years ago[Concepts] Constrained partial specializations and function overloads.
Saar Raz [Wed, 18 Dec 2019 18:59:01 +0000 (20:59 +0200)]
[Concepts] Constrained partial specializations and function overloads.

Added support for constraint satisfaction checking and partial ordering of constraints in constrained partial specialization and function template overloads.

Phabricator: D41910

2 years ago[InstCombine] Allow to limit the max number of iterations
Jakub Kuderski [Wed, 18 Dec 2019 18:48:54 +0000 (13:48 -0500)]
[InstCombine] Allow to limit the max number of iterations

This patch teaches InstCombine to accept a new parameter: maximum number of iterations over functions.

InstCombine tries to simplify instructions by iterating over the whole function until the function stops changing. As a consequence, the last iteration before reaching a fixpoint visits all instructions in the worklist and never performs any rewrites.

Bounding the number of iterations can have 2 benefits:
* In case the users of the pass can make a good guess about the number of required iterations, we can save the time normally spent on the last iteration that doesn't change anything.
* When the wants to use InstCombine as a cleanup pass, it may be enough to run just a few iterations and stop even before reaching a fixpoint. This can be also useful for implementing a lightweight pass pipeline (think `-O1`).

This patch does not change the behavior of opt or Clang -- limiting the number of iterations is entirely opt-in.

Reviewers: fhahn, davide, spatel, foad, nlopes, grosser, lebedev.ri, nikic, xbolva00

Reviewed By: spatel

Subscribers: craig.topper, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71145

2 years agollvm-cxxmap: fix support for remapping non-mangled names.
Richard Smith [Wed, 18 Dec 2019 18:44:29 +0000 (10:44 -0800)]
llvm-cxxmap: fix support for remapping non-mangled names.

Remappings involving extern "C" names were already supported in the
context of <local-name>s, but this support didn't work for remapping the
complete mangling itself. (Eg, we would remap X<foo> but not foo itself,
if foo is an extern "C" function.)

2 years ago[SelectionDAGBuilder] Use getConstant instead of getTargetConstant to build the offse...
Craig Topper [Wed, 18 Dec 2019 18:41:34 +0000 (10:41 -0800)]
[SelectionDAGBuilder] Use getConstant instead of getTargetConstant to build the offset for struct types in getUniformBase.

getTargetConstant prevents any optimizations from operating on the
value and basically says its already been iseled. But since we
want the index to be in a register, this isn't true.

Prior to this we were generating a vbroadcast with an immediate
argument which is illegal and was flagged by the expensive checks

2 years ago[PowerPC][NFC] Refactor splat of constant to vector.
Stefan Pintilie [Wed, 18 Dec 2019 18:19:04 +0000 (12:19 -0600)]
[PowerPC][NFC] Refactor splat of constant to vector.

Refactor the splatting of a constant to a vector so that common code is used
both for Power9 and Power8.

Patch by: Anil Mahmud

Differential Revision: https://reviews.llvm.org/D71481

2 years agoAdd support for the MS qualifiers __ptr32, __ptr64, __sptr, __uptr.
Amy Huang [Thu, 24 Oct 2019 23:34:25 +0000 (16:34 -0700)]
Add support for the MS qualifiers __ptr32, __ptr64, __sptr, __uptr.

This adds parsing of the qualifiers __ptr32, __ptr64, __sptr, and __uptr and
lowers them to the corresponding address space pointer for 32-bit and 64-bit pointers.
(32/64-bit pointers added in https://reviews.llvm.org/D69639)

A large part of this patch is making these pointers ignore the address space
when doing things like overloading and casting.


Reviewers: rnk, rsmith

Subscribers: jholewinski, jvesely, nhaehnle, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D71039

2 years ago[AArch64][SVE] Fix gather scatter dag combine test.
Danilo Carvalho Grael [Wed, 18 Dec 2019 18:44:25 +0000 (13:44 -0500)]
[AArch64][SVE] Fix gather scatter dag combine test.

2 years ago[AArch64][SVE] Replace integer immediate intrinsics with splat vector variant
Danilo Carvalho Grael [Tue, 17 Dec 2019 15:42:52 +0000 (10:42 -0500)]
[AArch64][SVE] Replace integer immediate intrinsics with splat vector variant

Summary: Replace the integer immediate intrisics with splat vector variants so they can be applied as optimizations for the C/C++ intrinsics.

Reviewers: sdesmalen, huntergr, rengolin, efriedma, c-rhodes, mgudim, kmclaughlin

Subscribers: tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits, amehsan

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71614

2 years ago[ MC ] Match labels to existing fragments even when switching sections.
Michael Trent [Wed, 11 Dec 2019 18:42:37 +0000 (10:42 -0800)]
[ MC ] Match labels to existing fragments even when switching sections.

(This commit restores the original branch (4272372c571) and applies an
additional change dropped from the original in a bad merge. This change
should address the previous bot failures. Both changes reviewed by pete.)

This commit builds upon Derek Schuff's 2014 commit for attaching labels to
existing fragments ( Diff Revision: http://reviews.llvm.org/D5915 )

When temporary labels appear ahead of a fragment, MCObjectStreamer will
track the temporary label symbol in a "Pending Labels" list. Labels are
associated with fragments when a real fragment arrives; otherwise, an empty
data fragment will be created if the streamer's section changes or if the
stream finishes.

This commit moves the "Pending Labels" list into each MCStream, so that
this label-fragment matching process is resilient to section changes. If
the streamer emits a label in a new section, switches to another section to
do other work, then switches back to the first section and emits a
fragment, that initial label will be associated with this new fragment.
Labels will only receive empty data fragments in the case where no other
fragment exists for that section.

The downstream effects of this can be seen in Mach-O relocations. The
previous approach could produce local section relocations and external
symbol relocations for the same data in an object file, and this mix of
relocation types resulted in problems in the ld64 Mach-O linker. This
commit ensures relocations triggered by temporary labels are consistent.

Reviewers: pete, ab, dschuff

Reviewed By: pete, dschuff

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71368

2 years ago[AArch64] add tests for bitcasted DUPLANE; NFC
Sanjay Patel [Wed, 18 Dec 2019 16:55:26 +0000 (11:55 -0500)]
[AArch64] add tests for bitcasted DUPLANE; NFC

See D63815 for context/motivation.

2 years agoRevert "Add an -fno-temp-file flag for compilation"
Mitch Phillips [Wed, 18 Dec 2019 17:05:09 +0000 (09:05 -0800)]
Revert "Add an -fno-temp-file flag for compilation"

This reverts commit d129aa1d5369781deff6c6b854cb612e160d3fb2.

This broke the MSan buildbots. More information available in the
original PR: https://reviews.llvm.org/D70615

2 years ago[NFC] Fix sanitizer lint problem that's breaking Android bot.
Mitch Phillips [Wed, 18 Dec 2019 16:47:31 +0000 (08:47 -0800)]
[NFC] Fix sanitizer lint problem that's breaking Android bot.

Fixes the lint issue introduced by

2 years agoFix modules build by adding missing includes to LTO/Config.h
Raphael Isemann [Wed, 18 Dec 2019 16:42:58 +0000 (17:42 +0100)]
Fix modules build by adding missing includes to LTO/Config.h

2 years agoReapply: [DebugInfo] Correctly handle salvaged casts and split fragments at ISel
stozer [Wed, 18 Dec 2019 14:28:24 +0000 (14:28 +0000)]
Reapply: [DebugInfo] Correctly handle salvaged casts and split fragments at ISel

This reverts commit 1f3dd83cc1f2b8f72b9d59e2b4221b12fb7f9a95, reapplying
commit bb1b0bc4e57428ce364d3d6c075ff03cb8973462.

The original commit failed on some builds seemingly due to the use of a
bracketed constructor with an std::array, i.e. `std::array<> arr({...})`.

2 years ago[llvm-exegesis][NFC] internal changes
Guillaume Chatelet [Wed, 18 Dec 2019 11:08:38 +0000 (12:08 +0100)]
[llvm-exegesis][NFC] internal changes

BitVectors are now cached to lower memory utilization.
Instructions have reference semantics.

Reviewers: courbet

Subscribers: sdardis, tschuett, jrtc27, atanasyan, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71653

2 years ago[compiler-rt] [test] Disable ASLR on UBSAN+[AMT]SAN tests on NetBSD
Michał Górny [Wed, 18 Dec 2019 16:20:40 +0000 (17:20 +0100)]
[compiler-rt] [test] Disable ASLR on UBSAN+[AMT]SAN tests on NetBSD

2 years ago[compiler-rt] [test] Disable ASLR on LSAN+ASAN tests on NetBSD
Michał Górny [Wed, 18 Dec 2019 16:07:34 +0000 (17:07 +0100)]
[compiler-rt] [test] Disable ASLR on LSAN+ASAN tests on NetBSD

2 years ago[NFC][InlineCost] Run clang-format on InlineCost.cpp
Mircea Trofin [Wed, 18 Dec 2019 15:56:47 +0000 (07:56 -0800)]
[NFC][InlineCost] Run clang-format on InlineCost.cpp

Reviewers: davidxl

Reviewed By: davidxl

Subscribers: Jim, eraman, hiraditya, haicheng, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71646

2 years ago[AArch64] update test checks; NFC
Sanjay Patel [Wed, 18 Dec 2019 16:00:38 +0000 (11:00 -0500)]
[AArch64] update test checks; NFC

The common prefix reduces a bunch of replication; not sure why it
didn't happen before.

2 years agogn build: Merge 9883d7edc65
LLVM GN Syncbot [Wed, 18 Dec 2019 16:00:24 +0000 (16:00 +0000)]
gn build: Merge 9883d7edc65

2 years ago[LoopUtils] Updated deleteDeadLoop() to handle loop nest.
Whitney Tsang [Wed, 18 Dec 2019 15:57:50 +0000 (15:57 +0000)]
[LoopUtils] Updated deleteDeadLoop() to handle loop nest.

Reviewer: kariddi, sanjoy, reames, Meinersbur, bmahjour, etiotto,
Reviewed By: Meinersbur
Subscribers: mgorny, hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D70939

2 years ago[compiler-rt] [test] Disable ASLR for fuzzer tests on NetBSD
Michał Górny [Wed, 18 Dec 2019 15:51:31 +0000 (16:51 +0100)]
[compiler-rt] [test] Disable ASLR for fuzzer tests on NetBSD

2 years ago[clang] [cmake] Fix gen_ast_dump_json_test.py binary dir
Michał Górny [Tue, 17 Dec 2019 17:09:18 +0000 (18:09 +0100)]
[clang] [cmake] Fix gen_ast_dump_json_test.py binary dir

Use correct directory to put gen_ast_dump_json_test.py instead of
LLVM_BINARY_DIR.  This fixes attempting to write to /usr when building
clang standalone.

Differential Revision: https://reviews.llvm.org/D71615

2 years ago[ThinLTO] Show preserved symbols in DOT files
evgeny [Wed, 18 Dec 2019 15:33:15 +0000 (18:33 +0300)]
[ThinLTO] Show preserved symbols in DOT files

Differential revision: https://reviews.llvm.org/D71608

2 years ago[globalisel] Small correction to the fixup in 0a0813962d6. The two ID's are not the...
Daniel Sanders [Wed, 18 Dec 2019 14:56:23 +0000 (14:56 +0000)]
[globalisel] Small correction to the fixup in 0a0813962d6. The two ID's are not the same size

The rule ID is a uint64_t as it has global scope but the UID is scoped to
the rule and expected to be much smaller so it's only unsigned.

2 years ago[compiler-rt] Sync NetBSD ioctl definitions with 9.99.26
Kamil Rytarowski [Wed, 18 Dec 2019 14:20:09 +0000 (15:20 +0100)]
[compiler-rt] Sync NetBSD ioctl definitions with 9.99.26

Document the minimal version supported to 9.0.

2 years ago[gicombiner] Import tryCombineIndexedLoadStore()
Daniel Sanders [Wed, 18 Dec 2019 12:35:08 +0000 (12:35 +0000)]
[gicombiner] Import tryCombineIndexedLoadStore()

Now that arbitrary data is supported, import tryCombineIndexedLoadStore()

Depends on D69147

Reviewers: bogner, volkan

Reviewed By: volkan

Subscribers: hiraditya, arphaman, Petar.Avramovic, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D69151

2 years ago[NFC][InstCombine] Autogenerate assume.ll test
Roman Lebedev [Wed, 18 Dec 2019 14:14:40 +0000 (17:14 +0300)]
[NFC][InstCombine] Autogenerate assume.ll test

2 years ago[globalisel] Attempt to fix ARM bots that emit the correct number in the wrong place
Daniel Sanders [Wed, 18 Dec 2019 14:14:06 +0000 (14:14 +0000)]
[globalisel] Attempt to fix ARM bots that emit the correct number in the wrong place

2 years agoAdd an -fno-temp-file flag for compilation
Hans Wennborg [Wed, 18 Dec 2019 14:00:15 +0000 (15:00 +0100)]
Add an -fno-temp-file flag for compilation

Our build system does not handle randomly named files created during
the build well. We'd prefer to write compilation output directly
without creating a temporary file. Function parameters already
existed to control this behavior but were not exposed all the way out
to the command line.

Patch by Zachary Henkel!

Differential revision: https://reviews.llvm.org/D70615

2 years ago[AArch64] match fcvtl2 with bitcasted extract
Sanjay Patel [Wed, 18 Dec 2019 13:47:07 +0000 (08:47 -0500)]
[AArch64] match fcvtl2 with bitcasted extract

This should eliminate a regression seen in D63815.

If we are FP extending the high half extract of a vector,
we should be able to peek through a bitcast sitting
between the extract and extend.

This replaces tablegen patterns with a more general
DAG to DAG override, so we can handle any casted type.

Differential Revision: https://reviews.llvm.org/D71515

2 years ago[InstCombine] add tests for copysign; NFC
Sanjay Patel [Tue, 17 Dec 2019 21:46:42 +0000 (16:46 -0500)]
[InstCombine] add tests for copysign; NFC

2 years ago[lldb][NFC] Add unit test for persistent variable lookup with ClangExpressionDeclMap
Raphael Isemann [Tue, 17 Dec 2019 15:12:07 +0000 (16:12 +0100)]
[lldb][NFC] Add unit test for persistent variable lookup with ClangExpressionDeclMap

This adds a unit test for looking up persistent declarations in the scratch AST
context. Also adds the `GetPersistentDecl` hook to the ClangExpressionDeclMap
that this unit test can emulate looking up persistent variables without having
a lldb_private::Target.

2 years ago[gicombiner] Add support for arbitrary match data being passed from match to apply
Daniel Sanders [Wed, 18 Dec 2019 12:26:31 +0000 (12:26 +0000)]
[gicombiner] Add support for arbitrary match data being passed from match to apply

This is used by the extending_loads combine to tell the apply step which
use is the preferred one to fold and the other uses should be re-written
to consume.

Depends on D69117

Reviewers: volkan, bogner

Reviewed By: volkan

Subscribers: hiraditya, Petar.Avramovic, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D69147

2 years agoRevert "[DebugInfo] Correctly handle salvaged casts and split fragments at ISel"
stozer [Wed, 18 Dec 2019 11:46:10 +0000 (11:46 +0000)]
Revert "[DebugInfo] Correctly handle salvaged casts and split fragments at ISel"

Reverted due to build failure on windows bots.

This reverts commit bb1b0bc4e57428ce364d3d6c075ff03cb8973462.

2 years agogn build: Merge 7ea2e5195a8
LLVM GN Syncbot [Wed, 18 Dec 2019 11:37:45 +0000 (11:37 +0000)]
gn build: Merge 7ea2e5195a8

2 years agoRevert "Temporarily Revert "[gicombiner] Add the MatchDag structure and parse instruc...
Daniel Sanders [Wed, 18 Dec 2019 10:25:19 +0000 (10:25 +0000)]
Revert "Temporarily Revert "[gicombiner] Add the MatchDag structure and parse instruction DAG's from the input""

This reverts commit e62e760f29567fe0841af870c65a4f8ef685d217.

The issue @uweigand raised should have been fixed by iterating over the
vector that owns the operand list data instead of the FoldingSet.

The MSVC issue raised by @thakis should have been fixed by relaxing the
regexes a little. I don't have a Windows machine available to test that so
I tested it by using `perl -p -e 's/0x([0-9a-f]+)/\U\1\E/g' to convert the
output of %p to the windows style.

I've guessed at the issue @phosek raised as there wasn't enough information
to investigate it. What I think is happening on that bot is the -debug
option isn't available because the second stage build is a release build.
I'm not sure why other release-mode bots didn't report it though.

2 years agogn build: Merge 1ad15046dcf
LLVM GN Syncbot [Wed, 18 Dec 2019 11:25:51 +0000 (11:25 +0000)]
gn build: Merge 1ad15046dcf

2 years ago[Syntax] Use a hash table to search for tokens by their location
Ilya Biryukov [Wed, 18 Dec 2019 10:44:06 +0000 (11:44 +0100)]
[Syntax] Use a hash table to search for tokens by their location

This is both more efficient and avoids corner cases in

The change is trivial and clearly a performance improvement on the hot
path of building the syntax tree, so sending without review.

2 years ago[Syntax] Uppercase the first letter of the test name. NFC
Ilya Biryukov [Wed, 18 Dec 2019 11:20:30 +0000 (12:20 +0100)]
[Syntax] Uppercase the first letter of the test name. NFC

To match naming style of other tests.

2 years ago[Syntax] Allow to mutate syntax trees
Ilya Biryukov [Wed, 18 Dec 2019 10:52:43 +0000 (11:52 +0100)]
[Syntax] Allow to mutate syntax trees

This patch adds facilities to mutate the syntax trees and produce
corresponding text replacements.

The public interface of the syntax library now includes facilities to:
    1. perform type-safe modifications of syntax trees,
    2. compute textual replacements to apply the modifications,
    3. create syntax trees not backed by the source code.

For each of the three, we only add a few example transformations in this
patch to illustrate the idea, support for more kinds of nodes and
transformations will be done in follow-up patches.

The high-level mutation operations are implemented on top of operations
that allow to arbitrarily change the trees. They are considered to be
implementation details and are not available to the users of the

Reviewers: sammccall, gribozavr2

Reviewed By: gribozavr2

Subscribers: merge_guards_bot, mgorny, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D64573

2 years ago[DebugInfo] Correctly handle salvaged casts and split fragments at ISel
stozer [Tue, 17 Dec 2019 09:37:17 +0000 (09:37 +0000)]
[DebugInfo] Correctly handle salvaged casts and split fragments at ISel

Previously, LLVM had no functional way of performing casts inside of a
DIExpression(), which made salvaging cast instructions other than Noop
casts impossible. This patch enables the salvaging of casts by using the
DW_OP_LLVM_convert operator for SExt and Trunc instructions.

There is another issue which is exposed by this fix, in which fragment
DIExpressions (which are preserved more readily by this patch) for
values that must be split across registers in ISel trigger an assertion,
as the 'split' fragments extend beyond the bounds of the fragment
DIExpression causing an error. This patch also fixes this issue by
checking the fragment status of DIExpressions which are to be split, and
dropping fragments that are invalid.

2 years agorecommit: [ASTImporter] Friend class decl should not be visible in its context
Gabor Marton [Wed, 4 Dec 2019 16:12:08 +0000 (17:12 +0100)]
recommit: [ASTImporter] Friend class decl should not be visible in its context

In the past we had to use DeclContext::makeDeclVisibleInContext to make
friend declarations available for subsequent lookup calls and this way
we could chain (redecl) the structurally equivalent decls.
By doing this we created an AST that improperly made declarations
visible in some contexts, so the AST was malformed.
Since we use the importer specific lookup this is no longer necessary,
because with that we can find every previous nodes.

Reviewers: balazske, a_sidorin, a.sidorin, shafik

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, teemperor, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D71020

2 years ago[OpenCL] Add builtin function extension handling
Sven van Haastregt [Wed, 18 Dec 2019 10:13:51 +0000 (10:13 +0000)]
[OpenCL] Add builtin function extension handling

Provide a mechanism to attach OpenCL extension information to builtin
functions, so that their use can be restricted according to the
extension(s) the builtin is part of.

Patch by Pierre Gondois and Sven van Haastregt.

Differential Revision: https://reviews.llvm.org/D71476

2 years ago[AArch64] Improve codegen of volatile load/store of i128
Victor Campos [Mon, 28 Oct 2019 13:44:48 +0000 (13:44 +0000)]
[AArch64] Improve codegen of volatile load/store of i128

Instead of generating two i64 instructions for each load or store of a
volatile i128 value (two LDRs or STRs), now emit a single LDP or STP.

Reviewers: labrinea, t.p.northover, efriedma

Reviewed By: efriedma

Subscribers: kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D69559

2 years ago[AArch64] Enable clustering memory accesses to fixed stack objects
Jay Foad [Wed, 11 Dec 2019 10:29:23 +0000 (10:29 +0000)]
[AArch64] Enable clustering memory accesses to fixed stack objects

r347747 added support for clustering mem ops with FI base operands
including support for fixed stack objects in shouldClusterFI, but
apparently this was never tested.

This patch fixes shouldClusterFI to work with scaled as well as
unscaled load/store instructions, and fixes the ordering of memory ops
in MemOpInfo::operator< to ensure that memory addresses always
increase, regardless of which direction the stack grows.

Subscribers: MatzeB, kristof.beyls, hiraditya, javed.absar, arphaman, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71334

2 years ago[llvm-exegesis][mips] Add lit test
Miloš Stojanović [Wed, 18 Dec 2019 09:21:06 +0000 (10:21 +0100)]
[llvm-exegesis][mips] Add lit test

Adding a basic lit test for MIPS.

Differential Revision: https://reviews.llvm.org/D71605

2 years ago[NFC][TTI] Add Alignment for isLegalMasked[Gather/Scatter]
Anna Welker [Wed, 18 Dec 2019 08:42:53 +0000 (08:42 +0000)]
[NFC][TTI] Add Alignment for isLegalMasked[Gather/Scatter]

Add an extra parameter so alignment can be taken under
consideration in gather/scatter legalization.

Differential Revision: https://reviews.llvm.org/D71610

2 years ago[cmake] Add llvm-locstats to LLVM_TEST_DEPENDS
David Stenberg [Wed, 18 Dec 2019 08:54:21 +0000 (09:54 +0100)]
[cmake] Add llvm-locstats to LLVM_TEST_DEPENDS

Make sure that llvm-locstats is updated before running lit tests even
when it's not an explicit target.

Reviewers: djtodoro, krisb, spatel

Reviewed By: djtodoro

Subscribers: mgorny, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71611

2 years ago[llvm-readobj][test] - Move a comment. NFC.
Georgii Rymar [Wed, 18 Dec 2019 08:50:08 +0000 (11:50 +0300)]
[llvm-readobj][test] - Move a comment. NFC.

I've forgot to address this review comment.

2 years ago[llvm-readob] - Refactor printing of sections flags. NFCI.
Georgii Rymar [Tue, 17 Dec 2019 09:24:50 +0000 (12:24 +0300)]
[llvm-readob] - Refactor printing of sections flags. NFCI.

This is a natural clean-up after D71462/D71464.
It allows to define known section letters used for GNU style
in one place.

Differential revision: https://reviews.llvm.org/D71591

2 years ago[llvm-readobj][test] - Cleanup hash-histogram.test
Georgii Rymar [Tue, 17 Dec 2019 14:13:47 +0000 (17:13 +0300)]
[llvm-readobj][test] - Cleanup hash-histogram.test

In this test case we use 3 precompiled objects to
test how we print a histogram for an GNU hash section.
It does not make sense to use precompiled objects
for that. Also we could have 2 tests: one for 32 and
another for 64 bits target.

This patch does this change. It is not possible to remove
these precompiled objects because they are used elsewhere.

Differential revision: https://reviews.llvm.org/D71606

2 years ago[llvm-readelf] - Change letters used for SHF_ARM_PURECODE and SHF_X86_64_LARGE flags.
Georgii Rymar [Fri, 13 Dec 2019 14:02:03 +0000 (17:02 +0300)]
[llvm-readelf] - Change letters used for SHF_ARM_PURECODE and SHF_X86_64_LARGE flags.

GNU uses `l` for SHF_X86_64_LARGE and `y` for SHF_ARM_PURECODE.
Lets follow.

To do this I had to refactor and refine how we print the help flags description.
It was too generic and inconsistent with GNU readelf.

Differential revision: https://reviews.llvm.org/D71464

2 years ago[ELF] writePlt, writeIplt: replace parameters gotPltEntryAddr and index with `const...
Fangrui Song [Tue, 17 Dec 2019 21:43:04 +0000 (13:43 -0800)]
[ELF] writePlt, writeIplt: replace parameters gotPltEntryAddr and index with `const Symbol &`. NFC

PPC::writeIplt (IPLT code sequence, D71621) needs to access `Symbol`.

Reviewed By: grimar, ruiu

Differential Revision: https://reviews.llvm.org/D71631

2 years ago[llvm-readelf][llvm-readobj] - Reimplement the logic of section flags dumping.
Georgii Rymar [Fri, 13 Dec 2019 12:48:09 +0000 (15:48 +0300)]
[llvm-readelf][llvm-readobj] - Reimplement the logic of section flags dumping.

Our logic that dumped the flags was buggy.

For LLVM style it dumped SHF_MASKPROC/SHF_MASKOS named constants, though
they are not flags, but masks.

For GNU style it was just very inconsistent with GNU which has logic
that is not straightforward. Imagine we have sh_flags == 0x90000000.
SHF_EXCLUDE ("E") has a value of 0x80000000 and SHF_MASKPROC is 0xf0000000.
GNU readelf will not print "E" or "Ep" in this case, but will print just
"p". It only will print "E" when no other processor flag is set.
I had to investigate the GNU source to find the algorithm and now our logic should
match it.

Differential revision: https://reviews.llvm.org/D71462

2 years ago[X86] Add calculation for elements in structures in getting uniform base for the...
Wang, Pengfei [Fri, 13 Dec 2019 00:17:41 +0000 (08:17 +0800)]
[X86] Add calculation for elements in structures in getting uniform base for the Gather/Scatter intrinsic.

Summary: Add calculation for elements in structures in getting uniform
base for the Gather/Scatter intrinsic.

Reviewers: craig.topper, c-rhodes, RKSimon

Subscribers: hiraditya, llvm-commits, annita.zhang, LuoYuanke

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71442

2 years ago[X86] Add strict fma support
Wang, Pengfei [Tue, 17 Dec 2019 13:27:46 +0000 (21:27 +0800)]
[X86] Add strict fma support

Summary: Add strict fma support

Reviewers: craig.topper, RKSimon, LiuChen3

Subscribers: hiraditya, llvm-commits, LuoYuanke

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71604

2 years ago[CFG] Add an option to expand CXXDefaultInitExpr into aggregate initialization
Gabor Horvath [Wed, 18 Dec 2019 01:53:26 +0000 (17:53 -0800)]
[CFG] Add an option to expand CXXDefaultInitExpr into aggregate initialization

This is useful for clients that are relying on linearized CFGs for evaluating
subexpressions and want the default initializer to be evaluated properly.

The upcoming lifetime analysis is using this but it might also be useful
for the static analyzer at some point.

Differential Revision: https://reviews.llvm.org/D71642

2 years ago[unwind] Don't link libpthread and libdl on Fuchsia
Petr Hosek [Wed, 18 Dec 2019 01:18:24 +0000 (17:18 -0800)]
[unwind] Don't link libpthread and libdl on Fuchsia

This is a follow up to D71135.

2 years ago[ELF] Fix a comment. NFC
Fangrui Song [Wed, 18 Dec 2019 01:17:33 +0000 (17:17 -0800)]
[ELF] Fix a comment. NFC

2 years ago[docs] Remove `git llvm push` and `git llvm revert` from GettingStarted
Justin Bogner [Wed, 18 Dec 2019 01:10:48 +0000 (17:10 -0800)]
[docs] Remove `git llvm push` and `git llvm revert` from GettingStarted

These sections aren't accurate since the github move.

Differential Revision: https://reviews.llvm.org/D71640

2 years ago[PowerPC] Add missing legalization for vector BSWAP
Nemanja Ivanovic [Wed, 18 Dec 2019 01:07:18 +0000 (19:07 -0600)]
[PowerPC] Add missing legalization for vector BSWAP

We somehow missed doing this when we were working on Power9 exploitation.
This just adds the missing legalization and cost for producing the vector

Differential revision: https://reviews.llvm.org/D70436

2 years agogn build: Merge e62e760f295
LLVM GN Syncbot [Wed, 18 Dec 2019 00:29:06 +0000 (00:29 +0000)]
gn build: Merge e62e760f295

2 years agoTemporarily Revert "[gicombiner] Add the MatchDag structure and parse instruction...
Eric Christopher [Wed, 18 Dec 2019 00:22:31 +0000 (16:22 -0800)]
Temporarily Revert "[gicombiner] Add the MatchDag structure and parse instruction DAG's from the input"
and follow-on patches.

This is breaking a few build bots and local builds with follow-up already
on the patch thread.

This reverts commits 390c8baa5440dda8907688d9ef860f6982bd925f and

2 years ago[X86] Manually format some setOperationAction calls to line up arguments to improve...
Craig Topper [Wed, 18 Dec 2019 00:04:26 +0000 (16:04 -0800)]
[X86] Manually format some setOperationAction calls to line up arguments to improve readability. NFC

2 years ago[AArch64][GlobalISel]: Fix a crash in GlobalIsel in dealing with 16bit uadd.with...
Xiaoqing Wu [Tue, 17 Dec 2019 23:41:06 +0000 (15:41 -0800)]
[AArch64][GlobalISel]: Fix a crash in GlobalIsel in dealing with 16bit uadd.with.overflow.

Summary: AArch64 doesn't support uadd.with.overflow.i16 natively. This change adds a legalization rule to convert the 32bit add result to 16bit. This should fix PR43981.

Reviewers: arsenm, qcolombet, paquette, aemerson

Reviewed By: paquette

Subscribers: wdng, rovka, kristof.beyls, hiraditya, Petar.Avramovic, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71587

2 years ago[FPEnv][LegalizeTypes] Make ScalarizeVecOp_STRICT_FP_ROUND do its own replacements...
Craig Topper [Tue, 17 Dec 2019 23:14:44 +0000 (15:14 -0800)]
[FPEnv][LegalizeTypes] Make ScalarizeVecOp_STRICT_FP_ROUND do its own replacements and return SDValue()

The caller will assert for nodes with more than 2 results unless
we return a null SDValue.

I tried to test this by copying an AArch64 test for ScalarizeVecOp_FP_ROUND.
While it did hit the assert and this commited fixed that. It also
hit a later problem that couldn't be fixed without adding strict
FP support to AArch64.

2 years ago[AMDGPU] Fixed cost model for packed 16 bit ops
Stanislav Mekhanoshin [Tue, 17 Dec 2019 19:16:06 +0000 (11:16 -0800)]
[AMDGPU] Fixed cost model for packed 16 bit ops

Differential Revision: https://reviews.llvm.org/D71622

2 years ago[WebAssembly] Implement SIMD {i8x16,i16x8}.avgr_u instructions
Thomas Lively [Tue, 17 Dec 2019 21:58:39 +0000 (13:58 -0800)]
[WebAssembly] Implement SIMD {i8x16,i16x8}.avgr_u instructions

These instructions were added to the spec proposal in
https://github.com/WebAssembly/simd/pull/126. Their semantics are
equivalent to `(a + b + 1) / 2`. The opcode for the experimental
i32x4.dot_i16x8_s is also bumped due to a collision with the
i8x16.avgr_u opcode.

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71628

2 years agoRevert "[ MC ] Match labels to existing fragments even when switching sections."
Mitch Phillips [Tue, 17 Dec 2019 23:03:10 +0000 (15:03 -0800)]
Revert "[ MC ] Match labels to existing fragments even when switching sections."

This reverts commit 4272372c571cd33edc77a8844b0a224ad7339138.

Caused an MSan buildbot failure. More information available in the patch
that introduced the bug: https://reviews.llvm.org/D71368

2 years ago[analysis] Discard type qualifiers when casting values retrieved from the Store.
Artem Dergachev [Tue, 17 Dec 2019 22:49:53 +0000 (14:49 -0800)]
[analysis] Discard type qualifiers when casting values retrieved from the Store.

This canonicalizes the representation of unknown pointer symbols,
which reduces the overall confusion in pointer cast representation.

Patch by Vince Bridgers!

Differential Revision: https://reviews.llvm.org/D70836

2 years ago[FPEnv][LegalizeTypes][LegalizeDAG][AArch64] Few fixes/improvements for legalizing...
Craig Topper [Tue, 17 Dec 2019 22:32:21 +0000 (14:32 -0800)]
[FPEnv][LegalizeTypes][LegalizeDAG][AArch64] Few fixes/improvements for legalizing fp<->int conversion nodes.

This started with adding a test to support get code coverage on
ScalarizeVecOp_UnaryOp_StrictFP by copying an existing AArch64 test
and using constrained sitofp/uitofp intrinsics.

This found 3 separate issues:
-ScalarizeVecOp_UnaryOp_StrictFP needs to do its own replacement
 because the caller can't handle replacing multiple results.
-Missing integer promotion support for sitofp/uitofp
-Chain result not always assigned in ExpandLegalINT_TO_FP.

Committing them together so I can add the test case.

2 years ago[driver][darwin] Use explicit -mlinker-version in the -platform_version tests
Alex Lorenz [Tue, 17 Dec 2019 22:24:23 +0000 (14:24 -0800)]
[driver][darwin] Use explicit -mlinker-version in the -platform_version tests

The driver actually adds a default -mlinker-version, based on HOST_LINK_VERSION
cmake variable. The tests should be explicit about which version they're using to
trigger the right behavior.

2 years ago[LoopFusion] Move instructions from FC0.Latch to FC1.Latch.
Whitney Tsang [Tue, 17 Dec 2019 21:44:06 +0000 (21:44 +0000)]
[LoopFusion] Move instructions from FC0.Latch to FC1.Latch.

Summary:This PR move instructions from FC0.Latch bottom up to the
beginning of FC1.Latch as long as they are proven safe.

To illustrate why this is beneficial, let's consider the following
Before Fusion:
  br header2
  br header2, latch1
  br header1, preheader3
  br header3
  br header4
  br header4, latch3
  br header3, exit3

After Fusion (before this PR):
  br header2
  br header2, latch1
  br header3
  br header4
  br header4, latch3
  br header1, exit3

Note that preheader3 is removed during fusion before this PR.
Notice that we cannot fuse loop2 with loop4 as there exists block latch1
in between.
This PR move instructions from latch1 to beginning of latch3, and remove
block latch1. LoopFusion is now able to fuse loop nest recursively.

After Fusion (after this PR):
  br header2
  br header3
  br header4
  br header2, latch3
  br header1, exit3

Reviewer: kbarton, jdoerfert, Meinersbur, dmgreen, fhahn, hfinkel,
bmahjour, etiotto
Reviewed By: kbarton, Meinersbur
Subscribers: hiraditya, llvm-commits
Differential Revision: https://reviews.llvm.org/D71165

2 years ago[AIX] Avoid unset csect assert for functions defined after their use in TOC
David Tenty [Tue, 17 Dec 2019 21:56:59 +0000 (16:56 -0500)]
[AIX] Avoid unset csect assert for functions defined after their use in TOC

If a function is defined after it appears in a TOC expression, we may
try to access an unset containing csect when returning a symbol for the

Reviewers: Xiangling_L, DiggerLin, jasonliu, hubert.reinterpretcast

Reviewed By: hubert.reinterpretcast

Subscribers: hubert.reinterpretcast, wuzish, nemanjai, hiraditya, kbarton, jsji, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71125

2 years agoAMDGPU/SILoadStoreOptimillzer: Refactor CombineInfo struct
Tom Stellard [Tue, 17 Dec 2019 04:37:39 +0000 (20:37 -0800)]
AMDGPU/SILoadStoreOptimillzer: Refactor CombineInfo struct

Modify CombineInfo to only store information about a single instruction.
This is a little easier to work with and removes a lot of duplicate
initialization code.

Reviewers: arsenm, nhaehnle

Reviewed By: arsenm, nhaehnle

Subscribers: merge_guards_bot, kzhuravl, jvesely, wdng, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71045

2 years agoFix buildbot failures after removing REQUIRES-ANY
Nemanja Ivanovic [Tue, 17 Dec 2019 21:24:51 +0000 (15:24 -0600)]
Fix buildbot failures after removing REQUIRES-ANY

It would appear that the removal of this lit feature was incomplete
and there is a test case that still tests for this. This patch removes
the remaining tests to bring the bots back to green. I would encourage the
author to do a post-commit review on this in case there is a more desirable fix.

2 years ago[IR] Use a reference in a range-based for
Mark de Wever [Tue, 17 Dec 2019 20:57:58 +0000 (21:57 +0100)]
[IR] Use a reference in a range-based for

This avoids unneeded copies when using a range-based for loops.

This avoids new warnings due to D68912 adds -Wrange-loop-analysis to -Wall.

Differential Revision: https://reviews.llvm.org/D70870