OSDN Git Service
Sanjay Patel [Fri, 24 Jul 2015 16:02:14 +0000 (16:02 +0000)]
fix wrong comment; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243113
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 24 Jul 2015 11:55:11 +0000 (11:55 +0000)]
llvm/test/tools/dsymutil/ARM/lit.local.cfg: Fix possibly typo, s/X86/ARM/.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243106
91177308-0d34-0410-b5e6-
96231b3b80d8
Luke Cheeseman [Fri, 24 Jul 2015 09:57:05 +0000 (09:57 +0000)]
[ARM] - Fix lowering of shufflevectors in AArch32
Some shufflevectors are currently being incorrectly lowered in the AArch32
backend as the existing checks for detecting the NEON operations from the
shufflevector instruction expects the shuffle mask and the vector operands to be
of the same length.
This is not always the case as the mask may be twice as long as the operand;
here only the lower half of the shufflemask gets checked, so provided the lower
half of the shufflemask looks like a vector transpose (or even is just all -1
for undef) then the intrinsics may get incorrectly lowered into a vector
transpose (VTRN) instruction.
This patch fixes this by accommodating for both cases and adds regression tests.
Differential Revision: http://reviews.llvm.org/D11407
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243103
91177308-0d34-0410-b5e6-
96231b3b80d8
Luke Cheeseman [Fri, 24 Jul 2015 09:31:48 +0000 (09:31 +0000)]
When lowering vector shifts a check is performed to see if the value to shift by
is an immediate, in this check the value is negated and stored in and int64_t.
The value can be -2^63 yet the result cannot be stored in an int64_t and this
gives some undefined behaviour causing failures. The negation is only necessary
when the values is within a certain range and so it should not need to negate
-2^63, this patch introduces this and also a regression test.
Differential Revision: http://reviews.llvm.org/D11408
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243100
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Fri, 24 Jul 2015 06:41:11 +0000 (06:41 +0000)]
[dsymutil] Implement support for universal mach-o object files.
This patch allows llvm-dsymutil to read universal (aka fat) macho object
files and archives. The patch touches nearly everything in the BinaryHolder,
but it is fairly mechinical: the methods that returned MemoryBufferRefs or
ObjectFiles now return a vector of those, and the high-level access function
takes a triple argument to select the architecture.
There is no support yet for handling fat executables and thus no support for
writing fat object files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243096
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Fri, 24 Jul 2015 06:41:04 +0000 (06:41 +0000)]
[dsymutil] Make the triple detection more strict.
MachOObjectFile offers a method for detecting the correct triple, use
it instead of the previous approximation. This doesn't matter right
now, but it will become important for mach-o universal (fat) binaries.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243095
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Fri, 24 Jul 2015 06:40:59 +0000 (06:40 +0000)]
[dsymutil] Refactor BinaryHolder internals. NFC
Call a helper that resets all the internal state of the BinaryHolder
when we change the underlying memory buffer. Makes a followup patch
a tiny bit smaller.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243094
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 24 Jul 2015 03:36:55 +0000 (03:36 +0000)]
Revert "Remove access to the DataLayout in the TargetMachine"
This reverts commit
0f720d984f419c747709462f7476dff962c0bc41.
It breaks clang too badly, I need to prepare a proper patch for clang
first.
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243089
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexei Starovoitov [Fri, 24 Jul 2015 03:17:08 +0000 (03:17 +0000)]
[bpf] initial support for debug_info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243087
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 24 Jul 2015 02:14:20 +0000 (02:14 +0000)]
[llvm-reaobj] Display COFF-specific sections/tables only if the object is COFF.
Just skip them otherwise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243086
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Zolotukhin [Fri, 24 Jul 2015 01:53:04 +0000 (01:53 +0000)]
Handle resolvable branches in complete loop unroll heuristic.
Summary:
Resolving a branch allows us to ignore blocks that won't be executed, and thus make our estimate more accurate.
This patch is intended to be applied after D10205 (though it could be applied independently).
Reviewers: chandlerc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D10206
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243084
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Fri, 24 Jul 2015 01:44:39 +0000 (01:44 +0000)]
Remove access to the DataLayout in the TargetMachine
Summary:
Replace getDataLayout() with a createDataLayout() method to make
explicit that it is intended to create a DataLayout only and not
accessing it for other purpose.
This change is the last of a series of commits dedicated to have a
single DataLayout during compilation by using always the one owned
by the module.
Reviewers: echristo
Subscribers: jholewinski, llvm-commits, rafael, yaron.keren
Differential Revision: http://reviews.llvm.org/D11103
(cherry picked from commit
5609fc56bca971e5a7efeaa6ca4676638eaec5ea)
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243083
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 24 Jul 2015 01:14:25 +0000 (01:14 +0000)]
build: fix small typo in cmake doxygen build
A search word spelled as "searhc" in the LLVM_DOXYGEN_SEARCHENGINE_URL cmake
variable docstring.
Patch by Daniel Otero!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243082
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 24 Jul 2015 01:12:36 +0000 (01:12 +0000)]
MIRParser/LLVMBuild.txt: Add MC for MCRegisterInfo::getDwarfRegNum().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243081
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Fri, 24 Jul 2015 01:12:28 +0000 (01:12 +0000)]
Reorder alphabetically.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243080
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Fri, 24 Jul 2015 01:07:50 +0000 (01:07 +0000)]
Clean up function attributes on PPC fast-isel tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243079
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 24 Jul 2015 01:06:40 +0000 (01:06 +0000)]
[libFuzzer] allow users to supply their own implementation of rand
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243078
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Fri, 24 Jul 2015 00:42:55 +0000 (00:42 +0000)]
[RewriteStatepointsForGC] Fix release build warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243076
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonathan Roelofs [Fri, 24 Jul 2015 00:29:50 +0000 (00:29 +0000)]
Add missing underlines for a docs section. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243075
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Fri, 24 Jul 2015 00:02:11 +0000 (00:02 +0000)]
[RewriteStatepointsForGC] Use a worklist algorithm for first part of base pointer algorithm [NFC]
The new code should hopefully be equivalent to the old code; it just uses a worklist to track instructions which need to visited rather than iterating over all instructions visited each time. This should be faster, but the primary benefit is that the purpose should be more clear and the diff of adding another instruction type (forthcoming) much more obvious.
Differential Revision: http://reviews.llvm.org/D11480
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243071
91177308-0d34-0410-b5e6-
96231b3b80d8
Lawrence Hu [Thu, 23 Jul 2015 23:55:28 +0000 (23:55 +0000)]
test commit, only added one space
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243070
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Thu, 23 Jul 2015 23:13:37 +0000 (23:13 +0000)]
[NaryReassociate] remove redundant code
This check is already done by findClosestMatchingDominator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243065
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 23 Jul 2015 23:09:07 +0000 (23:09 +0000)]
MIR Serialization: Serialize the '.cfi_offset' CFI instruction.
Reviewers: Duncan P. N. Exon Smith
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243062
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Thu, 23 Jul 2015 23:00:04 +0000 (23:00 +0000)]
WebAssembly: test that valid -mcpu flags are accepted.
Summary: AArch64 has a similar test.
Subscribers: sunfish, aemerson, llvm-commits, jfb
Differential Revision: http://reviews.llvm.org/D11479
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243058
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Thu, 23 Jul 2015 22:56:53 +0000 (22:56 +0000)]
fix crash in machine trace metrics due to processing dbg_value instructions (PR24199)
The test in PR24199 ( https://llvm.org/bugs/show_bug.cgi?id=24199 ) crashes because machine
trace metrics was not ignoring dbg_value instructions when calculating data dependencies.
The machine-combiner pass asks machine trace metrics to calculate an instruction trace,
does some reassociations, and calls MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval()
along with MachineTraceMetrics::invalidate(). The dbg_value instructions have their operands
invalidated, but the instructions are not expected to be deleted.
On a subsequent loop iteration of the machine-combiner pass, machine trace metrics would be
called again and die while accessing the invalid debug instructions.
Differential Revision: http://reviews.llvm.org/D11423
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243057
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 23 Jul 2015 22:49:14 +0000 (22:49 +0000)]
[RewriteStatepointsForGC] Rename PhiState to reflect that it's associated w/more than just PHIs
Today, Select instructions also have associated PhiStates. In the near future, so will ExtractElement and SuffleVector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243056
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 23 Jul 2015 22:25:26 +0000 (22:25 +0000)]
[RewriteStatepointsForGC] Use idomatic mechanisms for debug tracing [NFC]
Deleting much of the code using trace-rewrite-statepoints and use idiomatic DEBUG statements instead. This includes adding operator<< to a helper class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243054
91177308-0d34-0410-b5e6-
96231b3b80d8
David Gross [Thu, 23 Jul 2015 22:12:46 +0000 (22:12 +0000)]
[ARM] Register (existing) ARMLoadStoreOpt pass with LLVM pass manager.
Summary: Among other things, this allows -print-after-all/-print-before-all to dump IR around this pass.
Subscribers: aemerson, llvm-commits, rengolin
Differential Revision: http://reviews.llvm.org/D11373
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243052
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Thu, 23 Jul 2015 21:55:26 +0000 (21:55 +0000)]
Moving tests in to X86 directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243049
91177308-0d34-0410-b5e6-
96231b3b80d8
David Gross [Thu, 23 Jul 2015 21:46:09 +0000 (21:46 +0000)]
Test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243046
91177308-0d34-0410-b5e6-
96231b3b80d8
Philip Reames [Thu, 23 Jul 2015 21:41:27 +0000 (21:41 +0000)]
[RewriteStatepointsForGC] Simplify code around meet of PhiStates [NFC]
We don't need to pass in the map from BDV to PhiStates; we can instead handle that externally and let the MeetPhiStates helper class just meet PhiStates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243045
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Thu, 23 Jul 2015 21:40:19 +0000 (21:40 +0000)]
Using an input object file instead of trying to generate an object file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243044
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Thu, 23 Jul 2015 21:24:52 +0000 (21:24 +0000)]
Specifying a test triple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243042
91177308-0d34-0410-b5e6-
96231b3b80d8
Colin LeMahieu [Thu, 23 Jul 2015 20:58:49 +0000 (20:58 +0000)]
[llvm-objdump] Add -D and --disassemble-all flags that attempt disassembly on all sections instead of just text sections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243041
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Wala [Thu, 23 Jul 2015 20:53:46 +0000 (20:53 +0000)]
[Scalarizer] Fix potential for stale data in Scattered across invocations
Summary:
Scalarizer has two data structures that hold information about changes
to the function, Gathered and Scattered. These are cleared in finish()
at the end of runOnFunction() if finish() detects any changes to the
function.
However, finish() was checking for changes by only checking if
Gathered was non-empty. The function visitStore() only modifies
Scattered without touching Gathered. As a result, Scattered could have
ended up having stale data if Scalarizer only scalarized store
instructions. Since the data in Scattered is used during the execution
of the pass, this introduced dangling pointer errors.
The fix is to check whether both Scattered and Gathered are empty
before deciding what to do in finish(). This also fixes a problem
where the Function can be modified although the pass returns false.
Reviewers: rnk
Subscribers: rnk, srhines, llvm-commits
Differential Revision: http://reviews.llvm.org/D10459
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243040
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan P. N. Exon Smith [Thu, 23 Jul 2015 19:27:07 +0000 (19:27 +0000)]
X86: Use dyn_cast instead of isa+cast, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243034
91177308-0d34-0410-b5e6-
96231b3b80d8
Weiming Zhao [Thu, 23 Jul 2015 19:24:53 +0000 (19:24 +0000)]
This patch eanble register coalescing to coalesce the following:
%vreg2<def> = MOVi32imm 1; GPR32:%vreg2
%W1<def> = COPY %vreg2; GPR32:%vreg2
into:
%W1<def> = MOVi32imm 1
Patched by Lawrence Hu (lawrence@codeaurora.org)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243033
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 23 Jul 2015 18:37:22 +0000 (18:37 +0000)]
[libFuzzer] dump long running units to disk
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243031
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Thu, 23 Jul 2015 14:31:18 +0000 (14:31 +0000)]
NFC. Explicitly specify attributes in BasicAA/cs-cs.ll test.
This will simplify verifying correctness for a changes which modify attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243016
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 23 Jul 2015 13:42:16 +0000 (13:42 +0000)]
Delete dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243015
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 23 Jul 2015 12:51:44 +0000 (12:51 +0000)]
Use helper function. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243012
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 23 Jul 2015 12:49:40 +0000 (12:49 +0000)]
Add a version of getSymbol with an explicit symbol table. Use it. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243011
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Thu, 23 Jul 2015 12:23:45 +0000 (12:23 +0000)]
[X86] Allow load folding into PUSH instructions
Adds pushes to the folding tables.
This also required a fix to the TD definition, since the memory forms of
the push instructions did not have the right mayLoad/mayStore flags.
Differential Revision: http://reviews.llvm.org/D11340
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243010
91177308-0d34-0410-b5e6-
96231b3b80d8
Asaf Badouh [Thu, 23 Jul 2015 12:10:51 +0000 (12:10 +0000)]
[x86] change FP scalar builtin naming convention
Differential Revision: http://reviews.llvm.org/D11454
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243008
91177308-0d34-0410-b5e6-
96231b3b80d8
Kuba Brecka [Thu, 23 Jul 2015 10:54:06 +0000 (10:54 +0000)]
[asan] Rename the ABI versioning symbol to '__asan_version_mismatch_check' instead of abusing '__asan_init'
We currently version `__asan_init` and when the ABI version doesn't match, the linker gives a `undefined reference to '__asan_init_v5'` message. From this, it might not be obvious that it's actually a version mismatch error. This patch makes the error message much clearer by changing the name of the undefined symbol to be `__asan_version_mismatch_check_xxx` (followed by the version string). We obviously don't want the initializer to be named like that, so it's a separate symbol that is used only for the purpose of version checking.
Reviewed at http://reviews.llvm.org/D11004
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243003
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Thu, 23 Jul 2015 10:23:48 +0000 (10:23 +0000)]
[X86] Fix order of operands for ins and outs instructions when parsing intel syntax
Patch by: marina.yatsina@intel.com
Differential Revision: http://reviews.llvm.org/D11337
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243001
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 23 Jul 2015 09:34:01 +0000 (09:34 +0000)]
[GMR] Add a late run of GlobalsModRef to the main pass pipeline behind
the general GMR-in-non-LTO flag.
Without this, we have the global information during the CGSCC pipeline
for GVN and such, but don't have it available during the late loop
optimizations such as the vectorizer. Moreover, after the CGSCC pipeline
has finished we have substantially more accurate and refined call graph
information, function annotations, etc, which will make GMR even more
powerful than it is early in the pipelien.
Note that we have to play silly games with preserving AliasAnalysis
(which is now trivially preserved) in order to let a module analysis
magically be preserved into the entire function pass pipeline.
Simultaneously we have to not make GMR an immutable pass in order to be
able to re-run it and collect fresh data on the final call graph.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242999
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 23 Jul 2015 09:11:05 +0000 (09:11 +0000)]
Support printing relocations in files with no section table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242998
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 23 Jul 2015 08:48:14 +0000 (08:48 +0000)]
Use typdef to simplify the code. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242995
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Thu, 23 Jul 2015 08:25:23 +0000 (08:25 +0000)]
X86: Fixed assertion failure in 32-bit mode
The DAG Node "SCALAR_TO_VECTOR" may be created if the type of the scalar element is legal.
Added a check for the scalar type before creating this node.
Added a test that fails with assertion on the current version.
Differential Revision: http://reviews.llvm.org/D11413
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242994
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Thu, 23 Jul 2015 08:06:12 +0000 (08:06 +0000)]
Avoid using -Wl,-z,defs on Cygwin.
Prior to CMAKE 2.8.4 that was covered by the WIN32 conditional but
from 2.8.4 CMAKE no longer defined WIN32 when running under Cygwin
and it needs its own test.
Patch by Martell Malone!
http://reviews.llvm.org/D11347
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242993
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 23 Jul 2015 08:03:44 +0000 (08:03 +0000)]
Revert r242990: "AVX-512: Implemented encoding , DAG lowering and ..."
This commit broke the build. Numerous build bots broken, and it was
blocking my progress so reverting.
It should be trivial to reproduce -- enable the BPF backend and it
should fail when running llvm-tblgen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242992
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 23 Jul 2015 07:50:52 +0000 (07:50 +0000)]
[GMR] Switch the function info we store for every function to be a much
more dense datastructure. We actually only have 3 bits of information
and an often-null pointer here. This fits very nicely into a
pointer-size value in the DenseMap from Function -> Info. Then we take
one more pointer hop to get to a secondary DenseMap from GlobalValue ->
ModRefInfo when we actually have precise info for particular globals.
This is more code than I would really like to do this packing, but it
ended up reasonably cleanly laid out. It should ensure we don't hit
scaling limitations with more widespread use of GMR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242991
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Thu, 23 Jul 2015 07:39:21 +0000 (07:39 +0000)]
AVX-512: Implemented encoding , DAG lowering and intrinsics for Integer Truncate with/without saturation
Added tests for DAG lowering ,encoding and intrinsic
Differential Revision: http://reviews.llvm.org/D11218
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242990
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 23 Jul 2015 07:33:48 +0000 (07:33 +0000)]
[ScalarEvolution] Change addRequired to addRequiredTransitive on two passes where ScalarEvolution stores long lived raw pointers to objects those passes own.
This prevents the pointers from dangling when those passes are freed.
http://reviews.llvm.org/D11236
Patch by Steve King.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242989
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Thu, 23 Jul 2015 07:17:53 +0000 (07:17 +0000)]
Replace a 0 with nullptr. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242988
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Thu, 23 Jul 2015 07:11:14 +0000 (07:11 +0000)]
AVX : Fix ISA disabling in case AVX512VL , some instructions should be disabled only if AVX512BW and AVX512VL present.
Tests added.
Differential Revision: http://reviews.llvm.org/D11414
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242987
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Thu, 23 Jul 2015 05:49:29 +0000 (05:49 +0000)]
Remove unnecessary in C++11 c_str() calls
While theoratically required in pre-C++11 to avoid re-allocation upon call,
C++11 guarantees that c_str() returns a pointer to the internal array so
pre-calling c_str() is no longer required.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242983
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Thu, 23 Jul 2015 04:59:07 +0000 (04:59 +0000)]
[NVPTX] run LSR before straight-line optimizations
Summary:
Straight-line optimizations can simplify the loop body and make LSR's
cost analysis more precise. This significantly improves several Eigen3
CUDA benchmarks.
With this change, EigenContractionKernel runs up to 40% faster
(https://bitbucket.org/eigen/eigen/src/
753ceee5f206ff7dde9f6a41a5a420749fc9406f/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h?at=default#cl-502).
EigenConvolutionKernel2D runs up to 10% faster
(https://bitbucket.org/eigen/eigen/src/
753ceee5f206ff7dde9f6a41a5a420749fc9406f/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h?at=default#cl-605).
I have some difficulties writing small tests that benefit from this
reordering due to a seemingly issue with LSR (being discussed at
http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-July/088244.html).
See the review thread for the compilation time impact of GVN.
Reviewers: eliben, jholewinski
Subscribers: llvm-commits, jholewinski
Differential Revision: http://reviews.llvm.org/D11304
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242982
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 23 Jul 2015 03:24:22 +0000 (03:24 +0000)]
Refactor duplicated code and check for invalid symbol table size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242981
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Thu, 23 Jul 2015 00:12:32 +0000 (00:12 +0000)]
[GMR] Further improve the FunctionInfo API inside of GlobalsModRef, NFC.
This takes the operation of merging a callee's information into the
current information and embeds it into the FunctionInfo type itself.
This is much cleaner as now we don't need to expose iteration of the
globals, etc.
Also, switched all the uses of a raw integer two maintain the mod/ref
info during the SCC walk into just directly manipulating it in the
FunctionInfo object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242976
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 23:56:31 +0000 (23:56 +0000)]
[GMR] Wrap all of the per-function information behind a more strongly
typed interface as a precursor to rewriting how it is stored.
This way we know that the access paths are controlled and it should be
easy to store these bits in a different way.
No functionality changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242974
91177308-0d34-0410-b5e6-
96231b3b80d8
Frederic Riss [Wed, 22 Jul 2015 23:24:00 +0000 (23:24 +0000)]
[dsymutil] Check archive members timestamps.
The debug map contains the timestamp of the object files in references.
We do not check these in the general case, but it's really useful if
you have archives where different versions of an object file have been
appended. This allows llvm-dsymutil to find the right one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242965
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 23:16:02 +0000 (23:16 +0000)]
[PM/AA] Cleanup comments, formatting, and organization of the AA
interface prior to making more substantial and invasive changes.
No functionality changed, and should hopefully keep subsequent patches
as clean and focused as possible in addition to making the comments and
such more clear.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242964
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 23:15:57 +0000 (23:15 +0000)]
[PM/AA] Extract the ModRef enums from the AliasAnalysis class in
preparation for de-coupling the AA implementations.
In order to do this, they had to become fake-scoped using the
traditional LLVM pattern of a leading initialism. These can't be actual
scoped enumerations because they're bitfields and thus inherently we use
them as integers.
I've also renamed the behavior enums that are specific to reasoning
about the mod/ref behavior of functions when called. This makes it more
clear that they have a very narrow domain of applicability.
I think there is a significantly cleaner API for all of this, but
I don't want to try to do really substantive changes for now, I just
want to refactor the things away from analysis groups so I'm preserving
the exact original design and just cleaning up the names, style, and
lifting out of the class.
Differential Revision: http://reviews.llvm.org/D10564
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242963
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 22:32:34 +0000 (22:32 +0000)]
[GMR] Continue my quest to remove linked datastructures from GMR, NFC.
This replaces the next-to-last std::map with a DenseMap. While DenseMap
doesn't yet make tons of sense (there are 32 bytes or so in the value
type), my next change will reduce the value type to a single pointer --
we only need a pointer and 3 bits, and that is exactly what we can have.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242956
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Wed, 22 Jul 2015 22:29:30 +0000 (22:29 +0000)]
[ConstantFolding] Support folding loads from a GlobalAlias
The MSVC ABI requires that we generate an alias for the vtable which
means looking through a GlobalAlias which cannot be overridden improves
our ability to devirtualize.
Found while investigating PR20801.
Patch by Andrew Zhogin!
Differential Revision: http://reviews.llvm.org/D11306
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242955
91177308-0d34-0410-b5e6-
96231b3b80d8
Anthony Pesch [Wed, 22 Jul 2015 22:26:54 +0000 (22:26 +0000)]
Revert "Improve merging of stores from static constructors in GlobalOpt"
This reverts commit
0a9dee959a30b81b9e7df64c9a58ff9898c24024.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242954
91177308-0d34-0410-b5e6-
96231b3b80d8
Anthony Pesch [Wed, 22 Jul 2015 22:26:52 +0000 (22:26 +0000)]
Revert "IPO: Avoid brace initialization of a map, some versions of libc++ don't like it"
This reverts commit
fc2dad0c68f8d32273d3c2d790ed496961f829af.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242953
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 22:10:05 +0000 (22:10 +0000)]
[GMR] Make the collection of readers and writers of globals much more
efficient, NFC.
Previously, we built up vectors of function pointers to track readers
and writers. The primary problem here is that we would add the same
function to this vector every time we found an instruction that reads or
writes to the pointer. This could be a *lot* of redudant function
pointers. Instead of doing that, we can use a SmallPtrSet.
This does more than just reduce the size of the list of readers or
writers. We walk the entire lists of each and do a map lookup for each
one. By having sets, we will only do one map lookup per reader or writer
function.
But only one user of the pointer analyzer actually needs this
information, so we can also skip accumulating it (and doing a lot of
heap allocations) for all the other pointer analysis. This is
particularly useful because there are very many more pointers in some of
the other cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242950
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 22 Jul 2015 22:09:44 +0000 (22:09 +0000)]
Force the gnu archive format to fix the test on darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242949
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 22 Jul 2015 21:56:41 +0000 (21:56 +0000)]
fix typo; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242947
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Wed, 22 Jul 2015 21:47:13 +0000 (21:47 +0000)]
fix indent; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242946
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Wed, 22 Jul 2015 21:41:12 +0000 (21:41 +0000)]
IPO: Avoid brace initialization of a map, some versions of libc++ don't like it
Should fix the build failure on these darwin bots:
http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/12427/
http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_build/10389/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242945
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Wed, 22 Jul 2015 21:35:27 +0000 (21:35 +0000)]
[lit] Fix launching executables relative to the cwd after 'cd'
This was affecting test/asan/TestCases/Windows/coverage-basic.cc in
compiler-rt. It does something like:
cd %T/mydir
%clang %s -o t.exe
./t.exe
Previously, we'd end up looking for t.exe relative to the cwd of the lit
process, not the cwd of the test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242941
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Wed, 22 Jul 2015 21:30:16 +0000 (21:30 +0000)]
[PeepholeOptimizer] Refactor optimizeUncoalescable logic
Reapply r242294.
- Create a new CopyRewriter for Uncoalescable copy-like instructions
- Change the ValueTracker to return a ValueTrackerResult
This makes optimizeUncoalescable looks more like optimizeCoalescable and
use the CopyRewritter infrastructure.
This is also the preparation for looking up into PHI nodes in the
ValueTracker.
rdar://problem/
20404526
Differential Revision: http://reviews.llvm.org/D11195
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242940
91177308-0d34-0410-b5e6-
96231b3b80d8
JF Bastien [Wed, 22 Jul 2015 21:28:15 +0000 (21:28 +0000)]
WebAssembly: basic bitcode → assembly CodeGen test
Summary:
Add a basic CodeGen bitcode test which (for now) only prints out the function name and nothing else. The current code merely implements the basic needed for the test run to not crash / assert. Getting to that point required:
- Basic InstPrinter.
- Basic AsmPrinter.
- DiagnosticInfoUnsupported (not strictly required, but nice to have, duplicated from AMDGPU/BPF's ISelLowering).
- Some SP and register setup in WebAssemblyTargetLowering.
- Basic LowerFormalArguments.
- GenInstrInfo.
- Placeholder LowerFormalArguments.
- Placeholder CanLowerReturn and LowerReturn.
- Basic DAGToDAGISel::Select, which requiresGenDAGISel.inc as well as GET_INSTRINFO_ENUM with GenInstrInfo.inc.
- Remove WebAssemblyFrameLowering::determineCalleeSaves and rely on default.
- Implement WebAssemblyFrameLowering::hasFP, same as AArch64's implementation.
Follow-up patches will implement a real AsmPrinter, which will require adding MI opcodes specific to WebAssembly.
Reviewers: sunfish
Subscribers: aemerson, jfb, llvm-commits
Differential Revision: http://reviews.llvm.org/D11369
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242939
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 22 Jul 2015 21:15:11 +0000 (21:15 +0000)]
MIR Serialization: Serialize the machine instruction's debug location.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242938
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Wed, 22 Jul 2015 21:11:17 +0000 (21:11 +0000)]
Rename RunCallBacksToRun to llvm::sys::RunSignalHandlers
And expose it in Signals.h, allowing clients to call it directly,
possibly LLVMErrorHandler which currently calls RunInterruptHandlers
but not RunSignalHandlers, thus for example not printing the stack
backtrace on Unixish OSes. On Windows it does happen because
RunInterruptHandlers ends up calling the callbacks as well via
Cleanup(). This difference in behaviour and code structures in
*/Signals.inc should be patched in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242936
91177308-0d34-0410-b5e6-
96231b3b80d8
Anthony Pesch [Wed, 22 Jul 2015 21:10:45 +0000 (21:10 +0000)]
Improve merging of stores from static constructors in GlobalOpt
Summary:
While working on a project I wound up generating a fairly large lookup table (10k entries) of callbacks inside of a static constructor. Clang was taking upwards of ~10 minutes to compile the lookup table. I generated a smaller test case (http://www.inolen.com/static_initializer_test.ll) that, after running with -ftime-report, pointed fingers at GlobalOpt and MemCpyOptimizer.
Running globalopt took around ~9 minutes. The slowdown came from how GlobalOpt merged stores from static constructors individually into the global initializer in EvaluateStaticConstructor. For each store it discovered and wanted to commit, it would copy the existing global initializer and then merge in the individual store. I changed this so that stores are now grouped by global, and sorted from most significant to least significant by their GEP indexes (e.g. a store to GEP 0, 0 comes before GEP 0, 0, 1). With this representation, the existing initializer can be copied and all new stores merged into it in a single pass.
With this patch and http://reviews.llvm.org/D11198, the lookup table that was taking ~10 minutes to compile now compiles in around 5 seconds. I've ran 'make check' and the test-suite, which all passed.
I'm not really sure who to tag as a reviewer, Lang mentioned that Chandler may be appropriate.
Reviewers: chandlerc, nlewycky
Subscribers: nlewycky, llvm-commits
Differential Revision: http://reviews.llvm.org/D11200
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242935
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 22 Jul 2015 21:07:04 +0000 (21:07 +0000)]
MIR Parser: Extract the MDNode parsing code into a separate method. NFC.
This change would allow the machine instruction parser to reuse this method when
parsing the metadata node for the machine instruction's debug location property.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242934
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Wed, 22 Jul 2015 20:46:11 +0000 (20:46 +0000)]
Fix -Wextra-semi warnings.
Patch by Eugene Zelenko!
Differential Revision: http://reviews.llvm.org/D11400
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242930
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 22 Jul 2015 19:34:26 +0000 (19:34 +0000)]
Fix fetching the symbol table of a thin archive.
We were trying to read it as an external file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242926
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Wed, 22 Jul 2015 19:01:14 +0000 (19:01 +0000)]
De-duplicate Unix & Windows CallBacksToRun
Move CallBacksToRun into the common Signals.cpp, create RunCallBacksToRun()
and use these in both Unix/Signals.inc and Windows/Signals.inc.
Lots of potential code to be merged here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242925
91177308-0d34-0410-b5e6-
96231b3b80d8
Anthony Pesch [Wed, 22 Jul 2015 18:50:10 +0000 (18:50 +0000)]
Test commit, added blank line
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242923
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 22 Jul 2015 18:41:57 +0000 (18:41 +0000)]
Simplify switch as all cases other than default return true. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242922
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 22 Jul 2015 18:29:39 +0000 (18:29 +0000)]
Identify thin archives as archives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242921
91177308-0d34-0410-b5e6-
96231b3b80d8
Yaron Keren [Wed, 22 Jul 2015 18:23:51 +0000 (18:23 +0000)]
Remove C++98 workaround in llvm::sys::DontRemoveFileOnSignal()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242920
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Wed, 22 Jul 2015 18:21:39 +0000 (18:21 +0000)]
[Release] Allow release testers to disable certain components
Not all components build correctly on all targets and the release
script had no way to disable them other than editing the script locally.
This change provides a way to disable the test-suite, compiler-rt and
the libraries, as well as allowing you to re-run on the same directory
without checking out all sources again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242919
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Wed, 22 Jul 2015 17:58:46 +0000 (17:58 +0000)]
MIR Serialization: Serialize the metadata machine operands.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242916
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Wed, 22 Jul 2015 16:34:37 +0000 (16:34 +0000)]
[ARM] Make the frame lowering code ready for shrink-wrapping.
Shrink-wrapping can now be tested on ARM with -enable-shrink-wrap.
Related to <rdar://problem/
20821730>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242908
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 22 Jul 2015 14:09:20 +0000 (14:09 +0000)]
Delete ELFEntityIterator. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242901
91177308-0d34-0410-b5e6-
96231b3b80d8
Asaf Badouh [Wed, 22 Jul 2015 12:00:43 +0000 (12:00 +0000)]
[X86][AVX512] add reduce/range/scalef/rndScale
include encoding and intrinsics
Differential Revision: http://reviews.llvm.org/D11222
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242896
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 11:57:28 +0000 (11:57 +0000)]
[GMR] Add a flag to enable GlobalsModRef in the normal compilation
pipeline.
Even before I started improving its runtime, it was already crazy fast
once the call graph exists, and if we can get it to be conservatively
correct, will still likely catch a lot of interesting and useful cases.
So it may well be useful to enable by default.
But more importantly for me, this should make it easier for me to test
that changes aren't breaking it in fundamental ways by enabling it for
normal builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242895
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 22 Jul 2015 11:54:19 +0000 (11:54 +0000)]
[dsymutil] Remove extra semicolon. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242894
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 11:47:54 +0000 (11:47 +0000)]
[GMR] Switch from std::set to SmallPtrSet. NFC.
This almost certainly doesn't matter in some deep sense, but std::set is
essentially always going to be slower here. Now the alias query should
be essentially constant time instead of having to chase the set tree
each time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242893
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 11:43:24 +0000 (11:43 +0000)]
[GMR] Only look in the associated allocs map for an underlying value if
it wasn't one of the indirect globals (which clearly cannot be an
allocation function call). Also only do a single lookup into this map
instead of two. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242892
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 11:36:09 +0000 (11:36 +0000)]
[GMR] Switch to a DenseMap and clean up the iteration loop. NFC.
Since we have to iterate this map not that infrequently, we should use
a map that is efficient for iteration. It is also almost certainly much
faster for lookups as well. There is more to do in terms of reducing the
wasted overhead of GMR's runtime though. Not sure how much is worthwhile
though.
The loop improvements should hopefully address the code review that
Duncan gave when he saw this code as I moved it around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242891
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Wed, 22 Jul 2015 11:22:29 +0000 (11:22 +0000)]
Fix a -Winconsistent-missing-override failure in the .intel_syntax
patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242890
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Kuperstein [Wed, 22 Jul 2015 11:19:22 +0000 (11:19 +0000)]
Fix test from r242886 to use the right triple.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242889
91177308-0d34-0410-b5e6-
96231b3b80d8