platform/upstream/llvm.git
8 years ago[llvm-cov] Attempt to appease an older builder
Vedant Kumar [Fri, 15 Jul 2016 23:15:35 +0000 (23:15 +0000)]
[llvm-cov] Attempt to appease an older builder

It's using a version of clang which can't (or won't) deduce an implicit
conversion from a SmallString to a StringRef. Write the conversion out
explicitly:

  http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-buildserver/builds/8574

llvm-svn: 275647

8 years agobugpoint: add flag -verbose-errors
Sebastian Pop [Fri, 15 Jul 2016 23:15:06 +0000 (23:15 +0000)]
bugpoint: add flag -verbose-errors

The default behavior of bugpoint is to print "<crash>" when it finds a reduced
test that crashes compilation.  With this flag we now can see the output of the
crashing program.  This is useful to make sure it is the same error being
tracked down and not a different error that happens to crash the compiler as
well.

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

llvm-svn: 275646

8 years ago[CUDA][OpenMP] Create generic offload action
Samuel Antao [Fri, 15 Jul 2016 23:13:27 +0000 (23:13 +0000)]
[CUDA][OpenMP] Create generic offload action

Summary:
This patch replaces the CUDA specific action by a generic offload action. The offload action may have multiple dependences classier in “host” and “device”. The way this generic offloading action is used is very similar to what is done today by the CUDA implementation: it is used to set a specific toolchain and architecture to its dependences during the generation of jobs.

This patch also proposes propagating the offloading information through the action graph so that that information can be easily retrieved at any time during the generation of commands. This allows e.g. the "clang tool” to evaluate whether CUDA should be supported for the device or host and ptas to easily retrieve the target architecture.

This is an example of how the action graphs would look like (compilation of a single CUDA file with two GPU architectures)
```
0: input, "cudatests.cu", cuda, (host-cuda)
1: preprocessor, {0}, cuda-cpp-output, (host-cuda)
2: compiler, {1}, ir, (host-cuda)
3: input, "cudatests.cu", cuda, (device-cuda, sm_35)
4: preprocessor, {3}, cuda-cpp-output, (device-cuda, sm_35)
5: compiler, {4}, ir, (device-cuda, sm_35)
6: backend, {5}, assembler, (device-cuda, sm_35)
7: assembler, {6}, object, (device-cuda, sm_35)
8: offload, "device-cuda (nvptx64-nvidia-cuda:sm_35)" {7}, object
9: offload, "device-cuda (nvptx64-nvidia-cuda:sm_35)" {6}, assembler
10: input, "cudatests.cu", cuda, (device-cuda, sm_37)
11: preprocessor, {10}, cuda-cpp-output, (device-cuda, sm_37)
12: compiler, {11}, ir, (device-cuda, sm_37)
13: backend, {12}, assembler, (device-cuda, sm_37)
14: assembler, {13}, object, (device-cuda, sm_37)
15: offload, "device-cuda (nvptx64-nvidia-cuda:sm_37)" {14}, object
16: offload, "device-cuda (nvptx64-nvidia-cuda:sm_37)" {13}, assembler
17: linker, {8, 9, 15, 16}, cuda-fatbin, (device-cuda)
18: offload, "host-cuda (powerpc64le-unknown-linux-gnu)" {2}, "device-cuda (nvptx64-nvidia-cuda)" {17}, ir
19: backend, {18}, assembler
20: assembler, {19}, object
21: input, "cuda", object
22: input, "cudart", object
23: linker, {20, 21, 22}, image
```
The changes in this patch pass the existent regression tests (keeps the existent functionality) and resulting binaries execute correctly in a Power8+K40 machine.

Reviewers: echristo, hfinkel, jlebar, ABataev, tra

Subscribers: guansong, andreybokhanko, tcramer, mkuron, cfe-commits, arpith-jacob, carlo.bertolli, caomhin

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

llvm-svn: 275645

8 years ago[asan] trying to fix the windows build
Kostya Serebryany [Fri, 15 Jul 2016 23:13:03 +0000 (23:13 +0000)]
[asan] trying to fix the windows build

llvm-svn: 275644

8 years agoReapply "Mips: Avoid implicit iterator conversions, NFC"
Duncan P. N. Exon Smith [Fri, 15 Jul 2016 23:09:47 +0000 (23:09 +0000)]
Reapply "Mips: Avoid implicit iterator conversions, NFC"

This reverts commit r275562, effectively reapplying r275141.  Doug
Gilmore reported that there was an error when bisecting the Mips
buildbot failure, and that r275141 was not to blame after all.  Here is
the green build:
https://dmz-portal.mips.com/bb/builders/LLVM%20with%20integrated%20assembler%20and%20fPIC%20and%20-O0/builds/803

llvm-svn: 275643

8 years ago[llvm-cov] Attempt to appease Windows bots
Vedant Kumar [Fri, 15 Jul 2016 23:08:22 +0000 (23:08 +0000)]
[llvm-cov] Attempt to appease Windows bots

They appear to reject r275640 because stdin is held open during an
ExecuteAndWait in which it's redirected:

  http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/8390

llvm-svn: 275642

8 years agoFixes for standalone build:
Eugene Zelenko [Fri, 15 Jul 2016 22:46:15 +0000 (22:46 +0000)]
Fixes for standalone build:

* include CheckAtomic to set HAVE_CXX_ATOMICS64_WITHOUT_LIB properly (introduced in r274121)
* hint Clang CMake files for LLVM CMake files location (inctroduced in ~ r274176)

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

llvm-svn: 275641

8 years ago[llvm-cov] Optionally use a symbol demangler when preparing reports
Vedant Kumar [Fri, 15 Jul 2016 22:44:57 +0000 (22:44 +0000)]
[llvm-cov] Optionally use a symbol demangler when preparing reports

Add an option to specify a symbol demangler (as well as options to the
demangler). This can be used to make reports more human-readable.

This option is especially useful in -output-dir mode, since it isn't as
easy to manually pipe reports into a demangler in this mode.

llvm-svn: 275640

8 years ago[llvm-cov] Document a few private fields of CodeCoverageTool (NFC)
Vedant Kumar [Fri, 15 Jul 2016 22:44:54 +0000 (22:44 +0000)]
[llvm-cov] Document a few private fields of CodeCoverageTool (NFC)

llvm-svn: 275639

8 years ago[Support] Fix a doxygen comment (NFC)
Vedant Kumar [Fri, 15 Jul 2016 22:44:52 +0000 (22:44 +0000)]
[Support] Fix a doxygen comment (NFC)

There was a missing "<" on a line, so its contents wrapped around into
the description of the next argument.

llvm-svn: 275638

8 years agoMinor code cleanups. NFC.
Junmo Park [Fri, 15 Jul 2016 22:42:52 +0000 (22:42 +0000)]
Minor code cleanups. NFC.

llvm-svn: 275637

8 years ago[lanai] Small cleanup: remove/comment out unused args
Jacques Pienaar [Fri, 15 Jul 2016 22:38:32 +0000 (22:38 +0000)]
[lanai] Small cleanup: remove/comment out unused args

llvm-svn: 275636

8 years agoAMDGPU: Fix verifier error from partially undef copy
Matt Arsenault [Fri, 15 Jul 2016 22:32:02 +0000 (22:32 +0000)]
AMDGPU: Fix verifier error from partially undef copy

In this situation:

%VGPR2<def> = BUFFER_LOAD_DWORD_OFFSET %SGPR8_SGPR9_SGPR10_SGPR11,
%VGPR7<def,tied3> = V_MAC_F32_e32 %VGPR0<undef>, %VGPR1<kill>, %VGPR7<kill,tied0>, %EXEC<imp-use>
%VGPR3_VGPR4_VGPR5_VGPR6<def> = COPY %VGPR0_VGPR1_VGPR2_VGPR3
%VGPR4<def> = COPY %VGPR2

The copy for VGPR1 -> VGPR4 was an error from reading undefined VGPR1,
but VGPR4 is defined immediately after this copy.

llvm-svn: 275635

8 years agoExpandPostRAPseudos should transfer implicit uses, not only implicit defs
Michael Kuperstein [Fri, 15 Jul 2016 22:31:14 +0000 (22:31 +0000)]
ExpandPostRAPseudos should transfer implicit uses, not only implicit defs

Previously, we would expand:
%BL<def> = COPY %DL<kill>, %EBX<imp-use,kill>, %EBX<imp-def>
Into:
%BL<def> = MOV8rr %DL<kill>, %EBX<imp-def>
Dropping the imp-use on the floor.

That confused CriticalAntiDepBreaker, which (correctly) assumes that if an
instruction defs but doesn't use a register, that register is dead immediately
before the instruction - while in this case, the high lanes of EBX can be very
much alive.

This fixes PR28560.

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

llvm-svn: 275634

8 years agoBPF: Use official ELF e_machine value
Alexei Starovoitov [Fri, 15 Jul 2016 22:27:55 +0000 (22:27 +0000)]
BPF: Use official ELF e_machine value

The same value for EM_BPF is being propagated to glibc,
elfutils, and binutils.

Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 275633

8 years agoFix a typeo.
George Burgess IV [Fri, 15 Jul 2016 22:24:24 +0000 (22:24 +0000)]
Fix a typeo.

(obligatory s/typeo/typo)

llvm-svn: 275632

8 years ago[lanai] Fix build by updating calls to getLoad & getStore.
Jacques Pienaar [Fri, 15 Jul 2016 22:18:33 +0000 (22:18 +0000)]
[lanai] Fix build by updating calls to getLoad & getStore.

rL275592 removed the boolean parameters of SelectionDAG::getLoad and getStore, updating Lanai backend's calls to these functions.

llvm-svn: 275631

8 years ago[index] Create different USR if a property is a class property.
Argyrios Kyrtzidis [Fri, 15 Jul 2016 22:18:19 +0000 (22:18 +0000)]
[index] Create different USR if a property is a class property.

Avoids USR conflicts between class & instance properties of the same name.

llvm-svn: 275630

8 years ago[pdb] Teach MsfBuilder and other classes about the Free Page Map.
Zachary Turner [Fri, 15 Jul 2016 22:17:19 +0000 (22:17 +0000)]
[pdb] Teach MsfBuilder and other classes about the Free Page Map.

Block 1 and 2 of an MSF file are bit vectors that represent the
list of blocks allocated and free in the file.  We had been using
these blocks to write stream data and other data, so we mark them
as the free page map now.  We don't yet serialize these pages to
the disk, but at least we make a note of what it is, and avoid
writing random data to them.

Doing this also necessitated cleaning up some of the tests to be
more general and hardcode fewer values, which is nice.

llvm-svn: 275629

8 years ago[pdb] Round trip the NameMap data structure to YAML.
Zachary Turner [Fri, 15 Jul 2016 22:17:08 +0000 (22:17 +0000)]
[pdb] Round trip the NameMap data structure to YAML.

llvm-svn: 275628

8 years ago[pdb] Use MsfBuilder to handle the writing PDBs.
Zachary Turner [Fri, 15 Jul 2016 22:16:56 +0000 (22:16 +0000)]
[pdb] Use MsfBuilder to handle the writing PDBs.

Previously we would read a PDB, then write some of it back out,
but write the directory, super block, and other pertinent metadata
back out unchanged.  This generates incorrect PDBs since the amount
of data written was not always the same as the amount of data read.

This patch changes things to use the newly introduced `MsfBuilder`
class to write out a correct and accurate set of Msf metadata for
the data *actually* written, which opens up the door for adding and
removing type records, symbol records, and other types of data to
an existing PDB.

llvm-svn: 275627

8 years agoStructurizeCFG: Fix inverting constantexpr conditions
Matt Arsenault [Fri, 15 Jul 2016 22:13:16 +0000 (22:13 +0000)]
StructurizeCFG: Fix inverting constantexpr conditions

llvm-svn: 275626

8 years ago[Hexagon] Handle instruction latency for 0 or 2 cycles
Krzysztof Parzyszek [Fri, 15 Jul 2016 21:34:02 +0000 (21:34 +0000)]
[Hexagon] Handle instruction latency for 0 or 2 cycles

The Hexagon schedulers need to handle instructions with a latency
of 0 or 2 more accurately. The problem, in v60, is that a dependence
between two instructions with a 2 cycle latency can use a .cur version
of the source to achieve a 0 cycle latency when the use is in the
same packet. Any othe use, must be at least 2 packets later, or a
stall occurs. In other words, the compiler does not want to schedule
the dependent instructions 1 cycle later.

To achieve this, the latency adjustment code allows only a single
dependence to have a zero latency. All other instructions have the
other value, which is typically 2 cycles. We use a heuristic to
determine which instruction gets the 0 latency.

The Hexagon machine scheduler was also changed to increase the cost
associated with 0 latency dependences than can be scheduled in the
same packet.

Patch by Brendon Cahoon.

llvm-svn: 275625

8 years agoRevert r275481, r275490. This broke modules bootstrap.
Richard Smith [Fri, 15 Jul 2016 21:33:46 +0000 (21:33 +0000)]
Revert r275481, r275490. This broke modules bootstrap.

llvm-svn: 275624

8 years agoAMDGPU: Remove legacy ldexp builtin
Matt Arsenault [Fri, 15 Jul 2016 21:33:06 +0000 (21:33 +0000)]
AMDGPU: Remove legacy ldexp builtin

llvm-svn: 275623

8 years agoAMDGPU: Update for rsq intrinsic changes
Matt Arsenault [Fri, 15 Jul 2016 21:33:02 +0000 (21:33 +0000)]
AMDGPU: Update for rsq intrinsic changes

llvm-svn: 275622

8 years ago[sanitizers] add interceptor for memmem; add weak hooks for strncasecmp, strcasecmp...
Kostya Serebryany [Fri, 15 Jul 2016 21:28:58 +0000 (21:28 +0000)]
[sanitizers] add interceptor for memmem; add weak hooks for strncasecmp, strcasecmp, strstr, strcasestr, memmem

llvm-svn: 275621

8 years agoAMDGPU: Remove brev intrinsic
Matt Arsenault [Fri, 15 Jul 2016 21:27:13 +0000 (21:27 +0000)]
AMDGPU: Remove brev intrinsic

llvm-svn: 275620

8 years agoAMDGPU: Fix TargetPrefix for remaining r600 intrinsics
Matt Arsenault [Fri, 15 Jul 2016 21:27:08 +0000 (21:27 +0000)]
AMDGPU: Fix TargetPrefix for remaining r600 intrinsics

llvm-svn: 275619

8 years agoAMDGPU: Remove AMDGPU.ldexp
Matt Arsenault [Fri, 15 Jul 2016 21:26:56 +0000 (21:26 +0000)]
AMDGPU: Remove AMDGPU.ldexp

llvm-svn: 275618

8 years agoAMDGPU: Remove legacy rsq.clamped intrinsic
Matt Arsenault [Fri, 15 Jul 2016 21:26:52 +0000 (21:26 +0000)]
AMDGPU: Remove legacy rsq.clamped intrinsic

Mesa still has a use of llvm.AMDGPU.rsq.f64 remaining.

Also fix mismatch with non-IEEE rsq selecting to IEEE rsq.

llvm-svn: 275617

8 years agoAMDGPU/R600: Delete dead code.
Matt Arsenault [Fri, 15 Jul 2016 21:26:46 +0000 (21:26 +0000)]
AMDGPU/R600: Delete dead code.

Dead or the same as the base implementation.

llvm-svn: 275616

8 years agoDebugInfo: reorder some initializers
Saleem Abdulrasool [Fri, 15 Jul 2016 21:10:31 +0000 (21:10 +0000)]
DebugInfo: reorder some initializers

Fix a few initialization ordering warnings from gcc from `-Wreorder`.  NFC.

llvm-svn: 275615

8 years agoCodeGen: avoid emitting unnecessary CFI
Saleem Abdulrasool [Fri, 15 Jul 2016 21:10:29 +0000 (21:10 +0000)]
CodeGen: avoid emitting unnecessary CFI

Remove unnecessary clutter in assembly output.  When using SjLj EH, the CFI is
not actually used for anything.  Do not emit the CFI needlessly.  The minor test
adjustments are interesting.  The prologue test was just overzealous matcching.
The interesting case is the LSDA change.  It was originally added to ensure that
various compilations did not mangle the name (it explicitly checked the name!).
However, subsequent cleanups made it more reliant on the CFI to find the name.
Parse the generated code flow to generically find the label still.

llvm-svn: 275614

8 years agoMake processInstruction from LCSSA.cpp externally available.
Michael Zolotukhin [Fri, 15 Jul 2016 21:08:41 +0000 (21:08 +0000)]
Make processInstruction from LCSSA.cpp externally available.

Summary:
When a pass tries to keep LCSSA form it's often convenient to be able to update
LCSSA for a set of instructions rather than for the entire loop. This patch makes the
processInstruction from LCSSA externally available under a name
formLCSSAForInstruction.

Reviewers: chandlerc, sanjoy, hfinkel

Subscribers: llvm-commits

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

llvm-svn: 275613

8 years agoPush alias-declarations and alias-template declarations into scope even if
Richard Smith [Fri, 15 Jul 2016 20:53:25 +0000 (20:53 +0000)]
Push alias-declarations and alias-template declarations into scope even if
they're redeclarations. This is necessary in order for name lookup to correctly
find the most recent declaration of the name (which affects default template
argument lookup and cross-module merging, among other things).

llvm-svn: 275612

8 years ago[pdb] Introduce MsfBuilder for laying out PDB files.
Zachary Turner [Fri, 15 Jul 2016 20:43:38 +0000 (20:43 +0000)]
[pdb] Introduce MsfBuilder for laying out PDB files.

Reviewed by: ruiu
Differential Revision: https://reviews.llvm.org/D22308

llvm-svn: 275611

8 years agoSema: support __declspec(dll*) on ObjC interfaces
Saleem Abdulrasool [Fri, 15 Jul 2016 20:41:10 +0000 (20:41 +0000)]
Sema: support __declspec(dll*) on ObjC interfaces

Extend the __declspec(dll*) attribute to cover ObjC interfaces.  This was
requested by Microsoft for their ObjC support.  Cover both import and export.
This only adds the semantic analysis portion of the support, code-generation
still remains outstanding.  Add some basic initial documentation on the
attributes that were previously empty.  Tweak the previous tests to use the
relative expected-warnings to make the tests easier to read.

llvm-svn: 275610

8 years ago[test/objcmt] Add a follow-up test case for r275600.
Argyrios Kyrtzidis [Fri, 15 Jul 2016 20:40:24 +0000 (20:40 +0000)]
[test/objcmt] Add a follow-up test case for r275600.

llvm-svn: 275609

8 years agoELF: Include filenames in error messages.
Rui Ueyama [Fri, 15 Jul 2016 20:38:28 +0000 (20:38 +0000)]
ELF: Include filenames in error messages.

llvm-svn: 275608

8 years agoTeach fast isel about the win64 calling convention.
Nico Weber [Fri, 15 Jul 2016 20:18:37 +0000 (20:18 +0000)]
Teach fast isel about the win64 calling convention.

This mostly just works.

Vectorcall rets are still not supported.

The win64_eh test change is because fast isel doesn't use rsi for temporary
computations, so it doesn't need to be pushed. The test case I'm changing was
originally added to test pushes, but by now there are other test cases in that
file exercising that code path.

https://reviews.llvm.org/D22422

llvm-svn: 275607

8 years ago[Hexagon] Make MI scheduler check for stalls in previous packet on v60
Krzysztof Parzyszek [Fri, 15 Jul 2016 20:16:03 +0000 (20:16 +0000)]
[Hexagon] Make MI scheduler check for stalls in previous packet on v60

Patch by Ikhlas Ajbar.

llvm-svn: 275606

8 years agoRemove variables. NFC.
Rui Ueyama [Fri, 15 Jul 2016 20:05:05 +0000 (20:05 +0000)]
Remove variables. NFC.

llvm-svn: 275605

8 years ago[CFLAA] Add attributes handling for CFLAnders.
George Burgess IV [Fri, 15 Jul 2016 20:02:49 +0000 (20:02 +0000)]
[CFLAA] Add attributes handling for CFLAnders.

This patch adds proper handling of stratified attributes into our
anders-style CFLAA implementation. It also comes bundled with more
CFLAnders tests. :)

Patch by Jia Chen.

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

llvm-svn: 275604

8 years ago[PowerPC] Set kill flag for scratch register when spilling the link register
Nemanja Ivanovic [Fri, 15 Jul 2016 19:56:32 +0000 (19:56 +0000)]
[PowerPC] Set kill flag for scratch register when spilling the link register

This fixes PR 28526.

llvm-svn: 275603

8 years ago[CFLAA] Add an initial CFLAnders implementation.
George Burgess IV [Fri, 15 Jul 2016 19:53:25 +0000 (19:53 +0000)]
[CFLAA] Add an initial CFLAnders implementation.

This adds an incomplete anders-style implementation for CFLAA. It's
incomplete in that it's missing interprocedural analysis, attrs
handling, etc. and that it needs more tests. More tests and features
will be added in future commits.

Patch by Jia Chen.

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

llvm-svn: 275602

8 years agoFix calls to SelectionDAG::getStore
Derek Schuff [Fri, 15 Jul 2016 19:35:43 +0000 (19:35 +0000)]
Fix calls to SelectionDAG::getStore

It was refactored in r275592. NFC

llvm-svn: 275601

8 years ago[objcmt] Fix a buffer overflow crash than can occur while modernizing enums.
Argyrios Kyrtzidis [Fri, 15 Jul 2016 19:22:34 +0000 (19:22 +0000)]
[objcmt] Fix a buffer overflow crash than can occur while modernizing enums.

Note that due to the nature of the crash it requires libgmalloc or asan for it to crash consistently.

rdar://19932927

llvm-svn: 275600

8 years agoRevert "[AMDGPU] Add metadata for runtime"
Vitaly Buka [Fri, 15 Jul 2016 19:14:57 +0000 (19:14 +0000)]
Revert "[AMDGPU] Add metadata for runtime"

This reverts commit r275566.

llvm-svn: 275599

8 years ago[Hexagon] Replace postprocessDAG with a more elaborate DAG mutation
Krzysztof Parzyszek [Fri, 15 Jul 2016 19:09:37 +0000 (19:09 +0000)]
[Hexagon] Replace postprocessDAG with a more elaborate DAG mutation

llvm-svn: 275598

8 years ago[Profile] instroduce portability macro for dir separator(s
Xinliang David Li [Fri, 15 Jul 2016 18:48:14 +0000 (18:48 +0000)]
[Profile] instroduce portability macro for dir separator(s

llvm-svn: 275597

8 years ago[ReassociateGEP] Update tests to allow missing "inbounds" on certain GEPs.
Jingyue Wu [Fri, 15 Jul 2016 18:47:17 +0000 (18:47 +0000)]
[ReassociateGEP] Update tests to allow missing "inbounds" on certain GEPs.

With r275532 fixing miscompilation of GVN, "inbounds" on certain GEPs in these
tests cannot be preserved any more. Left a TODO in the tests for future
reference.

llvm-svn: 275596

8 years ago[MBP] Clean up of the comments, and a first attempt to better describe a part
Sjoerd Meijer [Fri, 15 Jul 2016 18:41:56 +0000 (18:41 +0000)]
[MBP] Clean up of the comments, and a first attempt to better describe a part
of the algorithm.

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

llvm-svn: 275595

8 years agoadd tests for associative ops blocked by a cast
Sanjay Patel [Fri, 15 Jul 2016 18:39:02 +0000 (18:39 +0000)]
add tests for associative ops blocked by a cast

These are more generalized versions of the cases added in
r275302 and r275297.

llvm-svn: 275594

8 years ago[SCCP] Merge two conditions into one. NFCI.
Davide Italiano [Fri, 15 Jul 2016 18:33:16 +0000 (18:33 +0000)]
[SCCP] Merge two conditions into one. NFCI.

llvm-svn: 275593

8 years ago[SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and...
Justin Lebar [Fri, 15 Jul 2016 18:27:10 +0000 (18:27 +0000)]
[SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends.

Summary:
Instead, we take a single flags arg (a bitset).

Also add a default 0 alignment, and change the order of arguments so the
alignment comes before the flags.

This greatly simplifies many callsites, and fixes a bug in
AMDGPUISelLowering, wherein the order of the args to getLoad was
inverted.  It also greatly simplifies the process of adding another flag
to getLoad.

Reviewers: chandlerc, tstellarAMD

Subscribers: jholewinski, arsenm, jyknight, dsanders, nemanjai, llvm-commits

Differential Revision: http://reviews.llvm.org/D22249

llvm-svn: 275592

8 years ago[CodeGen] Take a MachineMemOperand::Flags in MachineFunction::getMachineMemOperand.
Justin Lebar [Fri, 15 Jul 2016 18:26:59 +0000 (18:26 +0000)]
[CodeGen] Take a MachineMemOperand::Flags in MachineFunction::getMachineMemOperand.

Summary:
Previously we took an unsigned.

Hooray for type-safety.

Reviewers: chandlerc

Subscribers: dsanders, llvm-commits

Differential Revision: http://reviews.llvm.org/D22282

llvm-svn: 275591

8 years ago[AST] Keep track of the left brace source location of a tag decl.
Argyrios Kyrtzidis [Fri, 15 Jul 2016 18:11:33 +0000 (18:11 +0000)]
[AST] Keep track of the left brace source location of a tag decl.

This is useful for source modification tools. There will be a follow-up commit using it.

llvm-svn: 275590

8 years ago[objcmt] Don't add an #import of Foundation unnecessarily, if the NS_ENUM macro is...
Argyrios Kyrtzidis [Fri, 15 Jul 2016 18:11:27 +0000 (18:11 +0000)]
[objcmt] Don't add an #import of Foundation unnecessarily, if the NS_ENUM macro is already defined.

llvm-svn: 275589

8 years ago[PGO] IRPGO pre-cleanup pass changes
Rong Xu [Fri, 15 Jul 2016 18:10:49 +0000 (18:10 +0000)]
[PGO] IRPGO pre-cleanup pass changes

This patch adds a selected set of cleanup passes including a pre-inline pass
before LLVM IR PGO instrumentation. The inline is only intended to apply those
obvious/trivial ones before instrumentation so that much less instrumentation
is needed to get better profiling information. This will drastically improve
the instrumented code performance for large C++ applications. Another benefit
is the context sensitive counts that can potentially improve the PGO
optimization.

Differential Revision: http://reviews.llvm.org/D21405

llvm-svn: 275588

8 years agofix documentation comments; NFC
Sanjay Patel [Fri, 15 Jul 2016 18:03:59 +0000 (18:03 +0000)]
fix documentation comments; NFC

llvm-svn: 275587

8 years ago[Hexagon] Add a scheduling DAG mutation
Krzysztof Parzyszek [Fri, 15 Jul 2016 17:48:09 +0000 (17:48 +0000)]
[Hexagon] Add a scheduling DAG mutation

- Remove output dependencies on USR_OVF register.
- Update chain edge latencies between v60 vector loads/stores.

llvm-svn: 275586

8 years ago[compiler-rt] Fix 64-bits exception handlers in ASAN 64-bits runtime
Etienne Bergeron [Fri, 15 Jul 2016 17:28:10 +0000 (17:28 +0000)]
[compiler-rt] Fix 64-bits exception handlers in ASAN 64-bits runtime

Summary:
This is adding the appropriate suport for exception handling for
64-bits ASAN on windows.

Reviewers: rnk

Subscribers: kubabrecka, llvm-commits, wang0109, chrisha

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

llvm-svn: 275585

8 years ago[compiler-rt] Fix incorrect handling of indirect load.
Etienne Bergeron [Fri, 15 Jul 2016 17:26:33 +0000 (17:26 +0000)]
[compiler-rt] Fix incorrect handling of indirect load.

Summary:
Indirect load are relative offset from RIP.

The current trampoline implementation is incorrectly
copying these instructions which make some unittests
crashing.

This patch is not fixing the unittests but it's fixing
the crashes. The functions are no longer hooked.

Patches will come soon to fix these unittests.

Reviewers: rnk

Subscribers: llvm-commits, wang0109, chrisha

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

llvm-svn: 275584

8 years ago[OptRemark,LDist] RFC: Add hotness attribute
Adam Nemet [Fri, 15 Jul 2016 17:23:20 +0000 (17:23 +0000)]
[OptRemark,LDist] RFC: Add hotness attribute

Summary:
This is the first set of changes implementing the RFC from
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334

This is a cross-sectional patch; rather than implementing the hotness
attribute for all optimization remarks and all passes in a patch set, it
implements it for the 'missed-optimization' remark for Loop
Distribution.  My goal is to shake out the design issues before scaling
it up to other types and passes.

Hotness is computed as an integer as the multiplication of the block
frequency with the function entry count.  It's only printed in opt
currently since clang prints the diagnostic fields directly.  E.g.:

  remark: /tmp/t.c:3:3: loop not distributed: use -Rpass-analysis=loop-distribute for more info (hotness: 300)

A new API added is similar to emitOptimizationRemarkMissed.  The
difference is that it additionally takes a code region that the
diagnostic corresponds to.  From this, hotness is computed using BFI.
The new API is exposed via an analysis pass so that it can be made
dependent on LazyBFI.  (Thanks to Hal for the analysis pass idea.)

This feature can all be enabled by setDiagnosticHotnessRequested in the
LLVM context.  If this is off, LazyBFI is not calculated (D22141) so
there should be no overhead.

A new command-line option is added to turn this on in opt.

My plan is to switch all user of emitOptimizationRemark* to use this
module instead.

Reviewers: hfinkel

Subscribers: rcox2, mzolotukhin, llvm-commits

Differential Revision: http://reviews.llvm.org/D21771

llvm-svn: 275583

8 years ago[libFuzzer] add ThreadedLeakTest
Kostya Serebryany [Fri, 15 Jul 2016 17:19:43 +0000 (17:19 +0000)]
[libFuzzer] add ThreadedLeakTest

llvm-svn: 275582

8 years ago[AliasAnalysis] Give back AA results for fence instructions
David Majnemer [Fri, 15 Jul 2016 17:19:24 +0000 (17:19 +0000)]
[AliasAnalysis] Give back AA results for fence instructions

Calling getModRefInfo with a fence resulted in crashes because fences
don't have a memory location.  Add a new predicate to Instruction
called isFenceLike which indicates that the instruction mutates memory
but not any single memory location in particular. In practice, it is a
proxy for the set of instructions which "mayWriteToMemory" but cannot be
used with MemoryLocation::get.

This fixes PR28570.

llvm-svn: 275581

8 years agoTestCase null_deref was failing in Win64:
Etienne Bergeron [Fri, 15 Jul 2016 17:16:37 +0000 (17:16 +0000)]
TestCase null_deref was failing in Win64:

c:\lipo\work\asan\b_llvm>c:\lipo\work\asan\b_llvm\projects\compiler-rt\test\asan\X86_64WindowsConfig\TestCases\Output\null_deref.cc.tmp
=================================================================
==5488==ERROR: AddressSanitizer: access-violation on unknown address 0x000000000028 (pc 0x7ff701f91067 bp 0x000c8cf8fbf0 sp 0x000c8cf8fbb0 T0)
==5488==The signal is caused by a READ memory access.
==5488==Hint: address points to the zero page.
    #0 0x7ff701f91066 in NullDeref(int *) C:\lipo\work\asan\llvm\projects\compiler-rt\test\asan\TestCases\null_deref.cc:15:10
    #1 0x8a0388830a67  (<unknown module>)
The reason was symbols was not initilized. In fact, it was first inited
with a call to stack.Print(), which calls
WinSymbolizerTool::SymbolizePC, then InitializeDbgHelpIfNeeded().

Since the StackWalk was performed before the stack.Print(), stack frames
where not gathered correctly.

There should be a better place to initialize symbols. For now, this
patch makes the test happy.

Patch by Wei Wang
Differential Revision: https://reviews.llvm.org/D22410

llvm-svn: 275580

8 years agoGPGPU: Format statements scheduled on the host ourselves
Tobias Grosser [Fri, 15 Jul 2016 17:12:41 +0000 (17:12 +0000)]
GPGPU: Format statements scheduled on the host ourselves

Otherwise ppcg would try to call into pet functionality that this not available,
which obviously will cause trouble. As we can easily print these statements
ourselves, we just do so.

llvm-svn: 275579

8 years ago[Hexagon] Update instruction itineraries
Krzysztof Parzyszek [Fri, 15 Jul 2016 16:58:34 +0000 (16:58 +0000)]
[Hexagon] Update instruction itineraries

llvm-svn: 275578

8 years agoAMDGPU: Add Clang Builtin for v_lerp_u8
Wei Ding [Fri, 15 Jul 2016 16:43:03 +0000 (16:43 +0000)]
AMDGPU: Add Clang Builtin for v_lerp_u8

Differential Revision: http://reviews.llvm.org/D22380

llvm-svn: 275577

8 years ago[PM] Convert LoopInstSimplify Pass to new PM
Dehao Chen [Fri, 15 Jul 2016 16:42:11 +0000 (16:42 +0000)]
[PM] Convert LoopInstSimplify Pass to new PM

Summary: Convert LoopInstSimplify to new PM. Unfortunately there is no exisiting unittest for this pass.

Reviewers: davidxl, silvas

Subscribers: silvas, llvm-commits, mzolotukhin

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

llvm-svn: 275576

8 years agoIR: Sort generic intrinsics before target specific ones
Justin Bogner [Fri, 15 Jul 2016 16:31:37 +0000 (16:31 +0000)]
IR: Sort generic intrinsics before target specific ones

This splits out the intrinsic table such that generic intrinsics come
first and target specific intrinsics are grouped by target. From here
we can find out which target an intrinsic is for or differentiate
between generic and target intrinsics.

The motivation here is to make it easier to move target specific
intrinsic handling out of generic code.

llvm-svn: 275575

8 years ago[Hexagon] Fixes/changes to instruction selection
Krzysztof Parzyszek [Fri, 15 Jul 2016 16:29:02 +0000 (16:29 +0000)]
[Hexagon] Fixes/changes to instruction selection

- Add patterns for rr/abs addressing modes.
- Set addrMode to PostInc where necessary.
- Misc fixes.

llvm-svn: 275574

8 years agoGPGPU: Use schedule whole components for scheduler
Tobias Grosser [Fri, 15 Jul 2016 16:15:47 +0000 (16:15 +0000)]
GPGPU: Use schedule whole components for scheduler

This option increases the scalability of the scheduler and allows us to remove
the 'gisting' workaround we introduced in r275565 to handle a more complicated
test case. Another benefit of using this option is also that the generated
code looks a lot more streamlined.

Thanks to Sven Verdoolaege for reminding me of this option.

llvm-svn: 275573

8 years ago[DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals
Jun Bum Lim [Fri, 15 Jul 2016 16:14:34 +0000 (16:14 +0000)]
[DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals

Summary:
This change use the overlap interval map built from partial overwrite tracking to perform shortening MemIntrinsics.
Add test cases which was missing opportunities before.

Reviewers: hfinkel, eeckstein, mcrosier

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 275571

8 years agoXRay: Remove duplicate checks for xray instrumentation flags
Dean Michael Berris [Fri, 15 Jul 2016 15:46:39 +0000 (15:46 +0000)]
XRay: Remove duplicate checks for xray instrumentation flags

llvm-svn: 275570

8 years ago[Hexagon] Improve patterns with stack-based addressing
Krzysztof Parzyszek [Fri, 15 Jul 2016 15:35:52 +0000 (15:35 +0000)]
[Hexagon] Improve patterns with stack-based addressing

- Treat bitwise OR with a frame index as an ADD wherever possible, fold it
  into addressing mode.
- Extend patterns for memops to allow memops with frame indexes as address
  operands.

llvm-svn: 275569

8 years agoIn dag-optnone.ll, use varargs instead of win64 to fast SDIsel.
Nico Weber [Fri, 15 Jul 2016 15:30:18 +0000 (15:30 +0000)]
In dag-optnone.ll, use varargs instead of win64 to fast SDIsel.

The test used to rely on targeting win64 to disable fast isel,
but I'd like to teach fast isel about win64 rets.  Change the
test to use varargs to disable fast isel.

llvm-svn: 275568

8 years ago[LV] Swap A and B in interleaved access analysis (NFC)
Matthew Simpson [Fri, 15 Jul 2016 15:22:43 +0000 (15:22 +0000)]
[LV] Swap A and B in interleaved access analysis (NFC)

This patch swaps A and B in the interleaved access analysis and clarifies
related comments. The algorithm is more intuitive if we let access A precede
access B in program order rather than the reverse. This change was requested in
the review of D19984.

llvm-svn: 275567

8 years ago[AMDGPU] Add metadata for runtime
Yaxun Liu [Fri, 15 Jul 2016 14:58:21 +0000 (14:58 +0000)]
[AMDGPU] Add metadata for runtime

Added emitting metadata to elf for runtime.

Runtime requires certain information (metadata) about kernels to be able to execute and query them. Such information is emitted to an elf section as a key-value pair stream.

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

llvm-svn: 275566

8 years agoGPGPU: Drop domain constraints from flow dependences
Tobias Grosser [Fri, 15 Jul 2016 14:43:04 +0000 (14:43 +0000)]
GPGPU: Drop domain constraints from flow dependences

This works around a shortcoming of the isl scheduler, which even for some
smaller test cases does not terminate in case domain constraints are part
of the flow dependences.

llvm-svn: 275565

8 years agoRename AnalyzeBranch* to analyzeBranch*.
Jacques Pienaar [Fri, 15 Jul 2016 14:41:04 +0000 (14:41 +0000)]
Rename AnalyzeBranch* to analyzeBranch*.

Summary: NFC. Rename AnalyzeBranch/AnalyzeBranchPredicate to analyzeBranch/analyzeBranchPredicate to follow LLVM coding style and be consistent with TargetInstrInfo's analyzeCompare and analyzeSelect.

Reviewers: tstellarAMD, mcrosier

Subscribers: mcrosier, jholewinski, jfb, arsenm, dschuff, jyknight, dsanders, nemanjai

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

llvm-svn: 275564

8 years agoRe-submit r272891 "Prevent dangling pointer problems in BranchProbabilityInfo"
Igor Laevsky [Fri, 15 Jul 2016 14:31:16 +0000 (14:31 +0000)]
Re-submit r272891 "Prevent dangling pointer problems in BranchProbabilityInfo"

Most possibly problem was caused by the same reason as PR28400. This change
bypasses it by using CallbackVH instead of AssertingVH.

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

llvm-svn: 275563

8 years agoRevert r275141 - Mips: Avoid implicit iterator conversions, NFC
Daniel Sanders [Fri, 15 Jul 2016 13:54:20 +0000 (13:54 +0000)]
Revert r275141 - Mips: Avoid implicit iterator conversions, NFC

It appears to have caused some failures in our buildbots.

llvm-svn: 275562

8 years agocode hoisting pass based on GVN
Sebastian Pop [Fri, 15 Jul 2016 13:45:20 +0000 (13:45 +0000)]
code hoisting pass based on GVN

This pass hoists duplicated computations in the program. The primary goal of
gvn-hoist is to reduce the size of functions before inline heuristics to reduce
the total cost of function inlining.

Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki.
Important algorithmic contributions by Daniel Berlin under the form of reviews.

Differential Revision: http://reviews.llvm.org/D19338

llvm-svn: 275561

8 years agoRemoving a few more :option: tags that we do not have corresponding .. option directi...
Aaron Ballman [Fri, 15 Jul 2016 13:13:45 +0000 (13:13 +0000)]
Removing a few more :option: tags that we do not have corresponding .. option directives for; these are causing the sphinx bot to fail (lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15214/steps/docs-clang-html/logs/stdio).

llvm-svn: 275560

8 years ago[LLVM][MIPS] Fix createStubFunction to emit JR encoding based on Arch.
Nitesh Jain [Fri, 15 Jul 2016 12:56:37 +0000 (12:56 +0000)]
[LLVM][MIPS] Fix createStubFunction to emit JR encoding based on Arch.

Reviewers: vkalintiris, dsanders

Subscribers: jaydeep, bhushan, mohit.bhakkad, slthakur, llvm-commits

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

llvm-svn: 275559

8 years agoRemoving a few more :option: tags that we do not have corresponding .. option directi...
Aaron Ballman [Fri, 15 Jul 2016 12:55:47 +0000 (12:55 +0000)]
Removing a few more :option: tags that we do not have corresponding .. option directives for; these are causing the sphinx bot to fail (lab.llvm.org:8011/builders/clang-sphinx-docs/builds/15213/steps/docs-clang-html/logs/stdio).

llvm-svn: 275558

8 years agoGPGPU: Add memory reference tag ids to tagged accesses
Tobias Grosser [Fri, 15 Jul 2016 12:44:27 +0000 (12:44 +0000)]
GPGPU: Add memory reference tag ids to tagged accesses

It seems we forgot to actually add the memory access ids to the tagged accesses,
but instead just tagged the accesses with empty isl_ids. This issue was found
by inspection and without code generation it is difficult to test just by
itself. We fix it for now without test case and expect our code generation
tests to cover this later on.

llvm-svn: 275557

8 years ago[clang-rename] fix testset
Kirill Bobyrev [Fri, 15 Jul 2016 12:22:38 +0000 (12:22 +0000)]
[clang-rename] fix testset

Make yet unsupported tests marked with FIXME pass so that buildbot doesn't fail.

llvm-svn: 275556

8 years agoFix TestDarwinNSLogOutput for windows
Pavel Labath [Fri, 15 Jul 2016 12:19:28 +0000 (12:19 +0000)]
Fix TestDarwinNSLogOutput for windows

pexpect python package does not exist on windows

llvm-svn: 275555

8 years ago[X86][AVX] Added shuffle tests for UNPCK+PERMUTE
Simon Pilgrim [Fri, 15 Jul 2016 11:51:46 +0000 (11:51 +0000)]
[X86][AVX] Added shuffle tests for UNPCK+PERMUTE

lowerVectorShuffleAsPermuteAndUnpack could solve this if it worked with 256-bit vectors

llvm-svn: 275554

8 years agoGPGPU: Do not check for hidden declarations
Tobias Grosser [Fri, 15 Jul 2016 11:42:53 +0000 (11:42 +0000)]
GPGPU: Do not check for hidden declarations

We do not have them in Polly and the code to check for them is directly
referring to pet data structures which we do not have available.

This commit avoids undefined behavior. As such issues are difficult to
reproduce, this commit comes without a test case.

llvm-svn: 275553

8 years ago[X86][AVX2] Added a memory version of test_mm256_broadcastsi128_si256
Simon Pilgrim [Fri, 15 Jul 2016 11:40:27 +0000 (11:40 +0000)]
[X86][AVX2] Added a memory version of test_mm256_broadcastsi128_si256

This should lower to vbroadcasti128

llvm-svn: 275552

8 years agoGPGPU: Test scalar/array types i1/i3/i8/i32/i60/i64/i80/i120/i128/i3000
Tobias Grosser [Fri, 15 Jul 2016 11:33:47 +0000 (11:33 +0000)]
GPGPU: Test scalar/array types i1/i3/i8/i32/i60/i64/i80/i120/i128/i3000

Arrays with integer base type are similar to arrays with floating point types,
with the exception that LLVM's integer types can take some odd values. We
add a selection of different values to make sure we correctly round these
types when necessary.

References to scalar integer types are special, as we currently do not model
these types as array accesses as they are considered 'synthesizable' by Polly.
As a result, we do not generate explicit data-transfers for them, but instead
will need to keep track of all references to 'synthesizable' values separately.

At the current stage, this is only visible by missing host-to-device
data-transfer calls. In the future, we will also require special code generation
strategies.

llvm-svn: 275551

8 years ago[clang-rename] apply stylistic fixes
Kirill Bobyrev [Fri, 15 Jul 2016 11:29:16 +0000 (11:29 +0000)]
[clang-rename] apply stylistic fixes

llvm-svn: 275550

8 years ago[ELF] Overriding reserved symbols in linker script
Eugene Leviant [Fri, 15 Jul 2016 11:20:04 +0000 (11:20 +0000)]
[ELF] Overriding reserved symbols in linker script

llvm-svn: 275549

8 years agoGPGPU: Test scalar parameters of type half/float/double/fp128/x86_fp80/ppc_fp128
Tobias Grosser [Fri, 15 Jul 2016 11:12:29 +0000 (11:12 +0000)]
GPGPU: Test scalar parameters of type half/float/double/fp128/x86_fp80/ppc_fp128

We currently only test that the code structure we generate for these scalar
parameters is correct and we add these types to make sure later code generation
additions have sufficient test coverage.

In case some of these types cannot be mapped due to missing hardware support
on the GPU some of these test cases may need to be updated later on.

llvm-svn: 275548

8 years agoGPGPU: Make sure scops with more than one array work
Tobias Grosser [Fri, 15 Jul 2016 10:51:14 +0000 (10:51 +0000)]
GPGPU: Make sure scops with more than one array work

We use this opportunity to add a test case containing a scalar parameter.

llvm-svn: 275547