129601 Commits

Author SHA1 Message Date
Oliver Stannard
3cc1102f7b [AArch64] Better errors for out-of-range fixups
When a fixup that can be resolved by the assembler is out of range, we should
report an error in the source, rather than crashing.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265120 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 09:14:50 +00:00
Mehdi Amini
03b2cf694d ThinLTO: move ObjCARCContractPass in the CodeGen pipeline
This is to be coherent with Full LTO.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265118 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 08:22:59 +00:00
Jeroen Ketema
f4430ca01d [OCaml] Use LLVMCreateMessage with constant strings when calling llvm_raise
The llvm_string_of_message function, called by llvm_raise, calls
LLVMDisposeMessage, which expects the message to be dynamically
allocated; it fails freeing the message otherwise. So always
dynamically allocate with LLVMCreateMessage.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265116 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 07:56:17 +00:00
Jeroen Ketema
145384cb84 [OCaml] Reinstate data_layout
Expose LLVMCreateTargetMachineData as data_layout.

As r263530 did for go. From that commit: "LLVMGetTargetDataLayout was
removed from the C API, and then TargetMachine.TargetData was removed.
Later, LLVMCreateTargetMachineData was added to the C API"

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265115 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 07:54:24 +00:00
Mehdi Amini
51f5548e2a Add a libLTO API to stop/restart ThinLTO between optimizations and CodeGen
This allows the linker to instruct ThinLTO to perform only the
optimization part or only the codegen part of the process.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265113 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 06:47:02 +00:00
Chuang-Yu Cheng
ff2f27d909 [PPC64] Bug fix: when enabling sibling-call-opt and shrink-wrapping, the tail call branch instruction might disappear
Bug Pattern:
    # BB#0:                                 # %entry
	    cmpldi	 3, 0
	    beq-	 0, .LBB0_2
    # BB#1:                                 # %exit
	    lwz 4, 0(3)
	    #TC_RETURNd8 LVComputationKind 0
    .LBB0_2:                                # %cond.false
	    mflr 0
	    std 0, 16(1)
	    stdu 1, -96(1)
    .Ltmp0:
	    .cfi_def_cfa_offset 96
    .Ltmp1:
	    .cfi_offset lr, 16
	    bl __assert_fail
	    nop

The branch instruction for tail call return is not generated, because the
shrink-wrapping pass choosing a new Restore Point: %cond.false, so %exit
block is not sent to emitEpilogue, that's why the branch is not generated.

Thanks Kit's opinions!
Reviewers: nemanjai hfinkel tjablin kbarton

http://reviews.llvm.org/D17606

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265112 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 06:44:32 +00:00
Mehdi Amini
d2f4701e4a Add a module Hash in the bitcode and the combined index, implementing a kind of "build-id"
This is intended to be used for ThinLTO incremental build.

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

This is a recommit of r265095 after fixing the Windows issues.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265111 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 05:33:11 +00:00
Mehdi Amini
d4b1021e3e Fix MSVC warning "comparison of integers of different signs" (NFC)
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265110 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 05:19:14 +00:00
Mehdi Amini
7c5d570ceb Fix S390 big endian detection
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265109 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 05:12:24 +00:00
Mehdi Amini
167ce3f176 Const correctness in raw_sha1_ostream (NFC)
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265108 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 05:12:18 +00:00
Mehdi Amini
74c634c6b8 Add support for computing SHA1 in LLVM
Provide a class to generate a SHA1 from a sequence of bytes, and
a convenience raw_ostream adaptor.
This will be used to provide a "build-id" by hashing the Module
block when writing bitcode. ThinLTO will use this information for
incremental build.

Reapply r265094 which was reverted in r265102 because it broke
MSVC bots (constexpr is not supported).

http://reviews.llvm.org/D16325

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265107 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 04:30:16 +00:00
Sean Silva
3c31ac1912 Improve CHECK-NOT robustness of dllexport tests
This changes some dllexport tests, to verify that some symbols that
should not be exported are not, in a way that improves the robustness
of CHECK-SAME interaction with CHECK-NOT.

We plan to enable dllimport/dllexport support for the PS4, and these
changes are for points we noticed in our internal testing.

Patch by Warren Ristow!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265106 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 03:54:03 +00:00
Michael Kuperstein
cc2a78f316 Use range-based for loops. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265105 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 03:45:08 +00:00
Mehdi Amini
1fc660ff51 Revert "Add support for computing SHA1 in LLVM"
This reverts commit r265096, r265095, and r265094.
Windows build is broken, and the validation does not pass.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265102 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 03:03:21 +00:00
Sanjoy Das
6584a7a479 Don't insert stackrestore on deoptimizing returns
They're not necessary (since the stack pointer is trivially restored on
return), and the way LLVM inserts the stackrestore calls breaks the
IR (we get a stackrestore between the deoptimize call and the return).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265101 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 02:51:30 +00:00
Sanjoy Das
d36742f012 Don't insert lifetime end markers on deoptimizing returns
They're not necessary (since the lifetime of the alloca is trivially
over due to the return), and the way LLVM inserts the lifetime.end
markers breaks the IR (we get a lifetime end marker between the
deoptimize call and the return).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265100 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 02:51:26 +00:00
Sanjoy Das
3258a27b2c Don't use an i64 return type with webkit_jscc
Re-enable an assertion enabled by Justin Lebar in rL265092.  rL265092
was breaking test/CodeGen/X86/deopt-intrinsic.ll because webkit_jscc
does not like non-i64 return types.  Change the test case to not do
that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265099 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 02:51:21 +00:00
Matthias Braun
4c1839fec3 AArch64ISelLowering: Remove unused variables/arguments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265098 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 02:49:17 +00:00
Chuang-Yu Cheng
0835dfe527 Fix Sub-register Rewriting in Aggressive Anti-Dependence Breaker
Previously, HandleLastUse would delete RegRef information for sub-registers
if they were dead even if their corresponding super-register were still live.

If the super-register were later renamed, then the definitions of the
sub-register would not be updated appropriately. This patch alters the
behavior so that RegInfo information for sub-registers is only deleted when
the sub-register and super-register are both dead.

This resolves PR26775. This is the mirror image of Hal's r227311 commit.

Author: Tom Jablin (tjablin)
Reviewers: kbarton uweigand nemanjai hfinkel

http://reviews.llvm.org/D18448

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265097 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 02:05:29 +00:00
Mehdi Amini
433ac20b17 Add missing test for the "Module hash in bitcode" added in r265095
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265096 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:37:52 +00:00
Mehdi Amini
515396cd38 Add a module Hash in the bitcode and the combined index, implementing a kind of "build-id"
This is intended to be used for ThinLTO incremental build.

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

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265095 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:30:06 +00:00
Mehdi Amini
696fe52985 Add support for computing SHA1 in LLVM
Provide a class to generate a SHA1 from a sequence of bytes, and
a convenience raw_ostream adaptor.
This will be used to provide a "build-id" by hashing the Module
block when writing bitcode. ThinLTO will use this information for
incremental build.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265094 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:29:54 +00:00
Justin Lebar
7effb555cc Revert "Protect some assertions with NDEBUG rather than DEBUG()."
This reverts r265092, because it breaks CodeGen/X86/deopt-intrinsic.ll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265093 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:23:23 +00:00
Justin Lebar
77d0bd5a59 Protect some assertions with NDEBUG rather than DEBUG().
DEBUG() only runs if you pass -debug, but these assertions are generally
useful.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265092 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:09:12 +00:00
Justin Lebar
6f3ab0f846 [NVPTX] Add a truncate DAG node to some calls.
Summary:
Previously, we were running afoul of the assertion

  EVT(CLI.Ins[i].VT) == InVals[i].getValueType() && "LowerCall emitted a value with the wrong type!"

in SelectionDAGBuilder.cpp when running the NVPTX/i8-param.ll test.
This is because our backend (for some reason) treats small return values
as i32, but it wasn't ever truncating the i32 back down to the expected
width in the DAG.

Unclear to me whether this fixes any actual bugs -- in this test, at
least, the generated code is unchanged.

Reviewers: jingyue

Subscribers: llvm-commits, tra, jholewinski

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265091 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:09:10 +00:00
Justin Lebar
8c5dadb1d8 [NVPTX] Read __CUDA_FTZ from module flags in NVVMReflect.
Summary:
Previously the NVVMReflect pass would read its configuration from
command-line flags or a static configuration given to the pass at
instantiation time.

This doesn't quite work for clang's use-case.  It needs to pass a value
for __CUDA_FTZ down on a per-module basis.  We use a module flag for
this, so the NVVMReflect pass needs to be updated to read said flag.

Reviewers: tra, rnk

Subscribers: cfe-commits, jholewinski

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265090 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:09:07 +00:00
Justin Lebar
4d24c4a646 [NVPTX] Annotate some instructions as hasSideEffects = 0.
Summary:
Tablegen tries to infer this from the selection DAG patterns defined for
the instructions, but it can't always.

An instructive example is CLZr64.  CLZr32 is correctly inferred to have
no side-effects, but the selection DAG pattern for CLZr64 is slightly
more complicated, and in particular the ctlz DAG node is not at the root
of the pattern.  Thus tablegen can't infer that CLZr64 has no
side-effects.

Reviewers: jholewinski

Subscribers: jholewinski, tra, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265089 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:09:05 +00:00
Justin Lebar
55dc0e4085 [ifcnv] Add brief comment explaining what ifcnv is.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265088 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 01:09:03 +00:00
Mehdi Amini
eb9d3a84a7 Fix Windows build (typo in disk_space() implementation)
From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265087 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 00:52:05 +00:00
Akira Hatanaka
5fe8a3c994 [LoopVectorize] Don't unconditionally print vectorization diagnostics
when compiling with LTO.

r244523 a new class DiagnosticInfoOptimizationRemarkAnalysisAliasing for
optimization analysis remarks related to pointer aliasing without
guarding it in isDiagnosticEnabled in LLVMContext.cpp. This caused the
diagnostic message to be printed unconditionally when compiling with
LTO.

This commit cleans up isDiagnosticEnabled and makes sure all the
vectorization optimization remarks are guarded.

rdar://problem/25382153


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265084 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 00:34:39 +00:00
Mehdi Amini
e744acb2dd Add disk_space() to llvm::fs
Summary: Adapted from Boost::filesystem.
(This is a reapply by reverting commit r265080 and fixing the WinAPI part)

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

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265082 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 00:18:08 +00:00
Adrian Prantl
7876f64bc3 testcase gardening: update the emissionKind enum to the new syntax. (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265081 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 00:16:49 +00:00
Mehdi Amini
120652acc2 Revert "Add disk_space() to llvm::fs"
This reverts commit r265074 and r265068.
Breaks windows build

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265080 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 00:13:31 +00:00
Adrian Prantl
4964c02fbc Fix a captialization error in r265077.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265079 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-01 00:00:27 +00:00
Adrian Prantl
39bb84a097 Move the DebugEmissionKind enum from DIBuilder into DICompileUnit.
This mostly cosmetic patch moves the DebugEmissionKind enum from DIBuilder
into DICompileUnit. DIBuilder is not the right place for this enum to live
in — a metadata consumer should not have to include DIBuilder.h.
I also added a Verifier check that checks that the emission kind of a
DICompileUnit is actually legal.

http://reviews.llvm.org/D18612
<rdar://problem/25427165>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265077 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:56:58 +00:00
Hans Wennborg
ff85de8277 Follow-up to r265036: I got these iterators mixed up
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265076 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:55:16 +00:00
Mehdi Amini
ca1975ce41 clang-format the large enum definitions in LLVMBitCodes.h
Suggestion from Duncan in a review thread.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265075 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:27:37 +00:00
Mehdi Amini
3ddee86990 Use const ref instead of value for Twine in the disk_space() API
Thanks Rui for noticing!

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265074 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:14:45 +00:00
Matthias Braun
44f51d9b56 lit: python3 compatibility fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265070 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:08:55 +00:00
Peter Collingbourne
7f4c23bbda Create thin archive in GNU format to fix test on OS X.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265069 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:07:50 +00:00
Mehdi Amini
f5e9ba6d1c Add disk_space() to llvm::fs
Summary: Adapted from Boost::filesystem.
(This is a reapply by reverting commit r265062 and fixing the WinAPI part)

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

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265068 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 23:05:26 +00:00
Tim Shen
87cbc4fde1 Move asm-printer-topological-order.ll to PowerPC backend
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265067 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 22:32:10 +00:00
Peter Collingbourne
6ddf7daf8d Object: Add function for moving thin archive object buffer vector out of Archive.
Differential Revision: http://reviews.llvm.org/D18664

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265066 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 22:08:57 +00:00
Peter Collingbourne
c62e7cc2c4 Object: Correctly read thin archives containing absolute paths.
Differential Revision: http://reviews.llvm.org/D18666

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265065 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 22:08:31 +00:00
Tim Shen
47094ef9e3 [AsmPrinter] Print aliases in topological order
Print aliases in topological order, that is, for any alias a = b,
b must be printed before a. This is because on some targets (e.g. PowerPC)
linker expects aliases in such an order to generate correct TOC information.

GCC also prints aliases in topological order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265064 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 22:08:19 +00:00
Chandler Carruth
e6ec1e3b8f Fix PR26940 where compiles times regressed massively.
Patch by Jonas Paulsson. Original description:
Bugfix in buildSchedGraph() to make -dag-maps-huge-region work properly

I found that the reduction of the maps did in fact never happen in this
test case. This was because *all* the stores / loads were made with
addresses from arguments and they thus became "unknown" stores / loads.
Fixed by removing continue statements and making sure that the test for
reduction always takes place.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265063 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 21:55:58 +00:00
Mehdi Amini
99811fe3c4 Revert "Add disk_space() to llvm::fs"
Breaks windows bot.
This reverts commit r265050.
This reverts commit r265055.

From: Mehdi Amini <mehdi.amini@apple.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265062 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 21:55:35 +00:00
Evgeniy Stepanov
7689004086 Preserve blockaddress use edges in the module splitter.
"blockaddress" can not apply to an external function. All
blockaddress constant uses must belong to the same module as the
definition of the target function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265061 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 21:55:11 +00:00
David Majnemer
54136ef7b3 [NVPTX] Infer __nvvm_reflect as nounwind, readnone
This patch simply mirrors the attributes we give to @llvm.nvvm.reflect
to the __nvvm_reflect libdevice call.  This shaves about 30% of the code
in libdevice away because of CSE opportunities.  It's also helps us
figure out that libdevice implementations of transcendental functions
don't have side-effects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265060 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 21:29:57 +00:00
Simon Pilgrim
c7e42230b0 Wdocumentation parameter fix
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265055 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 21:13:49 +00:00