Patrik Hagglund [Tue, 11 Dec 2012 10:24:48 +0000 (10:24 +0000)]
Change RegVT in BitTestBlock and RegsForValue, to contain MVTs,
instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169851
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:20:51 +0000 (10:20 +0000)]
Change TargetLowering::getTypeForExtArgOrReturn to take and return
MVTs, instead of EVTs.
Accordingly, add bitsLT (and similar) to MVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169850
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:16:19 +0000 (10:16 +0000)]
Change a parameter of TargetLowering::getVectorTypeBreakdown to MVT,
from EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169849
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:09:23 +0000 (10:09 +0000)]
Change TargetLowering::RegisterTypeForVT to contain MVTs, instead of
EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169848
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:05:04 +0000 (10:05 +0000)]
Change TargetLowering::TransformToType to contain MVTs, instead of
EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169847
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 10:00:35 +0000 (10:00 +0000)]
Change TargetLowering::getRepRegClassCostFor, getIndexedLoadAction,
getIndexedStoreAction, and addRegisterClass to take an MVT, instead
of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169846
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:57:18 +0000 (09:57 +0000)]
Change TargetLowering::findRepresentativeClass to take an MVT, instead
of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169845
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:54:23 +0000 (09:54 +0000)]
Change TargetLowering::getTypeToPromoteTo to take and return MVTs,
instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169844
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:51:27 +0000 (09:51 +0000)]
Change TargetLowering::isCondCodeLegal to take an MVT, instead of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169843
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:48:14 +0000 (09:48 +0000)]
Change TargetLowering::getCondCodeAction to take an MVT, instead of
EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169842
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:42:24 +0000 (09:42 +0000)]
Change TargetLowering::getTruncStoreAction to take MVTs, instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169841
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:39:09 +0000 (09:39 +0000)]
Change TargetLowering::getLoadExtAction to take an MVT, instead of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169840
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:32:56 +0000 (09:32 +0000)]
Change TargetLowering::setTypeAction to take an MVT, instead fo EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169839
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:31:43 +0000 (09:31 +0000)]
Change TargetLowering::getRepRegClassFor to take an MVT, instead of
EVT.
Accordingly, change RegDefIter to contain MVTs instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169838
91177308-0d34-0410-b5e6-
96231b3b80d8
Patrik Hagglund [Tue, 11 Dec 2012 09:10:33 +0000 (09:10 +0000)]
Change TargetLowering::getRegClassFor to take an MVT, instead of EVT.
Accordingly, add helper funtions getSimpleValueType (in parallel to
getValueType) in SDValue, SDNode, and TargetLowering.
This is the first, in a series of patches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169837
91177308-0d34-0410-b5e6-
96231b3b80d8
Hao Liu [Tue, 11 Dec 2012 06:25:18 +0000 (06:25 +0000)]
revert the test change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169823
91177308-0d34-0410-b5e6-
96231b3b80d8
Hao Liu [Tue, 11 Dec 2012 06:22:54 +0000 (06:22 +0000)]
A newbie try a test commit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169821
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 11 Dec 2012 05:53:54 +0000 (05:53 +0000)]
[CMake] Remove dependencies to intrinsics_gen I introduced in r169724.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169819
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 11 Dec 2012 05:53:43 +0000 (05:53 +0000)]
llvm/Target/TargetMachine.h: Remove two dependent headers.
-#include "llvm/Target/TargetTransformImpl.h"
-#include "llvm/TargetTransformInfo.h"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169818
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 11 Dec 2012 05:53:37 +0000 (05:53 +0000)]
llvm/tools: Add #include "llvm/TargetTransformInfo.h"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169817
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Tue, 11 Dec 2012 05:12:25 +0000 (05:12 +0000)]
Use multiclass for new-value store instructions with MEMri operand.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169814
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Tue, 11 Dec 2012 04:55:10 +0000 (04:55 +0000)]
Fix PR14565. Don't if-convert loops that have switch statements in them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169813
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 11 Dec 2012 03:10:43 +0000 (03:10 +0000)]
Change some functions to take const pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169812
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 11 Dec 2012 02:31:57 +0000 (02:31 +0000)]
Stylistic tweak.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169811
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 11 Dec 2012 00:51:36 +0000 (00:51 +0000)]
Add a triple to this test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169803
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 11 Dec 2012 00:36:57 +0000 (00:36 +0000)]
Fix a miscompile in the DAG combiner. Previously, we would incorrectly
try to reduce the width of this load, and would end up transforming:
(truncate (lshr (sextload i48 <ptr> as i64), 32) to i32)
to
(truncate (zextload i32 <ptr+4> as i64) to i32)
We lost the sext attached to the load while building the narrower i32
load, and replaced it with a zext because lshr always zext's the
results. Instead, bail out of this combine when there is a conflict
between a sextload and a zext narrowing. The rest of the DAG combiner
still optimize the code down to the proper single instruction:
movswl 6(...),%eax
Which is exactly what we wanted. Previously we read past the end *and*
missed the sign extension:
movl 6(...), %eax
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169802
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Redmond [Tue, 11 Dec 2012 00:36:43 +0000 (00:36 +0000)]
move X86-specific test
This test case uses -mcpu=corei7 so it belongs in CodeGen/X86
Reviewed by: Nadav
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169801
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 11 Dec 2012 00:23:07 +0000 (00:23 +0000)]
Fix grammar-o.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169798
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 11 Dec 2012 00:18:02 +0000 (00:18 +0000)]
Fall back to the selection dag isel to select tail calls.
This shouldn't affect codegen for -O0 compiles as tail call markers are not
emitted in unoptimized compiles. Testing with the external/internal nightly
test suite reveals no change in compile time performance. Testing with -O1,
-O2 and -O3 with fast-isel enabled did not cause any compile-time or
execution-time failures. All tests were performed on my x86 machine.
I'll monitor our arm testers to ensure no regressions occur there.
In an upcoming clang patch I will be marking the objc_autoreleaseReturnValue
and objc_retainAutoreleaseReturnValue as tail calls unconditionally. While
it's theoretically true that this is just an optimization, it's an
optimization that we very much want to happen even at -O0, or else ARC
applications become substantially harder to debug.
Part of rdar://
12553082
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169796
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 23:34:43 +0000 (23:34 +0000)]
Refactor out the abbreviation handling into a separate class that
controls each of the abbreviation sets (only a single one at the
moment) and computes offsets separately as well for each set
of DIEs.
No real function change, ordering of abbreviations for the skeleton
CU changed but only because we're computing in a separate order. Fix
the testcase not to care.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169793
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 10 Dec 2012 23:21:26 +0000 (23:21 +0000)]
Some enhancements for memcpy / memset inline expansion.
1. Teach it to use overlapping unaligned load / store to copy / set the trailing
bytes. e.g. On 86, use two pairs of movups / movaps for 17 - 31 byte copies.
2. Use f64 for memcpy / memset on targets where i64 is not legal but f64 is. e.g.
x86 and ARM.
3. When memcpy from a constant string, do *not* replace the load with a constant
if it's not possible to materialize an integer immediate with a single
instruction (required a new target hook: TLI.isIntImmLegal()).
4. Use unaligned load / stores more aggressively if target hooks indicates they
are "fast".
5. Update ARM target hooks to use unaligned load / stores. e.g. vld1.8 / vst1.8.
Also increase the threshold to something reasonable (8 for memset, 4 pairs
for memcpy).
This significantly improves Dhrystone, up to 50% on ARM iOS devices.
rdar://
12760078
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169791
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Mon, 10 Dec 2012 23:02:41 +0000 (23:02 +0000)]
Optimistically analyse Phi cycles
Analyse Phis under the starting assumption that they are NoAlias. Recursively
look at their inputs.
If they MayAlias/MustAlias there must be an input that makes them so.
Addresses bug 14351.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169788
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 10 Dec 2012 22:49:11 +0000 (22:49 +0000)]
Defer call to InitSections until after MCContext has been initialized. If
InitSections is called before the MCContext is initialized it could cause
duplicate temporary symbols to be emitted later (after context initialization
resets the temporary label counter).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169785
91177308-0d34-0410-b5e6-
96231b3b80d8
Anshuman Dasgupta [Mon, 10 Dec 2012 22:45:57 +0000 (22:45 +0000)]
Fix PR14568: Avoid the DFA packetizer from making an invalid read
beyond array bounds.
No test case since I cannot reproduce an ICE with this bug. According
to Carlos -- the bug reporter -- a segfault occurs only when LLVM is
compiled with a specific version of GCC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169783
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 22:25:41 +0000 (22:25 +0000)]
Rearrange vars and make comments more obvious.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169780
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 22:25:38 +0000 (22:25 +0000)]
Remove blank line at top of file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169779
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 22:00:20 +0000 (22:00 +0000)]
Fix a coding style nit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169776
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Mon, 10 Dec 2012 21:45:01 +0000 (21:45 +0000)]
Enable the loop vectorizer only on O2 and above. (Still disabled by default)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169774
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 10 Dec 2012 21:41:58 +0000 (21:41 +0000)]
LegalizeDAG: Allow type promotion of scalar loads
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169773
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 10 Dec 2012 21:41:54 +0000 (21:41 +0000)]
LegalizeDAG: Allow type promotion for scalar stores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169772
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Mon, 10 Dec 2012 21:39:02 +0000 (21:39 +0000)]
Split the LoopVectorizer into H and CPP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169771
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 10 Dec 2012 21:33:45 +0000 (21:33 +0000)]
Revert r169656.
The linker will call `lto_codegen_add_must_preserve_symbol' on all globals that
should be kept around. The linker will pretend that a dylib is being created.
<rdar://problem/
12528059>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169770
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 10 Dec 2012 20:36:01 +0000 (20:36 +0000)]
Add a test for explicitly exercising the mc-relax-all flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169764
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 10 Dec 2012 20:13:43 +0000 (20:13 +0000)]
Cleanup formatting, comments and naming.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169762
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Mon, 10 Dec 2012 20:04:40 +0000 (20:04 +0000)]
[mips] Set HWEncoding field of registers. Use delete function
getMipsRegisterNumbering and use MCRegisterInfo::getEncodingValue instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169760
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 19:51:21 +0000 (19:51 +0000)]
Use the somewhat semantic term "split dwarf" it more matches what's
going on and makes a lot of the terminology in comments make more sense.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169758
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 19:51:18 +0000 (19:51 +0000)]
Delete the FissionCU.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169757
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 10 Dec 2012 19:51:13 +0000 (19:51 +0000)]
Reorder fission variables.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169756
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 10 Dec 2012 19:46:49 +0000 (19:46 +0000)]
Don't use a red zone for code coverage if the user specified `-mno-red-zone'.
The `-mno-red-zone' flag wasn't being propagated to the functions that code
coverage generates. This allowed some of them to use the red zone when that
wasn't allowed.
<rdar://problem/
12843084>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169754
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Mon, 10 Dec 2012 19:25:06 +0000 (19:25 +0000)]
Add support for reverse induction variables. For example:
while (i--)
sum+=A[i];
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169752
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 10 Dec 2012 19:03:37 +0000 (19:03 +0000)]
CMake: Don't run 'git svn' if there is no .git/svn directory.
If the local checkout does not have 'git svn' references set up, don't try
to use 'git svn' for version information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169749
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 10 Dec 2012 18:59:39 +0000 (18:59 +0000)]
This patch adds statistics for other non-DWARF fragments emitted by
the assembler. This is useful in order to know how the numbers add up,
since in particular the Align fragments account for a non-trivial
portion of the emitted fragments (especially on -O0 which sets
relax-all).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169747
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 10 Dec 2012 18:49:16 +0000 (18:49 +0000)]
Use GetUnderlyingObjects in misched
misched used GetUnderlyingObject in order to break false load/store
dependencies, and the -enable-aa-sched-mi feature similarly relied on
GetUnderlyingObject in order to ensure it is safe to use the aliasing analysis.
Unfortunately, GetUnderlyingObject does not recurse through phi nodes, and so
(especially due to LSR) all of these mechanisms failed for
induction-variable-dependent loads and stores inside loops.
This change replaces uses of GetUnderlyingObject with GetUnderlyingObjects
(which will recurse through phi and select instructions) in misched.
Andy reviewed, tested and simplified this patch; Thanks!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169744
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Mon, 10 Dec 2012 18:37:26 +0000 (18:37 +0000)]
Fix funky copy-pasted grammatical error.
PR14343
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169742
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 10 Dec 2012 18:23:52 +0000 (18:23 +0000)]
Revert "Make '-mtune=x86_64' assume fast unaligned memory accesses."
Accidental commit... git svn betrayed me. Sorry for the noise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169741
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 10 Dec 2012 18:22:42 +0000 (18:22 +0000)]
Make '-mtune=x86_64' assume fast unaligned memory accesses.
Summary:
Not all chips targeted by x86_64 have this feature, but a dramatically
increasing number do. Specifying a chip-specific tuning parameter will
continue to turn the feature on or off as appropriate for that
particular chip, but the generic flag should try to achieve the best
performance on the most widely available hardware. Today, the number of
chips with fast UA access dwarfs those without in the x86-64 space.
Note that this also brings LLVM's code generation for this '-march' flag
more in line with that of modern GCCs.
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D195
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169740
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 10 Dec 2012 18:22:40 +0000 (18:22 +0000)]
Fix a typo in my previous commit -- bloomfield is 0x1A not 0x2A.
Thanks to the PaX folks for noticing in review! We need some tests here,
any sugestions welcome...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169739
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 10 Dec 2012 09:18:44 +0000 (09:18 +0000)]
Address a FIXME and update the fast unaligned memory feature for newer
Intel chips.
The model number rules were determined by inspecting Intel's
documentation for their newer chip model numbers. My understanding is
that all of the newer Intel chips have fast unaligned memory access, but
if anyone is concerned about a particular chip, just shout.
No tests updated; it's not clear we have dedicated tests for the chips'
various features, but if anyone would like tests (or can point me at
some existing ones), I'm happy to oblige.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169730
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 10 Dec 2012 08:28:39 +0000 (08:28 +0000)]
Add a new visitor for walking the uses of a pointer value.
This visitor provides infrastructure for recursively traversing the
use-graph of a pointer-producing instruction like an alloca or a malloc.
It maintains a worklist of uses to visit, so it can handle very deep
recursions. It automatically looks through instructions which simply
translate one pointer to another (bitcasts and GEPs). It tracks the
offset relative to the original pointer as long as that offset remains
constant and exposes it during the visit as an APInt offset. Finally, it
performs conservative escape analysis.
However, currently it has some limitations that should be addressed
going forward:
1) It doesn't handle vectors of pointers.
2) It doesn't provide a cheaper visitor when the constant offset
tracking isn't needed.
3) It doesn't support non-instruction pointer values.
The current functionality is exactly what is required to implement the
SROA pointer-use visitors in terms of this one, rather than in terms of
their own ad-hoc base visitor, which was always very poorly specified.
SROA has been converted to use this, and the code there deleted which
this utility now provides.
Technically speaking, using this new visitor allows SROA to handle a few
more cases than it previously did. It is now more aggressive in ignoring
chains of instructions which look like they would defeat SROA, but in
fact do not because they never result in a read or write of memory.
While this is "neat", it shouldn't be interesting for real programs as
any such chains should have been removed by others passes long before we
get to SROA. As a consequence, I've not added any tests for these
features -- it shouldn't be part of SROA's contract to perform such
heroics.
The goal is to extend the functionality of this visitor going forward,
and re-use it from passes like ASan that can benefit from doing
a detailed walk of the uses of a pointer.
Thanks to Ben Kramer for the code review rounds and lots of help
reviewing and debugging this patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169728
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 10 Dec 2012 08:12:29 +0000 (08:12 +0000)]
Teach DAG combine to handle vector add/sub with vectors of all 0s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169727
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 10 Dec 2012 07:14:29 +0000 (07:14 +0000)]
[CMake] TARGET_TRIPLE may be internal alias of LLVM_DEFAULT_TARGET_TRIPLE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169726
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Mon, 10 Dec 2012 05:27:15 +0000 (05:27 +0000)]
[CMake] Update dependencies to intrinsics_gen corresponding to r169711.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169724
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 10 Dec 2012 02:51:16 +0000 (02:51 +0000)]
Revert to old behavior until linker can pass export-dynamic option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169720
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Mon, 10 Dec 2012 00:54:45 +0000 (00:54 +0000)]
Fix PR14548: SROA was crashing on a mixture of i1 and i8 loads and stores.
When SROA was evaluating a mixture of i1 and i8 loads and stores, in
just a particular case, it would tickle a latent bug where we compared
bits to bytes rather than bits to bits. As a consequence of the latent
bug, we would allow integers through which were not byte-size multiples,
a situation the later rewriting code was never intended to handle.
In release builds this could trigger all manner of oddities, but the
reported issue in PR14548 was forming invalid bitcast instructions.
The only downside of this fix is that it makes it more clear that SROA
in its current form is not capable of handling mixed i1 and i8 loads and
stores. Sometimes with the previous code this would work by luck, but
usually it would crash, so I'm not terribly worried. I'll watch the LNT
numbers just to be sure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169719
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Sun, 9 Dec 2012 23:14:26 +0000 (23:14 +0000)]
Documentation: convert ReleaseNotes.html to reST.
Patch by Anthony Mykhailenko with small fixes by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169714
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Sun, 9 Dec 2012 21:12:04 +0000 (21:12 +0000)]
Reorganize FastMathFlags to be a wrapper around unsigned, and streamline some interfaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169712
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Redmond [Sun, 9 Dec 2012 20:42:17 +0000 (20:42 +0000)]
LoopVectorize: support vectorizing intrinsic calls
- added function to VectorTargetTransformInfo to query cost of intrinsics
- vectorize trivially vectorizable intrinsic calls such as sin, cos, log, etc.
Reviewed by: Nadav
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169711
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Sun, 9 Dec 2012 20:23:16 +0000 (20:23 +0000)]
Have the bitcode reader/writer just use FPMathOperator's fast math enum directly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169710
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Redmond [Sun, 9 Dec 2012 19:46:31 +0000 (19:46 +0000)]
test commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169709
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 9 Dec 2012 16:55:39 +0000 (16:55 +0000)]
So many people have touched this, it doesn't make sense to ascribe authorship anymore.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169704
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Sun, 9 Dec 2012 16:06:44 +0000 (16:06 +0000)]
Use m_OneUse pattern instead of hasOneUse() method.
No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169703
91177308-0d34-0410-b5e6-
96231b3b80d8
Sean Silva [Sun, 9 Dec 2012 15:52:47 +0000 (15:52 +0000)]
docs: Convert GarbageCollection.html to reST
Patch by Alexander Zinenko!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169702
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Sun, 9 Dec 2012 15:37:46 +0000 (15:37 +0000)]
Remove trailing spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169701
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Sun, 9 Dec 2012 15:33:26 +0000 (15:33 +0000)]
Documentation: HowToReleaseLLVM.rst: remove trailing whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169700
91177308-0d34-0410-b5e6-
96231b3b80d8
Dmitri Gribenko [Sun, 9 Dec 2012 15:29:56 +0000 (15:29 +0000)]
Documentation: don't create TOCs manually.
Thanks to Sean Silva for pointing out!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169699
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Sun, 9 Dec 2012 11:56:01 +0000 (11:56 +0000)]
Switch SROA to pop Uses off the back of its visitors' queues.
This will more closely match the behavior of the new PtrUseVisitor that
I am adding. Hopefully this will not change the actual behavior in any
way, but by making the processing order more similar help in debugging.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169697
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 9 Dec 2012 10:34:22 +0000 (10:34 +0000)]
Drop the address space limit for tests in the makefile build.
The limit seems to break newer pythons (see PR13598) so just drop it for now.
Eventually lit should learn to set limits for its children instead of a global
limit in the makefile.
If some PPC bots fail after this change: That's a good thing, they actually run
clang tests now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169695
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 9 Dec 2012 08:20:52 +0000 (08:20 +0000)]
Remove extra blank line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169692
91177308-0d34-0410-b5e6-
96231b3b80d8
Shuxin Yang [Sun, 9 Dec 2012 03:12:46 +0000 (03:12 +0000)]
- Re-enable population count loop idiom recognization
- fix a bug which cause sigfault.
- add two testing cases which was causing crash
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169687
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 8 Dec 2012 22:49:19 +0000 (22:49 +0000)]
Teach DAG combine to handle vector logical operations with vectors of all 1s or all 0s. These cases can show up when vectors are split for legalizing. Fix some tests that were dependent on these cases not being combined.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169684
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Sat, 8 Dec 2012 22:18:29 +0000 (22:18 +0000)]
Revert the patches adding a popcount loop idiom recognition pass.
There are still bugs in this pass, as well as other issues that are
being worked on, but the bugs are crashers that occur pretty easily in
the wild. Test cases have been sent to the original commit's review
thread.
This reverts the commits:
r169671: Fix a logic error.
r169604: Move the popcnt tests to an X86 subdirectory.
r168931: Initial commit adding the pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169683
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 8 Dec 2012 10:45:24 +0000 (10:45 +0000)]
Simplify code. Sort includes. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169676
91177308-0d34-0410-b5e6-
96231b3b80d8
Logan Chien [Sat, 8 Dec 2012 05:19:49 +0000 (05:19 +0000)]
Fix Windows build breakage.
Windows does not have <stdint.h>, should include
"llvm/Support/DataTypes.h" instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169672
91177308-0d34-0410-b5e6-
96231b3b80d8
Shuxin Yang [Sat, 8 Dec 2012 05:00:59 +0000 (05:00 +0000)]
Fix an inadvertent typo error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169671
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Sat, 8 Dec 2012 03:10:14 +0000 (03:10 +0000)]
Fix a use-after-free bug found by ASan. You can't assign a temporary
std::string to a StringRef. Moreover, the method being called accepts
a Twine to simplify these patterns.
Fixes this ASan failure:
==6312== ERROR: AddressSanitizer: heap-use-after-free on address 0x7fd558b1af58 at pc 0xcb7529 bp 0x7fffff572080 sp 0x7fffff572078
READ of size 1 at 0x7fd558b1af58 thread T0
#0 0xcb7528 .../llvm/include/llvm/ADT/StringRef.h:192 llvm::StringRef::operator[]()
#1 0x1d53c0a .../llvm/include/llvm/ADT/StringExtras.h:128 llvm::HashString()
#2 0x1d53878 .../llvm/lib/Support/StringMap.cpp:64 llvm::StringMapImpl::LookupBucketFor()
#3 0x1b6872f .../llvm/include/llvm/ADT/StringMap.h:352 llvm::StringMap<>::GetOrCreateValue<>()
#4 0x1b61836 .../llvm/lib/MC/MCContext.cpp:109 llvm::MCContext::GetOrCreateSymbol()
#5 0xe9fd47 .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:154 (anonymous namespace)::ARMELFStreamer::EmitMappingSymbol()
#6 0xea01dd .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:133 (anonymous namespace)::ARMELFStreamer::EmitDataMappingSymbol()
#7 0xe9f78b .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:91 (anonymous namespace)::ARMELFStreamer::EmitBytes()
#8 0x1b15d82 .../llvm/lib/MC/MCStreamer.cpp:89 llvm::MCStreamer::EmitIntValue()
#9 0xcc0f9b .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:713 llvm::ARMAsmPrinter::emitAttributes()
#10 0xcc0d44 .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:632 llvm::ARMAsmPrinter::EmitStartOfAsmFile()
#11 0x14692ad .../llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:162 llvm::AsmPrinter::doInitialization()
#12 0x1bc4677 .../llvm/lib/VMCore/PassManager.cpp:1561 llvm::FPPassManager::doInitialization()
#13 0x1bc4990 .../llvm/lib/VMCore/PassManager.cpp:1595 llvm::MPPassManager::runOnModule()
#14 0x1bc55e5 .../llvm/lib/VMCore/PassManager.cpp:1705 llvm::PassManagerImpl::run()
#15 0x1bc5878 .../llvm/lib/VMCore/PassManager.cpp:1740 llvm::PassManager::run()
#16 0xc3954d .../llvm/tools/llc/llc.cpp:378 compileModule()
#17 0xc38001 .../llvm/tools/llc/llc.cpp:194 main
#18 0x7fd557d6a11c __libc_start_main
0x7fd558b1af58 is located 24 bytes inside of 29-byte region [0x7fd558b1af40,0x7fd558b1af5d)
freed by thread T0 here:
#0 0xc337da .../llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:56 operator delete()
#1 0x1ee9cef .../libstdc++-v3/include/bits/basic_string.h:535 std::string::~string()
#2 0xea01dd .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:133 (anonymous namespace)::ARMELFStreamer::EmitDataMappingSymbol()
#3 0xe9f78b .../llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp:91 (anonymous namespace)::ARMELFStreamer::EmitBytes()
#4 0x1b15d82 .../llvm/lib/MC/MCStreamer.cpp:89 llvm::MCStreamer::EmitIntValue()
#5 0xcc0f9b .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:713 llvm::ARMAsmPrinter::emitAttributes()
#6 0xcc0d44 .../llvm/lib/Target/ARM/ARMAsmPrinter.cpp:632 llvm::ARMAsmPrinter::EmitStartOfAsmFile()
#7 0x14692ad .../llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:162 llvm::AsmPrinter::doInitialization()
#8 0x1bc4677 .../llvm/lib/VMCore/PassManager.cpp:1561 llvm::FPPassManager::doInitialization()
#9 0x1bc4990 .../llvm/lib/VMCore/PassManager.cpp:1595 llvm::MPPassManager::runOnModule()
#10 0x1bc55e5 .../llvm/lib/VMCore/PassManager.cpp:1705 llvm::PassManagerImpl::run()
#11 0x1bc5878 .../llvm/lib/VMCore/PassManager.cpp:1740 llvm::PassManager::run()
#12 0xc3954d .../llvm/tools/llc/llc.cpp:378 compileModule()
#13 0xc38001 .../llvm/tools/llc/llc.cpp:194 main
#14 0x7fd557d6a11c __libc_start_main
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169668
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sat, 8 Dec 2012 00:18:16 +0000 (00:18 +0000)]
Add the `lto_codegen_set_export_dynamic' function.
This function sets the `_exportDynamic' ivar. When that's set, we export all
symbols (e.g. we don't run the internalize pass). This is equivalent to the
`--export-dynamic' linker flag in GNU land:
--export-dynamic
When creating a dynamically linked executable, add all symbols to the dynamic
symbol table. The dynamic symbol table is the set of symbols which are visible
from dynamic objects at run time. If you do not use this option, the dynamic
symbol table will normally contain only those symbols which are referenced by
some dynamic object mentioned in the link. If you use dlopen to load a dynamic
object which needs to refer back to the symbols defined by the program, rather
than some other dynamic object, then you will probably need to use this option
when linking the program itself.
The Darwin linker will support this via the `-export_dynamic' flag. We should
modify clang to support this via the `-rdynamic' flag.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169656
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 7 Dec 2012 23:53:27 +0000 (23:53 +0000)]
Add C API for specifying CPU to the disassembler.
It was a nasty oversight that we didn't include this when we added this
API in the first place. Blech.
rdar://
12839439
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169653
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 7 Dec 2012 23:16:57 +0000 (23:16 +0000)]
s/AttrListPtr/AttributeSet/g to better label what this class is going to be in the near future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169651
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 7 Dec 2012 22:06:56 +0000 (22:06 +0000)]
Make the contents of encoded sections SmallVector<char, N> instead of
SmallString. This makes it possible to use the length-erased SmallVectorImpl
in the interface without imposing buffer size. Thus, the size of MCInstFragment
is back down since a preallocated 8-byte contents buffer is enough.
It would be generally a good idea to rid all the fragments of SmallString as
contents, because a vector just makes more sense.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169644
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Fri, 7 Dec 2012 21:43:11 +0000 (21:43 +0000)]
When we use the BLEND instruction that uses the MSB as a mask, we can remove
the VSRI instruction before it since it does not affect the MSB.
Thanks Craig Topper for suggesting this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169638
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Fri, 7 Dec 2012 21:41:53 +0000 (21:41 +0000)]
Remove trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169637
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthew Curtis [Fri, 7 Dec 2012 21:03:15 +0000 (21:03 +0000)]
In hexagon convertToHardwareLoop, don't deref end() iterator
In particular, check if MachineBasicBlock::iterator is end() before
using it to call getDebugLoc();
See also this thread on llvm-commits:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-
20121112/155914.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169634
91177308-0d34-0410-b5e6-
96231b3b80d8
Ted Kremenek [Fri, 7 Dec 2012 19:44:12 +0000 (19:44 +0000)]
Mark ImmutableMap::remove/add() const.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169629
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Fri, 7 Dec 2012 19:21:10 +0000 (19:21 +0000)]
Fixed some grammar and punctuation error.
No content changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169627
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 7 Dec 2012 19:13:57 +0000 (19:13 +0000)]
Refactor MCInstFragment and MCDataFragment to adhere to a common interface,
which removes code duplication and prepares the ground for future additions.
Full discussion:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-
20121203/158233.html
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169626
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Fri, 7 Dec 2012 19:01:13 +0000 (19:01 +0000)]
X86: Prefer using VPSHUFD over VPERMIL because it has better throughput.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169624
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 7 Dec 2012 17:59:21 +0000 (17:59 +0000)]
Add separate statistics for Data and Inst fragments emitted during relaxation.
Also fixes a test that was overly-sensitive to the exact order of statistics
emitted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169619
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 7 Dec 2012 17:55:28 +0000 (17:55 +0000)]
Some common functionality from WinCOFFStreamer::EmitAssignment can be now
delegated to MCObjectStreamer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169617
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 7 Dec 2012 17:42:41 +0000 (17:42 +0000)]
Lift EmitAssignment into MCObjectStreamer which gets rid of at least three
duplicate implementations in format-specific streamers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169613
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Fri, 7 Dec 2012 16:50:23 +0000 (16:50 +0000)]
Added Mapping Symbols for ARM ELF
Before this patch, when you objdump an LLVM-compiled file, objdump tried to
decode data-in-code sections as if they were code. This patch adds the missing
Mapping Symbols, as defined by "ELF for the ARM Architecture" (ARM IHI 0044D).
Patch based on work by Greg Fitzgerald.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169609
91177308-0d34-0410-b5e6-
96231b3b80d8