Manman Ren [Wed, 2 May 2012 15:24:32 +0000 (15:24 +0000)]
Revert r155853
The commit is intended to fix rdar://
10961709.
But it is the root cause of PR12720.
Revert it for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155992
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Wed, 2 May 2012 13:12:19 +0000 (13:12 +0000)]
[tsan] typo and style (thanks to Nick Lewycky)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155986
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Wed, 2 May 2012 09:59:45 +0000 (09:59 +0000)]
The value held in the vector may be RAUW'ed by some of the canonicalization
methods. Use a weak value handle to keep up with this.
PR12245
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155984
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Barton [Wed, 2 May 2012 09:43:18 +0000 (09:43 +0000)]
Disallow YIELD and other allocated nop hints in pre-ARMv6 architectures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155983
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Wed, 2 May 2012 08:03:44 +0000 (08:03 +0000)]
Add support for selecting AVX2 vpshuflw and vpshufhw. Add decoding support for AsmPrinter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155982
91177308-0d34-0410-b5e6-
96231b3b80d8
John McCall [Wed, 2 May 2012 05:39:15 +0000 (05:39 +0000)]
Update SmallVector to support move semantics if the host does.
Note that support for rvalue references does not imply support
for the full set of move-related STL operations.
I've preserved support for an odd little thing in insert() where
we're trying to support inserting a new element from an existing
one. If we actually want to support that, there's a lot more we
need to do: insert can call either grow or push_back, neither of
which is safe against this particular use pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155979
91177308-0d34-0410-b5e6-
96231b3b80d8
John McCall [Wed, 2 May 2012 05:39:10 +0000 (05:39 +0000)]
Fix unintentional use of operator bool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155978
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Wed, 2 May 2012 02:31:28 +0000 (02:31 +0000)]
Fix the implementation of MachOObjectFile::isSectionZeroInit so it follows the MachO spec.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155976
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 1 May 2012 23:21:41 +0000 (23:21 +0000)]
Tidy up. Naming conventions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155960
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Tue, 1 May 2012 23:08:16 +0000 (23:08 +0000)]
Remove unneeded break.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155959
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Tue, 1 May 2012 23:06:00 +0000 (23:06 +0000)]
Use dyn_cast instead of checking opcode and cast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155957
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Tue, 1 May 2012 23:04:38 +0000 (23:04 +0000)]
Remove trailing spaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155956
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 1 May 2012 22:50:45 +0000 (22:50 +0000)]
Strip the pointer casts off of allocas so that the selection DAG can find them.
PR10799
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155954
91177308-0d34-0410-b5e6-
96231b3b80d8
Sirish Pande [Tue, 1 May 2012 21:28:30 +0000 (21:28 +0000)]
Target independent Hexagon Packetizer fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155947
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 1 May 2012 21:17:34 +0000 (21:17 +0000)]
ARM: Add a few missing add->sub aliases w/ 'w' suffix.
Aliases for adding a negative immediate when using an explicit 'w'
suffix. E.g.,
adds.w r2, #-16
adds.w r2, r2, #-16
addw r2, #-16
addw r2, #-16
addw r2, r2, #-16
rdar://
11330769
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155946
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 1 May 2012 20:43:21 +0000 (20:43 +0000)]
ARM: allow vanilla expressions for movw/movt.
Expressions for movw/movt don't always have an :upper16: or :lower16:
on them and that's ok. When they don't, it's just a plain [0-65536]
immediate result, effectively the same as a :lower16: variant kind.
rdar://
10550147
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155941
91177308-0d34-0410-b5e6-
96231b3b80d8
Preston Gurd [Tue, 1 May 2012 19:50:22 +0000 (19:50 +0000)]
This patch marks the X86 floating point stack registers ST0-ST7 as reserved
in order to avoid assertion failures in the register scavenger. The assertion
failures were “Bad machine code: Using an undefined physical register” and
“Bad machine code: MBB exits via unconditional fall-through but its successor
differs from its CFG successor!”.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155930
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 1 May 2012 18:38:27 +0000 (18:38 +0000)]
MC: Unknown assembler directives are now hard errors.
Previously, an unsupported/unknown assembler directive issued a warning.
That's generally unsafe, and inconsistent with the behaviour of pretty
much every system assembler. Now that the MC assemblers are mature
enough to be the default on multiple targets, it's reasonable to
issue errors for these.
For target or platform directives that need to stay warnings, we
should add explicit handlers for them in, e.g., ELFAsmParser.cpp,
DarwinAsmParser.cpp, et. al., and issue the warning there.
rdar://
9246275
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155926
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 1 May 2012 18:38:24 +0000 (18:38 +0000)]
MC: Remove errant EatToEndOfStatement() in asm parser.
The caller is already responsible for eating any additional input on the
line. Putting an additional EatToEndOfStatement() in ParseStatement()
causes an entire extra statement to be consumed when treating warnings
as errors. For example, test/MC/macros.s will assert() because the
.endmacro directive is missed as a result.
rdar://
11355843
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155925
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Tue, 1 May 2012 17:16:15 +0000 (17:16 +0000)]
X86: optimization for max-like struct
This patch will optimize the following cases on X86
(a > b) ? (a-b) : 0
(a >= b) ? (a-b) : 0
(b < a) ? (a-b) : 0
(b <= a) ? (a-b) : 0
FROM
movl %edi, %ecx
subl %esi, %ecx
cmpl %edi, %esi
movl $0, %eax
cmovll %ecx, %eax
TO
xorl %eax, %eax
subl %esi, %edi
cmovll %eax, %edi
movl %edi, %eax
rdar:
10734411
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155919
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Tue, 1 May 2012 15:16:06 +0000 (15:16 +0000)]
X86: Use StackRegister instead of FrameRegister in getFrameIndexReference (to generate debug info for local variables) if stack needs realignment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155917
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 1 May 2012 14:34:24 +0000 (14:34 +0000)]
Move MipsDisassembler classes into an anonymous namespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155915
91177308-0d34-0410-b5e6-
96231b3b80d8
Jay Foad [Tue, 1 May 2012 11:11:34 +0000 (11:11 +0000)]
Regression test for PR2960.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155912
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 1 May 2012 10:48:02 +0000 (10:48 +0000)]
Value-initialize global to avoid global construction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155909
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Tue, 1 May 2012 10:41:12 +0000 (10:41 +0000)]
RuntimeDyld cleanup:
- Improved parameter names for clarity
- Added comments
- emitCommonSymbols should return void because its return value is not being
used anywhere
- Attempt to reduce the usage of the RelocationValueRef type. Restricts it
for a single goal and may serve as a step for eventual removal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155908
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 1 May 2012 10:19:59 +0000 (10:19 +0000)]
YAMLParser: get rid of global ctors & dtors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155907
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 1 May 2012 08:27:43 +0000 (08:27 +0000)]
Change the PassManager from a reference to a pointer.
The TargetPassManager's default constructor wants to initialize the PassManager
to 'null'. But it's illegal to bind a null reference to a null l-value. Make the
ivar a pointer instead.
PR12468
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155902
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 1 May 2012 07:10:32 +0000 (07:10 +0000)]
Allow BMI, AES, F16C, POPCNT, FMA3, and CLMUL to be detected on AMD processors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155899
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Tue, 1 May 2012 06:58:59 +0000 (06:58 +0000)]
RuntimeDyld code cleanup:
- There's no point having a different type for the local and global symbol
tables.
- Renamed SymbolTable to GlobalSymbolTable to clarify the intention
- Improved const correctness where relevant
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155898
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 1 May 2012 06:54:48 +0000 (06:54 +0000)]
Make XOP and FMA4 require SSE4A to match GCC behavior. Use this to simplify Bulldozer feature list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155897
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 1 May 2012 06:34:01 +0000 (06:34 +0000)]
Attempt to handle MRMInitReg in emitVEXOpcodePrefix. Hopefully fixes PR12711.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155896
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Tue, 1 May 2012 06:15:40 +0000 (06:15 +0000)]
Removed examples of stack frame inspection which no longer work for old JIT.
Added an example of MCJIT-based debugging.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155895
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 1 May 2012 05:41:41 +0000 (05:41 +0000)]
Make XOP imply AVX as its needed to legalize the registers types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155891
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 1 May 2012 05:35:02 +0000 (05:35 +0000)]
Remove HasSSE2 from AES and CLMUL predicates. It's now implied by the HasAES and HasCLMUL predicates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155890
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 1 May 2012 05:28:32 +0000 (05:28 +0000)]
Make CLMUL and AES imply SSE2 since its needed to legalize the type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155888
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 1 May 2012 05:18:13 +0000 (05:18 +0000)]
Enable AVX and FMA4 for AMD Bulldozer processors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155885
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 1 May 2012 04:03:01 +0000 (04:03 +0000)]
An instruction in a loop is not guaranteed to be executed just because the loop
has no exit blocks. Fixes PR12706!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155884
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Tue, 1 May 2012 00:20:38 +0000 (00:20 +0000)]
Add support for llvm.arm.neon.vmull* intrinsics to InstCombine. Fixes
<rdar://problem/
11291436>.
This is a second attempt at a fix for this, the first was r155468. Thanks
to Chandler, Bob and others for the feedback that helped me improve this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155866
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Mon, 30 Apr 2012 23:41:30 +0000 (23:41 +0000)]
Add some constantness. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155859
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Mon, 30 Apr 2012 22:51:25 +0000 (22:51 +0000)]
X86: optimization for -(x != 0)
This patch will optimize -(x != 0) on X86
FROM
cmpl $0x01,%edi
sbbl %eax,%eax
notl %eax
TO
negl %edi
sbbl %eax %eax
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155853
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 30 Apr 2012 22:30:43 +0000 (22:30 +0000)]
ARM: Diagnostics for out of range fixups.
Replace some assert() calls w/ actual diagnostics. In a perfect world,
there'd be range checks on these values long before things ever reached
this code. For now, though, issuing a better-late-than-never diagnostic
is still a big improvement over assert().
rdar://
11347287
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155851
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 30 Apr 2012 20:19:00 +0000 (20:19 +0000)]
Fix address calculation error from r155744.
This was exposed by SingleSource/UnitTests/Vector/constpool.c.
The computed size of a basic block isn't always a multiple of its known
alignment, and that can introduce extra alignment padding after the
block.
<rdar://problem/
11347135>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155845
91177308-0d34-0410-b5e6-
96231b3b80d8
Sebastian Pop [Mon, 30 Apr 2012 20:06:58 +0000 (20:06 +0000)]
fix typo
Thanks to "Gabor Greif" <ggreif@gmail.com> for reporting this problem.
The configure flag should be --with-default-sysroot as documented, and
not --with-sysroot. The reason we don't want to define --with-sysroot
is that GCC has a configure flag by that name and it has a different
semantics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155844
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Mon, 30 Apr 2012 18:54:27 +0000 (18:54 +0000)]
test/CodeGen/X86/select.ll: remove spaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155840
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 30 Apr 2012 17:47:15 +0000 (17:47 +0000)]
Tidy up. No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155832
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Mon, 30 Apr 2012 16:57:15 +0000 (16:57 +0000)]
Fix fastcc structure return with fast-isel on x86-32
On x86-32, structure return via sret lets the callee pop the hidden
pointer argument off the stack, which the caller then re-pushes.
However if the calling convention is fastcc, then a register is used
instead, and the caller should not adjust the stack. This is
implemented with a check of IsTailCallConvention
X86TargetLowering::LowerCall but is now checked properly in
X86FastISel::DoSelectCall.
(this time, actually commit what was reviewed!)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155825
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Mon, 30 Apr 2012 16:53:34 +0000 (16:53 +0000)]
Don't introduce illegal types when creating vmull operations. <rdar://
11324364>
ARM BUILD_VECTORs created after type legalization cannot use i8 or i16
operands, since those types are not legal. Instead use i32 operands, which
will be implicitly truncated by the BUILD_VECTOR to match the element type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155824
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 30 Apr 2012 12:15:58 +0000 (12:15 +0000)]
It doesn't make sense to move symbol relocations to section relocations when
relocations are resolved. It's much more reasonable to do this decision when
relocations are just being added - we have all the information at that point.
Also a bit of renaming and extra comments to clarify extensions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155819
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 30 Apr 2012 11:56:58 +0000 (11:56 +0000)]
Just mark the sign bit as known zero, rather than any other irrelevant bits
known zero in the LHS. Fixes PR12541.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155818
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 30 Apr 2012 10:44:54 +0000 (10:44 +0000)]
Second attempt at PR12573:
Allow the "SplitCriticalEdge" function to split the edge to a landing pad. If
the pass is *sure* that it thinks it knows what it's doing, then it may go ahead
and specify that the landing pad can have its critical edge split. The loop
unswitch pass is one of these passes. It will split the critical edges of all
edges coming from a loop to a landing pad not within the loop. Doing so will
retain important loop analysis information, such as loop simplify.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155817
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 30 Apr 2012 10:25:51 +0000 (10:25 +0000)]
Use an ArrayRef instead of explicit vector type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155816
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 30 Apr 2012 10:06:27 +0000 (10:06 +0000)]
Code cleanup in RuntimeDyld:
- Add comments
- Change field names to be more reasonable
- Fix indentation and naming to conform to coding conventions
- Remove unnecessary includes / replace them by forward declatations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155815
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Mon, 30 Apr 2012 09:23:48 +0000 (09:23 +0000)]
Remove hack from r154987. The problem persists even with it, so it's not even a good hack.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155813
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 30 Apr 2012 05:17:10 +0000 (05:17 +0000)]
No need to normalize index before calling Extract128BitVector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155811
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Mon, 30 Apr 2012 03:56:44 +0000 (03:56 +0000)]
Copied all the VEX prefix encoding code from X86MCCodeEmitter to the x86 JIT emitter. Needs some major refactoring as these two code emitters are almost identical
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155810
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 30 Apr 2012 03:53:06 +0000 (03:53 +0000)]
Make sure HoistInsertPosition finds a position that is dominated by all
inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155809
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Sun, 29 Apr 2012 20:52:53 +0000 (20:52 +0000)]
Remove unneeded casts. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155800
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 29 Apr 2012 20:27:47 +0000 (20:27 +0000)]
Remove superfluous 'inline'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155799
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 29 Apr 2012 20:22:05 +0000 (20:22 +0000)]
Simplify code a bit. No functional change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155798
91177308-0d34-0410-b5e6-
96231b3b80d8
Kalle Raiskila [Sun, 29 Apr 2012 20:00:55 +0000 (20:00 +0000)]
Update the documentation of CellSPU, in case it gets removed in 3.1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155797
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 29 Apr 2012 18:52:56 +0000 (18:52 +0000)]
RegisterPressure: ArrayRefize some functions for better readability. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155795
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Sun, 29 Apr 2012 12:40:47 +0000 (12:40 +0000)]
Fix some formatting, grammar and style issues and add a couple of missing comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155793
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Sun, 29 Apr 2012 11:14:59 +0000 (11:14 +0000)]
Remove redundant line (the memory manager is set above to the same object
if !ForceInterpreteri). It has no effect (apart from a memory leak...)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155792
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 29 Apr 2012 10:53:29 +0000 (10:53 +0000)]
SmallVector: Don't rely on having an assignment operator around in push_back for POD-like types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155791
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Sun, 29 Apr 2012 10:26:26 +0000 (10:26 +0000)]
Fix comments from copy-paste to a more relevant meaning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155790
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 29 Apr 2012 07:25:46 +0000 (07:25 +0000)]
Add constants for first and last integer vector types to be consistent with floating point.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155787
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 29 Apr 2012 07:07:36 +0000 (07:07 +0000)]
Remove tab characters
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155786
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 29 Apr 2012 07:06:58 +0000 (07:06 +0000)]
Mark the default cases of MVT::getVectorElementType and MVT:getVectorNumElements as unreachable to reduce code size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155785
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sat, 28 Apr 2012 19:19:11 +0000 (19:19 +0000)]
Don't update spill weights when joining intervals.
We don't compute spill weights until after coalescing anyway.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155766
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sat, 28 Apr 2012 19:19:07 +0000 (19:19 +0000)]
Spring cleaning - Delete dead code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155765
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 28 Apr 2012 16:22:31 +0000 (16:22 +0000)]
If the __is_trivially_copyable type trait is available use it as the baseline for isPodLike.
This way we can enable the POD-like class optimization for a lot more classes,
saving ~120k of code in clang/i386/Release+Asserts when selfhosting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155761
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sat, 28 Apr 2012 16:22:26 +0000 (16:22 +0000)]
Use the most basic superclass of SmallVector in ArrayRef.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155760
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Sat, 28 Apr 2012 06:21:38 +0000 (06:21 +0000)]
Fix a problem with blocks that need to be split twice.
The code could search past the end of the basic block when there was
already a constant pool entry after the block.
Test case with giant basic block in SingleSource/UnitTests/Vector/constpool.c
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155753
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sat, 28 Apr 2012 01:03:23 +0000 (01:03 +0000)]
Reapply 155668: Fix the SD scheduler to avoid gluing the same node twice.
This time, also fix the caller of AddGlue to properly handle
incomplete chains. AddGlue had failure modes, but shamefully hid them
from its caller. It's luck ran out.
Fixes rdar://
11314175: BuildSchedUnits assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155749
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 27 Apr 2012 23:51:36 +0000 (23:51 +0000)]
ARM: Thumb add(sp plus register) asm constraints.
Make sure when parsing the Thumb1 sp+register ADD instruction that
the source and destination operands match. In thumb2, just use the
wide encoding if they don't. In Thumb1, issue a diagnostic.
rdar://
11219154
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155748
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 27 Apr 2012 23:51:33 +0000 (23:51 +0000)]
ARM: Tweak tADDrSP definition for consistent operand order.
Make the operand order of the instruction match that of the asm syntax.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155747
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Fri, 27 Apr 2012 23:37:41 +0000 (23:37 +0000)]
Revert r155745
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155746
91177308-0d34-0410-b5e6-
96231b3b80d8
Derek Schuff [Fri, 27 Apr 2012 23:27:17 +0000 (23:27 +0000)]
Fix fastcc structure return with fast-isel on x86-32
On x86-32, structure return via sret lets the callee pop the hidden
pointer argument off the stack, which the caller then re-pushes.
However if the calling convention is fastcc, then a register is used
instead, and the caller should not adjust the stack. This is
implemented with a check of IsTailCallConvention
X86TargetLowering::LowerCall but is now checked properly in
X86FastISel::DoSelectCall.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155745
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Fri, 27 Apr 2012 22:58:38 +0000 (22:58 +0000)]
Track worst case alignment padding more accurately.
Previously, ARMConstantIslandPass would conservatively compute the
address of an aligned basic block as:
RoundUpToAlignment(Offset + UnknownPadding)
This worked fine for the layout algorithm itself, but it could fool the
verify() function because it accounts for alignment padding twice: Once
when adding the worst case UnknownPadding, and again by rounding up the
fictional block offset. This meant that when optimizeThumb2Instructions
would shrink an instruction, the conservative distance estimate could
grow. That shouldn't be possible since the woorst case alignment padding
wss already included.
This patch drops the use of RoundUpToAlignment, and depends only on
worst case padding to compute conservative block offsets. This has the
weird effect that the computed offset for an aligned block may not be
aligned.
The important difference is that shrinking an instruction can never
cause the estimated distance between two instructions to grow. The
estimated distance is always larger than the real distance that only the
assembler knows.
<rdar://problem/
11339352>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155744
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 27 Apr 2012 22:55:59 +0000 (22:55 +0000)]
Temporarily revert r155668: Fix the SD scheduler to avoid gluing.
This definitely caused regression with ARM -mno-thumb.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155743
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 27 Apr 2012 22:54:43 +0000 (22:54 +0000)]
Use 'unsigned' instead of 'int' in several places when retrieving number of vector elements.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155742
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 27 Apr 2012 22:33:25 +0000 (22:33 +0000)]
Add x86-specific DAG combine to simplify:
x == -y --> x+y == 0
x != -y --> x+y != 0
On x86, the generated code goes from
negl %esi
cmpl %esi, %edi
je .LBB0_2
to
addl %esi, %edi
je .L4
This case is correctly handled for ARM with "cmn".
Patch by Manman Ren.
rdar://
11245199
PR12545
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155739
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael J. Spencer [Fri, 27 Apr 2012 21:12:20 +0000 (21:12 +0000)]
[Support/YAMLParser] Fix ASan found bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155735
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 27 Apr 2012 21:05:09 +0000 (21:05 +0000)]
Tidy up spacing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155733
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 27 Apr 2012 20:48:18 +0000 (20:48 +0000)]
Make test less fragile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155732
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Fri, 27 Apr 2012 19:34:00 +0000 (19:34 +0000)]
Don't vectorize target-specific types (ppc_fp128, x86_fp80, etc.).
Target specific types should not be vectorized. As a practical matter,
these types are already register matched (at least in the x86 case),
and codegen does not always work correctly (at least in the ppc case,
and this is not worth fixing because ppc_fp128 is currently broken and
will probably go away soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155729
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 27 Apr 2012 19:30:32 +0000 (19:30 +0000)]
Change recurse depth limit to uint32 to fix warning.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155727
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 27 Apr 2012 19:30:29 +0000 (19:30 +0000)]
Switch to c-style comments in a C file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155726
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 27 Apr 2012 18:56:31 +0000 (18:56 +0000)]
Miscellaneous accumulated cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155725
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 27 Apr 2012 18:51:24 +0000 (18:51 +0000)]
Fix the order of the operands in the llvm.fma intrinsic patterns for ARM,
<rdar://problem/
11325085>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155724
91177308-0d34-0410-b5e6-
96231b3b80d8
Mon P Wang [Fri, 27 Apr 2012 18:09:28 +0000 (18:09 +0000)]
Add an early bailout to IsValueFullyAvailableInBlock from deeply nested blocks.
The limit is set to an arbitrary 1000 recursion depth to avoid stack overflow
issues. <rdar://problem/
11286839>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155722
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 27 Apr 2012 17:50:22 +0000 (17:50 +0000)]
Reapply r155682, making constant folding more consistent, with a fix to work
properly with how the code handles all-undef PHI nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155721
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Barton [Fri, 27 Apr 2012 17:34:01 +0000 (17:34 +0000)]
Fix ARM assembly parsing for upper case condition codes on IT instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155720
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 27 Apr 2012 16:29:22 +0000 (16:29 +0000)]
Remove a docs reference to the CBackend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155716
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 27 Apr 2012 12:21:46 +0000 (12:21 +0000)]
Missed some register numbers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155706
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 27 Apr 2012 12:14:03 +0000 (12:14 +0000)]
Update edis test for r155704.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155705
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 27 Apr 2012 12:07:43 +0000 (12:07 +0000)]
X86: Don't emit conditional floating point moves on when targeting pre-pentiumpro architectures.
* Model FPSW (the FPU status word) as a register.
* Add ISel patterns for the FUCOM*, FNSTSW and SAHF instructions.
* During Legalize/Lowering, build a node sequence to transfer the comparison
result from FPSW into EFLAGS. If you're wondering about the right-shift: That's
an implicit sub-register extraction (%ax -> %ah) which is handled later on by
the instruction selector.
Fixes PR6679. Patch by Christoph Erhardt!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155704
91177308-0d34-0410-b5e6-
96231b3b80d8
Evgeniy Stepanov [Fri, 27 Apr 2012 10:27:32 +0000 (10:27 +0000)]
Update config.sub in the sample project.
This change replaces projects/sample/autoconf/config.sub with a copy of
autoconf/config.sub.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155703
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 27 Apr 2012 10:04:53 +0000 (10:04 +0000)]
[asan] small optimization: do not emit "x+0" instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155701
91177308-0d34-0410-b5e6-
96231b3b80d8
Richard Barton [Fri, 27 Apr 2012 08:42:59 +0000 (08:42 +0000)]
Refactor IT handling not to store the bottom bit of the condition code in the mask operand in the MCInst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155700
91177308-0d34-0410-b5e6-
96231b3b80d8