Pekka Jaaskelainen [Tue, 23 Apr 2013 08:08:51 +0000 (08:08 +0000)]
Refuse to (even try to) vectorize loops which have uniform writes,
even if erroneously annotated with the parallel loop metadata.
Fixes Bug 15794:
"Loop Vectorizer: Crashes with the use of llvm.loop.parallel metadata"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180081
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Tue, 23 Apr 2013 06:55:15 +0000 (06:55 +0000)]
AArch64: remove unnecessary check that RS is valid
AArch64 always demands a register-scavenger, so the pointer should never be
NULL. However, in the spirit of paranoia, we'll assert it before use just in
case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180080
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Mon, 22 Apr 2013 23:00:44 +0000 (23:00 +0000)]
Struct-path aware TBAA: update getMostGenericTBAA
The tag is of type TBAANode when flag EnableStructPathTBAA is off.
Move implementation of MDNode::getMostGenericTBAA to TypeBasedAliasAnalysis.cpp
since it depends on how to interprete the MDNodes for scalar TBAA and
struct-path aware TBAA.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180068
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Mon, 22 Apr 2013 22:51:55 +0000 (22:51 +0000)]
Revert "Add a missing reference on a std::vector<> out param"
Revert "[Support] Propagate the environment into the test child process"
This reverts commit r180046.
This reverts commit r180041.
These have broken buildbots for ~3 hours:
http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/763
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180066
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Mon, 22 Apr 2013 22:49:11 +0000 (22:49 +0000)]
Remove unused DwarfSectionOffsetDirective string
The value isn't actually used, and setting it emits a COFF specific
directive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180064
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 22:47:22 +0000 (22:47 +0000)]
Move C++ code out of the C headers and into either C++ headers
or the C++ files themselves. This enables people to use
just a C compiler to interoperate with LLVM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180063
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 22 Apr 2013 22:38:35 +0000 (22:38 +0000)]
[ms-inline asm] Removed this unnecessary check. In the current implementation,
Disp will always be one of MCSymbolRefExpr or MCConstantExpr, and never NULL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180059
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 22 Apr 2013 22:30:01 +0000 (22:30 +0000)]
Add test case for PR15779, which has previously been fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180058
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 22 Apr 2013 22:12:12 +0000 (22:12 +0000)]
[ms-inline asm] Get the OpDecl and remove a redundant lookup.
Part of rdar://
13663589
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180057
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 22 Apr 2013 22:04:25 +0000 (22:04 +0000)]
[ms-inline asm] Add the OpDecl to the InlineAsmIdentifierInfo struct and in turn
the MCParsedAsmOperand.
Part of rdar://
13663589
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180054
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 22 Apr 2013 21:21:08 +0000 (21:21 +0000)]
Optimize MachineBasicBlock::getSymbol by caching the symbol. Since the symbol
name computation is expensive, this helps save about 25% of the time spent in
this function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180049
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 22 Apr 2013 20:58:09 +0000 (20:58 +0000)]
Add a missing reference on a std::vector<> out param
Pointed out by Eli. The test passes for me either way, so I missed
this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180046
91177308-0d34-0410-b5e6-
96231b3b80d8
Anat Shemer [Mon, 22 Apr 2013 20:51:10 +0000 (20:51 +0000)]
Changed back (relative to commit 179786) the operations executed when extract(cast) is transformed to cast(extract). It uses the Builder class as before. In addition the result node is added to the Worklist, so all the previous extract users will become the new scalar cast users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180045
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 22 Apr 2013 20:42:32 +0000 (20:42 +0000)]
Fix unused variable warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180044
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 22 Apr 2013 20:30:50 +0000 (20:30 +0000)]
Fix comment that didn't match the method it was above
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180043
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 22 Apr 2013 20:23:41 +0000 (20:23 +0000)]
[Support] Propagate the environment into the test child process
Should fix the dragonegg bootstrap builder, which reasonably needs
LD_LIBRARY_PATH to be set.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180041
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Mon, 22 Apr 2013 20:13:37 +0000 (20:13 +0000)]
80 columns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180040
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Mon, 22 Apr 2013 19:58:23 +0000 (19:58 +0000)]
[mips] In performDSPShiftCombine, check that all elements in the vector are
shifted by the same amount and the shift amount is smaller than the element
size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180039
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 22 Apr 2013 19:42:15 +0000 (19:42 +0000)]
[ms-inline asm] Remove the identifier parsing logic from the AsmParser. This is
now taken care of by the frontend, which allows us to parse arbitrary C/C++
variables.
Part of rdar://
13663589
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180037
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 22 Apr 2013 19:03:55 +0000 (19:03 +0000)]
[Support] Fix argv string escape bug on Windows
Summary:
This is http://llvm.org/PR15802. Backslashes preceding double quotes in
arguments must be escaped. The interesting bit is that all other
backslashes should *not* be escaped, because the un-escaping logic is
only triggered by the presence of a double quote character.
Reviewers: Bigcheese
CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D705
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180035
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Mon, 22 Apr 2013 18:48:56 +0000 (18:48 +0000)]
COFF: Fix weak external aliases.
Differential Revision: http://llvm-reviews.chandlerc.com/D700
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180034
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Lin [Mon, 22 Apr 2013 17:23:49 +0000 (17:23 +0000)]
Extra paranoid test for r179925 (verify that tail calls are not generated to 'this'-returning constructors of objects with different 'this' pointers than the caller)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180032
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 22 Apr 2013 17:16:35 +0000 (17:16 +0000)]
Document the -filetype option of llc (PR #12902)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180031
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 22 Apr 2013 17:03:42 +0000 (17:03 +0000)]
Fix for PR 14965: Better error message for GEP with partially defined contents
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180030
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 22 Apr 2013 17:01:46 +0000 (17:01 +0000)]
[ms-inline asm] Refactor/clean up the SemaLookup interface. No functional
change indended.
Part of rdar://
13663589
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180028
91177308-0d34-0410-b5e6-
96231b3b80d8
Jia Liu [Mon, 22 Apr 2013 16:26:15 +0000 (16:26 +0000)]
Add AArch64 into $llvm_cv_target_arch in configure, reviewed by Tim Northover & Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180025
91177308-0d34-0410-b5e6-
96231b3b80d8
Jia Liu [Mon, 22 Apr 2013 15:40:16 +0000 (15:40 +0000)]
typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180023
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 22 Apr 2013 15:21:03 +0000 (15:21 +0000)]
Make doxygen comment match declaration.
Found by -Wdocumentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180021
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 22 Apr 2013 15:16:51 +0000 (15:16 +0000)]
Also verify llvm.compiler_used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180020
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 22 Apr 2013 14:58:02 +0000 (14:58 +0000)]
Clarify that llvm.used can contain aliases.
Also add a check for llvm.used in the verifier and simplify clients now that
they can assume they have a ConstantArray.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180019
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 14:11:25 +0000 (14:11 +0000)]
No really, don't store anything to this since it's unconditionally
set below.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180015
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 13:51:44 +0000 (13:51 +0000)]
Remove variable store that is never read.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180014
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 13:46:33 +0000 (13:46 +0000)]
Remove variable store that is never read.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180013
91177308-0d34-0410-b5e6-
96231b3b80d8
Stepan Dyatkovskiy [Mon, 22 Apr 2013 13:06:52 +0000 (13:06 +0000)]
Fix for 5.5 Parameter Passing --> Stage C:
-- C.4 and C.5 statements, when NSAA is not equal to SP.
-- C.1.cp statement for VA functions. Note: There are no VFP CPRCs in a
variadic procedure.
Before this patch "NSAA != 0" means "don't use GPRs anymore ". But there are
some exceptions in AAPCS.
1. For non VA function: allocate all VFP regs for CPRC. When all VFPs are allocated
CPRCs would be sent to stack, while non CPRCs may be still allocated in GRPs.
2. Check that for VA functions all params uses GPRs and then stack.
No exceptions, no CPRCs here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180011
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 10:45:06 +0000 (10:45 +0000)]
Add .ll as a valid test suffix for Object, this allows .ll -> object
and then dumping as tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180010
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 10:27:32 +0000 (10:27 +0000)]
Add the same todo about a command iterator interface into the
other mach-o object file as well.
TODO: One interface to rule them all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180009
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 10:25:25 +0000 (10:25 +0000)]
Add a TODO about wanting an iterator interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180008
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Rieck [Mon, 22 Apr 2013 08:35:11 +0000 (08:35 +0000)]
llvm-readobj: Dump more COFF auxiliary records
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180007
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Rieck [Mon, 22 Apr 2013 08:34:59 +0000 (08:34 +0000)]
llvm-readobj: Check for null section pointer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180006
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Rieck [Mon, 22 Apr 2013 08:34:46 +0000 (08:34 +0000)]
llvm-readobj: Do not print NULL StringRefs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180005
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnaud A. de Grandmaison [Mon, 22 Apr 2013 08:02:43 +0000 (08:02 +0000)]
Cleanup: test source files do not need to be executable
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180003
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 07:51:08 +0000 (07:51 +0000)]
Tidy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180000
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 22 Apr 2013 07:47:40 +0000 (07:47 +0000)]
Update comment. Whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179999
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Mon, 22 Apr 2013 06:12:31 +0000 (06:12 +0000)]
Revert "Revert "PR14606: debug info imported_module support""
This reverts commit r179840 with a fix to test/DebugInfo/two-cus-from-same-file.ll
I'm not sure why that test only failed on ARM & MIPS and not X86 Linux, even
though the debug info was clearly invalid on all of them, but this ought to fix
it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179996
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 22 Apr 2013 05:38:01 +0000 (05:38 +0000)]
Convert windows line endings to linux/unix line endings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179995
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 22 Apr 2013 04:24:02 +0000 (04:24 +0000)]
Fix indentation. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179994
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 22 Apr 2013 04:22:40 +0000 (04:22 +0000)]
Put 'else' on same line as preceding curly brace per coding standards. No functional change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179993
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 22 Apr 2013 04:06:59 +0000 (04:06 +0000)]
Remove an unreachable 'break' following a 'return'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179991
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sun, 21 Apr 2013 23:47:41 +0000 (23:47 +0000)]
Legalize vector truncates by parts rather than just splitting.
Rather than just splitting the input type and hoping for the best, apply
a bit more cleverness. Just splitting the types until the source is
legal often leads to an illegal result time, which is then widened and a
scalarization step is introduced which leads to truly horrible code
generation. With the loop vectorizer, these sorts of operations are much
more common, and so it's worth extra effort to do them well.
Add a legalization hook for the operands of a TRUNCATE node, which will
be encountered after the result type has been legalized, but if the
operand type is still illegal. If simple splitting of both types
ends up with the result type of each half still being legal, just
do that (v16i16 -> v16i8 on ARM, for example). If, however, that would
result in an illegal result type (v8i32 -> v8i8 on ARM, for example),
we can get more clever with power-two vectors. Specifically,
split the input type, but also widen the result element size, then
concatenate the halves and truncate again. For example on ARM,
To perform a "%res = v8i8 trunc v8i32 %in" we transform to:
%inlo = v4i32 extract_subvector %in, 0
%inhi = v4i32 extract_subvector %in, 4
%lo16 = v4i16 trunc v4i32 %inlo
%hi16 = v4i16 trunc v4i32 %inhi
%in16 = v8i16 concat_vectors v4i16 %lo16, v4i16 %hi16
%res = v8i8 trunc v8i16 %in16
This allows instruction selection to generate three VMOVN instructions
instead of a sequences of moves, stores and loads.
Update the ARMTargetTransformInfo to take this improved legalization
into account.
Consider the simplified IR:
define <16 x i8> @test1(<16 x i32>* %ap) {
%a = load <16 x i32>* %ap
%tmp = trunc <16 x i32> %a to <16 x i8>
ret <16 x i8> %tmp
}
define <8 x i8> @test2(<8 x i32>* %ap) {
%a = load <8 x i32>* %ap
%tmp = trunc <8 x i32> %a to <8 x i8>
ret <8 x i8> %tmp
}
Previously, we would generate the truly hideous:
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _test1
.align 2
_test1: @ @test1
@ BB#0:
push {r7}
mov r7, sp
sub sp, sp, #20
bic sp, sp, #7
add r1, r0, #48
add r2, r0, #32
vld1.64 {d24, d25}, [r0:128]
vld1.64 {d16, d17}, [r1:128]
vld1.64 {d18, d19}, [r2:128]
add r1, r0, #16
vmovn.i32 d22, q8
vld1.64 {d16, d17}, [r1:128]
vmovn.i32 d20, q9
vmovn.i32 d18, q12
vmov.u16 r0, d22[3]
strb r0, [sp, #15]
vmov.u16 r0, d22[2]
strb r0, [sp, #14]
vmov.u16 r0, d22[1]
strb r0, [sp, #13]
vmov.u16 r0, d22[0]
vmovn.i32 d16, q8
strb r0, [sp, #12]
vmov.u16 r0, d20[3]
strb r0, [sp, #11]
vmov.u16 r0, d20[2]
strb r0, [sp, #10]
vmov.u16 r0, d20[1]
strb r0, [sp, #9]
vmov.u16 r0, d20[0]
strb r0, [sp, #8]
vmov.u16 r0, d18[3]
strb r0, [sp, #3]
vmov.u16 r0, d18[2]
strb r0, [sp, #2]
vmov.u16 r0, d18[1]
strb r0, [sp, #1]
vmov.u16 r0, d18[0]
strb r0, [sp]
vmov.u16 r0, d16[3]
strb r0, [sp, #7]
vmov.u16 r0, d16[2]
strb r0, [sp, #6]
vmov.u16 r0, d16[1]
strb r0, [sp, #5]
vmov.u16 r0, d16[0]
strb r0, [sp, #4]
vldmia sp, {d16, d17}
vmov r0, r1, d16
vmov r2, r3, d17
mov sp, r7
pop {r7}
bx lr
.globl _test2
.align 2
_test2: @ @test2
@ BB#0:
push {r7}
mov r7, sp
sub sp, sp, #12
bic sp, sp, #7
vld1.64 {d16, d17}, [r0:128]
add r0, r0, #16
vld1.64 {d20, d21}, [r0:128]
vmovn.i32 d18, q8
vmov.u16 r0, d18[3]
vmovn.i32 d16, q10
strb r0, [sp, #3]
vmov.u16 r0, d18[2]
strb r0, [sp, #2]
vmov.u16 r0, d18[1]
strb r0, [sp, #1]
vmov.u16 r0, d18[0]
strb r0, [sp]
vmov.u16 r0, d16[3]
strb r0, [sp, #7]
vmov.u16 r0, d16[2]
strb r0, [sp, #6]
vmov.u16 r0, d16[1]
strb r0, [sp, #5]
vmov.u16 r0, d16[0]
strb r0, [sp, #4]
ldm sp, {r0, r1}
mov sp, r7
pop {r7}
bx lr
Now, however, we generate the much more straightforward:
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _test1
.align 2
_test1: @ @test1
@ BB#0:
add r1, r0, #48
add r2, r0, #32
vld1.64 {d20, d21}, [r0:128]
vld1.64 {d16, d17}, [r1:128]
add r1, r0, #16
vld1.64 {d18, d19}, [r2:128]
vld1.64 {d22, d23}, [r1:128]
vmovn.i32 d17, q8
vmovn.i32 d16, q9
vmovn.i32 d18, q10
vmovn.i32 d19, q11
vmovn.i16 d17, q8
vmovn.i16 d16, q9
vmov r0, r1, d16
vmov r2, r3, d17
bx lr
.globl _test2
.align 2
_test2: @ @test2
@ BB#0:
vld1.64 {d16, d17}, [r0:128]
add r0, r0, #16
vld1.64 {d18, d19}, [r0:128]
vmovn.i32 d16, q8
vmovn.i32 d17, q9
vmovn.i16 d16, q8
vmov r0, r1, d16
bx lr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179989
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sun, 21 Apr 2013 23:47:37 +0000 (23:47 +0000)]
ARM: Split out cost model vcvt testcases.
They had a separate RUN line already, so may as well be in a separate file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179988
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sun, 21 Apr 2013 21:36:49 +0000 (21:36 +0000)]
Passing arguments to varags functions under the SPARC v9 ABI.
Arguments after the fixed arguments never use the floating point
registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179987
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sun, 21 Apr 2013 21:23:01 +0000 (21:23 +0000)]
Tidy up comment grammar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179986
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sun, 21 Apr 2013 21:18:03 +0000 (21:18 +0000)]
Fix the SETHIimm pattern for 64-bit code.
Don't ignore the high 32 bits of the immediate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179985
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Lin [Sun, 21 Apr 2013 18:05:20 +0000 (18:05 +0000)]
Remove unused, undefined ArgFlagsTy::getArgFlagsString; add a comment about 'returned'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179983
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 21 Apr 2013 17:48:39 +0000 (17:48 +0000)]
SROA: Don't crash on a select with two identical operands.
This is an edge case that can happen if we modify a chain of multiple selects.
Update all operands in that case and remove the assert. PR15805.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179982
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sun, 21 Apr 2013 13:09:04 +0000 (13:09 +0000)]
Revert "SimplifyCFG: If convert single conditional stores"
There is the temptation to make this tranform dependent on target information as
it is not going to be beneficial on all (sub)targets. Therefore, we should
probably do this in MI Early-Ifconversion.
This reverts commit r179957. Original commit message:
"SimplifyCFG: If convert single conditional stores
This transformation will transform a conditional store with a preceeding
uncondtional store to the same location:
a[i] =
may-alias with a[i] load
if (cond)
a[i] = Y
into an unconditional store.
a[i] = X
may-alias with a[i] load
tmp = cond ? Y : X;
a[i] = tmp
We assume that on average the cost of a mispredicted branch is going to be
higher than the cost of a second store to the same location, and that the
secondary benefits of creating a bigger basic block for other optimizations to
work on outway the potential case were the branch would be correctly predicted
and the cost of the executing the second store would be noticably reflected in
performance.
hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With
this change we are on par with gcc's performance (gcc also performs this
transformation). There was a 1.2 % performance improvement on a ARM swift chip.
Other tests in the test-suite+external seem to be mostly uninfluenced in my
experiments:
This optimization was triggered on 41 tests such that the executable was
different before/after the patch. Only 1 out of the 40 tests (dealII) was
reproducable below 100% (by about .4%). Given that hmmer benefits so much I
believe this to be a fair trade off.
I am going to watch performance numbers across the builtbots and will revert
this if anything unexpected comes up."
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179980
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Sun, 21 Apr 2013 12:20:19 +0000 (12:20 +0000)]
ARM: fix part of test which actually needed an asserts build
This should fix a buildbot failure that occurred after r179977.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179978
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Sun, 21 Apr 2013 11:57:07 +0000 (11:57 +0000)]
ARM: Use ldrd/strd to spill 64-bit pairs when available.
This allows common sp-offsets to be part of the instruction and is
probably faster on modern CPUs too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179977
91177308-0d34-0410-b5e6-
96231b3b80d8
Sylvestre Ledru [Sun, 21 Apr 2013 09:04:59 +0000 (09:04 +0000)]
Remove the executable bit on cmake files
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179976
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sun, 21 Apr 2013 08:05:59 +0000 (08:05 +0000)]
SLPVectorize: Add support for vectorization of casts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179975
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sun, 21 Apr 2013 07:37:56 +0000 (07:37 +0000)]
SLPVectorizer: Fix a bug in the code that scans the tree in search of nodes with multiple users.
We did not terminate the switch case and we executed the search routine twice.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179974
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 02:59:44 +0000 (02:59 +0000)]
[objc-arc] Cleaned up tail-call-invariant-enforcement.ll.
Specifically:
1. Added checks that unwind is being properly added to various instructions.
2. Fixed the declaration/calling of objc_release to have a return type of void.
3. Moved all checks to precede the functions and added checks to ensure that the
checks would only match inside the specific function that we are attempting to
check.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179973
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 01:57:46 +0000 (01:57 +0000)]
[objc-arc] Check that objc-arc-expand properly handles all strictly forwarding calls and does not touch calls which are not strictly forwarding (i.e. objc_retainBlock).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179972
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 01:42:24 +0000 (01:42 +0000)]
[objc-arc] Renamed the test file clang-arc-used-intrinsic-removed-if-isolated.ll -> intrinsic-use-isolated.ll to match the other test file intrinsic-use.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179971
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sun, 21 Apr 2013 01:38:25 +0000 (01:38 +0000)]
Remove tbaa metadata.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179970
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 00:50:27 +0000 (00:50 +0000)]
When we strength reduce an objc_retainBlock call to objc_retain, increment NumPeeps and make sure that Changed is set to true.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179968
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 00:44:46 +0000 (00:44 +0000)]
Fixed comment typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179967
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 00:30:50 +0000 (00:30 +0000)]
[objc-arc] Fixed typo in debug message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179966
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 00:25:04 +0000 (00:25 +0000)]
[objc-arc] Fixed comment typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179965
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sun, 21 Apr 2013 00:25:01 +0000 (00:25 +0000)]
[objc-arc] Refactored OptimizeReturns so that it uses continue instead of a large multi-level nested if statement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179964
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sat, 20 Apr 2013 23:36:57 +0000 (23:36 +0000)]
[objc-arc] Added debug statement saying when we are resetting a sequence's progress.
This will make it clearer when we are actually resetting a sequence's progress
vs just changing state. This is an important distinction because the former case
clears any pointers that we are tracking while the later does not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179963
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sat, 20 Apr 2013 22:49:16 +0000 (22:49 +0000)]
Compile varargs functions for SPARCv9.
With a little help from the frontend, it looks like the standard va_*
intrinsics can do the job.
Also clean up an old bitcast hack in LowerVAARG that dealt with
unaligned double loads. Load SDNodes can specify an alignment now.
Still missing: Calling varargs functions with float arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179961
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 22:29:43 +0000 (22:29 +0000)]
Fix PR15800. Do not try to vectorize vectors and structs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179960
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sat, 20 Apr 2013 21:42:09 +0000 (21:42 +0000)]
SimplifyCFG: If convert single conditional stores
This transformation will transform a conditional store with a preceeding
uncondtional store to the same location:
a[i] =
may-alias with a[i] load
if (cond)
a[i] = Y
into an unconditional store.
a[i] = X
may-alias with a[i] load
tmp = cond ? Y : X;
a[i] = tmp
We assume that on average the cost of a mispredicted branch is going to be
higher than the cost of a second store to the same location, and that the
secondary benefits of creating a bigger basic block for other optimizations to
work on outway the potential case were the branch would be correctly predicted
and the cost of the executing the second store would be noticably reflected in
performance.
hmmer's execution time improves by 30% on an imac12,2 on ref data sets. With
this change we are on par with gcc's performance (gcc also performs this
transformation). There was a 1.2 % performance improvement on a ARM swift chip.
Other tests in the test-suite+external seem to be mostly uninfluenced in my
experiments:
This optimization was triggered on 41 tests such that the executable was
different before/after the patch. Only 1 out of the 40 tests (dealII) was
reproducable below 100% (by about .4%). Given that hmmer benefits so much I
believe this to be a fair trade off.
I am going to watch performance numbers across the builtbots and will revert
this if anything unexpected comes up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179957
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Sat, 20 Apr 2013 19:31:00 +0000 (19:31 +0000)]
ARM: don't add FrameIndex offset for LDMIA (has no immediate)
Previously, when spilling 64-bit paired registers, an LDMIA with both
a FrameIndex and an offset was produced. This kind of instruction
shouldn't exist, and the extra operand was being confused with the
predicate, causing aborts later on.
This removes the invalid 0-offset from the instruction being
produced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179956
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Sat, 20 Apr 2013 17:39:52 +0000 (17:39 +0000)]
recommit tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179955
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Lin [Sat, 20 Apr 2013 16:21:26 +0000 (16:21 +0000)]
Minor renaming of tests (for consistency with an in-development patch)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179954
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Sat, 20 Apr 2013 15:57:41 +0000 (15:57 +0000)]
AArch64: remove useless comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179952
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Lin [Sat, 20 Apr 2013 13:16:13 +0000 (13:16 +0000)]
Move 'kw_align' case to proper section, reorganize function attribute keyword case statements to be consistent with r179119
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179948
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Sat, 20 Apr 2013 12:32:43 +0000 (12:32 +0000)]
Remove unused ShouldFoldAtomicFences flag.
I think it's almost impossible to fold atomic fences profitably under
LLVM/C++11 semantics. As a result, this is now unused and just
cluttering up the target interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179940
91177308-0d34-0410-b5e6-
96231b3b80d8
Tim Northover [Sat, 20 Apr 2013 12:32:17 +0000 (12:32 +0000)]
Remove unused MEMBARRIER DAG node; it's been replaced by ATOMIC_FENCE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179939
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 20 Apr 2013 11:06:34 +0000 (11:06 +0000)]
Remove dead code.
This is part of a future patch to use yamlio that incorrectly ended up in a
cleanup patch.
Thanks to Benjamin Kramer for reporting it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179938
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 20 Apr 2013 10:43:40 +0000 (10:43 +0000)]
Don't litter .s files in test directory.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179937
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 20 Apr 2013 10:36:17 +0000 (10:36 +0000)]
VecUtils: Clean up uses of dyn_cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179936
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 20 Apr 2013 09:49:10 +0000 (09:49 +0000)]
SLPVectorizer: Strength reduce SmallVectors to ArrayRefs.
Avoids a couple of copies and allows more flexibility in the clients.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179935
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 07:29:34 +0000 (07:29 +0000)]
SLPVectorizer: Reduce the compile time by eliminating the search for some of the more expensive patterns. After this change will only check basic arithmetic trees that start at cmpinstr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179933
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 07:22:58 +0000 (07:22 +0000)]
refactor tryToVectorizePair to a new method that supports vectorization of lists.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179932
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 06:40:28 +0000 (06:40 +0000)]
Fix an unused variable warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179931
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 06:13:47 +0000 (06:13 +0000)]
SLPVectorizer: Improve the cost model for loop invariant broadcast values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179930
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 05:23:11 +0000 (05:23 +0000)]
Report the number of stores that were found in the debug message.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179929
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 05:18:51 +0000 (05:18 +0000)]
Fix the header comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179928
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 20 Apr 2013 05:17:47 +0000 (05:17 +0000)]
Use 64bit arithmetic for calculating distance between pointers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179927
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Sat, 20 Apr 2013 05:16:26 +0000 (05:16 +0000)]
Move PPC getSwappedPredicate for reuse
The getSwappedPredicate function can be used in other places (such as in
improvements to the PPCCTRLoops pass). Instead of trapping it as a static
function in PPCInstrInfo, move it into PPCPredicates with other
predicate-related things.
No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179926
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Lin [Sat, 20 Apr 2013 05:14:40 +0000 (05:14 +0000)]
Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179925
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Lin [Sat, 20 Apr 2013 04:27:51 +0000 (04:27 +0000)]
Allow tail call opportunity detection through nested and/or multiple iterations of extractelement/insertelement indirection
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179924
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 20 Apr 2013 03:33:09 +0000 (03:33 +0000)]
These can be void.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179923
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 20 Apr 2013 03:16:59 +0000 (03:16 +0000)]
Rename obj2yaml local namespace to avoid conflicts with llvm::yaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179922
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 20 Apr 2013 03:13:00 +0000 (03:13 +0000)]
Remove local namespace yaml to avoid confusion with llvm::yaml.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179921
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 20 Apr 2013 02:55:00 +0000 (02:55 +0000)]
Small obj2yaml cleanups.
* using namespace llvm.
* whitespace.
* early return.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179920
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sat, 20 Apr 2013 02:02:25 +0000 (02:02 +0000)]
Remove COFFYAML::Header.
Instead, use MappingNormalization to directly parse COFF::header. Also change
the naming convention of the helper classes to be a bit shorter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179917
91177308-0d34-0410-b5e6-
96231b3b80d8