Bill Wendling [Wed, 29 Jun 2011 23:53:16 +0000 (23:53 +0000)]
Stupid error: If the LSDA and Personality functions aren't there, emit 0 instead
of the encoding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134117
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 29 Jun 2011 23:50:13 +0000 (23:50 +0000)]
Revert r133953 for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134116
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Wed, 29 Jun 2011 23:49:12 +0000 (23:49 +0000)]
We don't want to use relocations inside the compact unwind section. Just use the
symbols instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134115
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 29 Jun 2011 23:25:04 +0000 (23:25 +0000)]
Remove redundant Thumb2 ADD/SUB SP instruction definitions.
Unlike Thumb1, Thumb2 does not have dedicated encodings for adjusting the
stack pointer. It can just use the normal add-register-immediate encoding
since it can use all registers as a source, not just R0-R7. The extra
instruction definitions are just duplicates of the normal instructions with
the (not well enforced) constraint that the source register was SP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134114
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 29 Jun 2011 23:11:39 +0000 (23:11 +0000)]
Always adjust the stack pointer immediately after the call.
Some x86-32 calls pop values off the stack, and we need to readjust the
stack pointer after the call. This happens when ADJCALLSTACKUP is
eliminated.
It could happen that spill code was inserted between the CALL and
ADJCALLSTACKUP instructions, and we would compute wrong stack pointer
offsets for those frame index references.
Fix this by inserting the stack pointer adjustment immediately after the
call instead of where the ADJCALLSTACKUP instruction was erased.
I don't have a test case since we don't currently insert code in that
position. We will soon, though. I am testing a regalloc patch that
didn't work on Linux because of this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134113
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 29 Jun 2011 23:03:57 +0000 (23:03 +0000)]
indvars -disable-iv-rewrite: insert new trunc instructions carefully.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134112
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 29 Jun 2011 23:01:52 +0000 (23:01 +0000)]
Added IRBuilder::SetInsertPoint(Use) to find a valid insertion point
that dominates the given Use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134111
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 29 Jun 2011 22:52:51 +0000 (22:52 +0000)]
whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134110
91177308-0d34-0410-b5e6-
96231b3b80d8
Cameron Zwarich [Wed, 29 Jun 2011 22:24:25 +0000 (22:24 +0000)]
In the ARM global merging pass, allow extraneous alignment specifiers. This pass
already makes the assumption, which is correct on ARM, that a type's alignment is
less than its alloc size. This improves codegen with Clang (which inserts a lot of
extraneous alignment specifiers) and fixes <rdar://problem/
9695089>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134106
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 29 Jun 2011 22:01:15 +0000 (22:01 +0000)]
ARM RSCS* don't need explicit TableGen decoder checks.
They've been pseudos for a while now, so the decoder will never see
them in the first place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134101
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 29 Jun 2011 21:58:37 +0000 (21:58 +0000)]
Indentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134100
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 21:10:36 +0000 (21:10 +0000)]
Remove getRegClassForInlineAsmConstraint from the ARM port.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134095
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 21:05:54 +0000 (21:05 +0000)]
Remove todo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134094
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 29 Jun 2011 20:55:48 +0000 (20:55 +0000)]
make compose and isMoveInstr static functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134093
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 29 Jun 2011 20:26:39 +0000 (20:26 +0000)]
Refactor away tSpill and tRestore pseudos in ARM backend.
The tSpill and tRestore instructions are just copies of the tSTRspi and
tLDRspi instructions, respectively. Just use those directly instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134092
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 19:41:27 +0000 (19:41 +0000)]
Add a TODO for the Alpha port inline asm constraints.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134089
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 19:40:01 +0000 (19:40 +0000)]
Move Alpha from getRegClassForInlineAsmConstraint to
getRegForInlineAsmConstraint.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134088
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 19:33:04 +0000 (19:33 +0000)]
Update comment for getRegForInlineAsmConstraint for Mips.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134087
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 19:30:29 +0000 (19:30 +0000)]
Move the Blackfin port away from getRegClassForInlineAsmConstraint by
creating a few specific register classes.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134086
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 19:12:24 +0000 (19:12 +0000)]
Remove getRegClassForInlineAsmConstraint from MBlaze. Add a TODO comment
for the port.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134085
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 19:04:31 +0000 (19:04 +0000)]
Remove getRegClassForInlineAsmConstraint for Mips.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134084
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 18:53:10 +0000 (18:53 +0000)]
Remove getRegClassForInlineAsmConstraint from sparc.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134083
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 17:53:29 +0000 (17:53 +0000)]
Move XCore from getRegClassForInlineAsmConstraint to
getRegForInlineAsmConstraint.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134080
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Wed, 29 Jun 2011 17:23:50 +0000 (17:23 +0000)]
Use getRegForInlineAsmConstraint instead of custom defining regclasses
via vectors.
Part of rdar://
9643582
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134079
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 29 Jun 2011 17:14:00 +0000 (17:14 +0000)]
Add missing operand. rdar://
9694169
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134078
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Wed, 29 Jun 2011 16:22:11 +0000 (16:22 +0000)]
Temporarily revert r134057: "Let simplify cfg simplify bb with only debug and
lifetime intrinsics" due to buildbot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134071
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 29 Jun 2011 16:05:14 +0000 (16:05 +0000)]
Asm parser range checking on .<size> <value> directives.
For example, ".byte 256" would previously assert() when emitting an object
file. Now it generates a diagnostic that the literal value is out of range.
rdar://
9686950
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134069
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 29 Jun 2011 14:07:18 +0000 (14:07 +0000)]
Don't depend on the optimization reverted in r134067.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134068
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 29 Jun 2011 13:47:25 +0000 (13:47 +0000)]
Revert a part of r126557 which could create unschedulable DAGs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134067
91177308-0d34-0410-b5e6-
96231b3b80d8
Francois Pichet [Wed, 29 Jun 2011 11:25:34 +0000 (11:25 +0000)]
Change AsmName's type from StringRef to std::string. AsmName was pointing to a temporary string object that was destroyed. This is undefined behavior and MSVC didn't like it.
This fixes over 300+ failing tests on MSVC.
Credit for this fix goes to chapuni.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134064
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 29 Jun 2011 05:25:47 +0000 (05:25 +0000)]
Let simplify cfg simplify bb with only debug and lifetime intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134057
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Wed, 29 Jun 2011 03:26:17 +0000 (03:26 +0000)]
Fix CMake build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134055
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 29 Jun 2011 03:13:40 +0000 (03:13 +0000)]
indvars -disable-iv-rewrite: just because SCEV ignores casts doesn't
mean they can be removed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134054
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 29 Jun 2011 02:03:36 +0000 (02:03 +0000)]
Revert r134047 while investigating a llvm-gcc-i386-linux-selfhost
miscompile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134053
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 29 Jun 2011 01:14:12 +0000 (01:14 +0000)]
Sink SubtargetFeature and TargetInstrItineraries (renamed MCInstrItineraries) into MC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134049
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 29 Jun 2011 00:35:31 +0000 (00:35 +0000)]
Trim include
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134048
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 29 Jun 2011 00:24:24 +0000 (00:24 +0000)]
Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art.
This function has to deal with a lot of special cases, and the old
version got it wrong sometimes. In particular, it would sometimes leave
multiple uses in the stack interval in a single block. That causes bad
code with multiple reloads in the same basic block.
The new version handles block entry and exit in a single pass. It first
eliminates all the easy cases, and then goes on to create a local
interval for the blocks with difficult interference. Previously, we
would only create the local interval for completely isolated blocks.
It can happen that the stack interval becomes completely empty because
we could allocate a register in all edge bundles, and the new local
intervals deal with the interference. The empty stack interval is
harmless, but we need to remove a SplitKit assertion that checks for
empty intervals.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134047
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Tue, 28 Jun 2011 22:30:17 +0000 (22:30 +0000)]
build/Darwin: Fix epic typo fail.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134036
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 28 Jun 2011 21:46:21 +0000 (21:46 +0000)]
Fix a CMake warning, following up to r134008.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134033
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 28 Jun 2011 21:33:11 +0000 (21:33 +0000)]
Unbreak every backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134031
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 28 Jun 2011 21:14:33 +0000 (21:14 +0000)]
Move CallFrameSetupOpcode and CallFrameDestroyOpcode to TargetInstrInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134030
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 28 Jun 2011 20:44:22 +0000 (20:44 +0000)]
Hide more details in tablegen generated MCRegisterInfo ctor function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134027
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 28 Jun 2011 20:29:03 +0000 (20:29 +0000)]
Add MCInstrInfo registeration machinery.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134026
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 28 Jun 2011 20:07:07 +0000 (20:07 +0000)]
Merge XXXGenRegisterNames.inc into XXXGenRegisterInfo.inc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134024
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 28 Jun 2011 19:10:37 +0000 (19:10 +0000)]
- Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo so it's based off MCInstrInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134021
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 28 Jun 2011 18:32:28 +0000 (18:32 +0000)]
Clean up the handling of the x87 fp stack to make it more robust.
Drop the FpMov instructions, use plain COPY instead.
Drop the FpSET/GET instruction for accessing fixed stack positions.
Instead use normal COPY to/from ST registers around inline assembly, and
provide a single new FpPOP_RETVAL instruction that can access the return
value(s) from a call. This is still necessary since you cannot tell from
the CALL instruction alone if it returns anything on the FP stack. Teach
fast isel to use this.
This provides a much more robust way of handling fixed stack registers -
we can tolerate arbitrary FP stack instructions inserted around calls
and inline assembly. Live range splitting could sometimes break x87 code
by inserting spill code in unfortunate places.
As a bonus we handle floating point inline assembly correctly now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134018
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 28 Jun 2011 18:26:12 +0000 (18:26 +0000)]
Reinstate r133516 "Remove some unnecessary uses of c_str()." A trailing null
character in std::string was causing failures for a few ObjC and Obj-C++ tests
when -flto was enabled. Revision 133999 resolved this issue. Thanks Jay!
rdar://
9685235
PR10210
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134017
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Tue, 28 Jun 2011 17:26:57 +0000 (17:26 +0000)]
Remove warning: 'c0' may be used uninitialized in this function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134014
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 28 Jun 2011 17:24:32 +0000 (17:24 +0000)]
Print registers by name instead of by number.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134013
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 16:45:04 +0000 (16:45 +0000)]
cleanup: misleading comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134010
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 16:32:01 +0000 (16:32 +0000)]
cmake: Our MSVC build does not support config-time build mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134008
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Divacky [Tue, 28 Jun 2011 15:30:42 +0000 (15:30 +0000)]
Implement ISD::VAARG lowering on PPC32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134005
91177308-0d34-0410-b5e6-
96231b3b80d8
Jay Foad [Tue, 28 Jun 2011 08:24:19 +0000 (08:24 +0000)]
PR10210: New method ConstantArray::getAsCString(). Use it in LTO to
avoid getting embedded trailing null bytes in std::strings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133999
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 06:34:10 +0000 (06:34 +0000)]
FileCheckify and prepare for -disable-iv-rewrite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133998
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 28 Jun 2011 06:25:03 +0000 (06:25 +0000)]
FileCheckize a couple of tests.
Also and add a test for popping dead return values and avoid testing the
spill precision.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133997
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 05:44:06 +0000 (05:44 +0000)]
Cleanup. Fix a stupid variable name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133996
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 05:41:52 +0000 (05:41 +0000)]
Cleanup. Fix a stupid variable name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133995
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 05:07:32 +0000 (05:07 +0000)]
SCEVExpander: give new insts a name that identifies the reponsible pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133992
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 05:04:16 +0000 (05:04 +0000)]
whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133991
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 28 Jun 2011 03:57:31 +0000 (03:57 +0000)]
Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133990
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 28 Jun 2011 03:17:03 +0000 (03:17 +0000)]
Fix cmake build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133989
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 03:01:46 +0000 (03:01 +0000)]
indvars --disable-iv-rewrite: sever ties with IVUsers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133988
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 28 Jun 2011 02:49:20 +0000 (02:49 +0000)]
indvars --disable-iv-rewrite: Defer evaluating s/zext until SCEV
evaluates all other IV exprs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133982
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 28 Jun 2011 02:03:12 +0000 (02:03 +0000)]
Fix CMake build by removing this now dead file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133981
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Tue, 28 Jun 2011 02:03:10 +0000 (02:03 +0000)]
FileCheck-ize a test that had the strangest TCL quote I've seen yet: an
opening single quote with no closing single quote, and with {} quotes
"inside" of it. This broke some of our tools that scrape test cases.
Also, while here, make the test actually assert what the comment says it
asserts. This was essentially authored by Nick Lewycky, and merely typed
in by myself. Let me know if this is still missing the mark, but the
previous test only succeeded due to the improper quoting preventing
*anything* from matching the grep -- it had a '4(%...)' sequence in the
output!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133980
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 28 Jun 2011 01:36:01 +0000 (01:36 +0000)]
Alternative name enum should go into the enum portion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133979
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 28 Jun 2011 01:18:58 +0000 (01:18 +0000)]
Fix a bad iterator dereference that Evan uncovered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133978
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 28 Jun 2011 00:19:13 +0000 (00:19 +0000)]
ARM Thumb2 asm syntax optional destination operand for binary operators.
When the destination operand is the same as the first source register
operand for arithmetic instructions, the destination operand may be omitted.
For example, the following two instructions are equivalent:
and r1, #ff
and r1, r1, #ff
rdar://
9672867
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133973
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 27 Jun 2011 23:54:40 +0000 (23:54 +0000)]
Remove RegClass2VRegMap from MachineRegisterInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133967
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 27 Jun 2011 23:54:06 +0000 (23:54 +0000)]
ARM Assembly support for Thumb mov-immediate.
Correctly parse the forms of the Thumb mov-immediate instruction:
1. 8-bit immediate 0-255.
2. 12-bit shifted-immediate.
The 16-bit immediate "movw" form is also legal with just a "mov" mnemonic,
but is not yet supported. More parser logic necessary there due to fixups.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133966
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 27 Jun 2011 23:47:21 +0000 (23:47 +0000)]
Remove RCBarriers from TargetInstrDesc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133964
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 27 Jun 2011 23:40:45 +0000 (23:40 +0000)]
Remove the experimental (and unused) pre-ra splitting pass. Greedy regalloc can split live ranges.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133962
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Mon, 27 Jun 2011 23:17:44 +0000 (23:17 +0000)]
indvars -disable-iv-rewrite: run RLEV after SimplifyIVUsers for
a bit more control over the order SCEVs are evaluated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133959
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 27 Jun 2011 22:54:29 +0000 (22:54 +0000)]
Revert r133516 "Remove some unnecessary uses of c_str()."
This was causing compile-time failures for some of the Objc and Obj-C++
benchmarks. The specific errors were of the form: "ld: duplicate symbol …"
rdar://
9660124
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133955
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 27 Jun 2011 22:32:04 +0000 (22:32 +0000)]
During bottom up fast-isel, instructions emitted to materalize registers are at top of basic block and do not have debug location. This may misguide debugger while entering the basic block and sometimes debugger provides semi useful view of current location to developer by picking up previous known location as current location. Assign a sensible location to the first instruction in a basic block, if it does not have one location derived from source file, so that debugger can provide meaningful user experience to developers in edge cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133953
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 27 Jun 2011 22:30:14 +0000 (22:30 +0000)]
Fix this test to actually check something and be able to be compiled.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133952
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Mon, 27 Jun 2011 21:51:12 +0000 (21:51 +0000)]
Calculate GetBestDestForJumpOnUndef correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133946
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 27 Jun 2011 21:38:03 +0000 (21:38 +0000)]
ARM Asm parsing of Thumb2 move immediate.
Thumb2 MOV mnemonic can accept both cc_out and predication. We don't (yet)
encode the instruction properly, but this gets the parsing part.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133945
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 27 Jun 2011 21:26:13 +0000 (21:26 +0000)]
More refactoring. Move getRegClass from TargetOperandInfo to TargetInstrInfo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133944
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 27 Jun 2011 21:06:21 +0000 (21:06 +0000)]
Add support for alternative register names, useful for instructions whose operands are logically equivalent to existing registers, but happen to be printed specially. For example, an instruciton that prints d0[0] instead of s0.
Patch by Jim Grosbach.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133940
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 27 Jun 2011 20:59:10 +0000 (20:59 +0000)]
Add exception necessitated by 133938.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133939
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 27 Jun 2011 20:40:29 +0000 (20:40 +0000)]
ARM assembly carry set/clear condition code aliases for 'hi/lo'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133938
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 27 Jun 2011 20:32:18 +0000 (20:32 +0000)]
ARM assembler support for ldmfd/stmfd mnemonics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133936
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Mon, 27 Jun 2011 20:31:01 +0000 (20:31 +0000)]
Allow lr in the register options here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133935
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 27 Jun 2011 20:00:07 +0000 (20:00 +0000)]
ARM assembler support for vpush/vpop.
Add aliases for the vpush/vpop mnemonics to the VFP load/store multiple
writeback instructions w/ SP as the base pointer.
rdar://
9683231
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133932
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 27 Jun 2011 19:41:39 +0000 (19:41 +0000)]
Rename unnecessary forward declaration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133928
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 27 Jun 2011 19:24:13 +0000 (19:24 +0000)]
More refactoring. MC doesn't need know about subreg indices.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133927
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Mon, 27 Jun 2011 19:09:15 +0000 (19:09 +0000)]
ARM Assembly syntax support for arithmetic implied dest operand.
When the destination operand is the same as the first source register
operand for arithmetic instructions, the destination operand may be omitted.
For example, the following two instructions are equivalent:
sub r2, r2, #6
sub r2, #6
rdar://
9682597
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133925
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Mon, 27 Jun 2011 18:34:12 +0000 (18:34 +0000)]
The index stored in the RegDefIter is one after the current index. When getting the index, decrement it so that it points to the current element. Fixes an off-by-one bug encountered when trying to make use of MVT::untyped.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133923
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 27 Jun 2011 18:32:37 +0000 (18:32 +0000)]
Merge XXXGenRegisterDesc.inc XXXGenRegisterNames.inc XXXGenRegisterInfo.h.inc
into XXXGenRegisterInfo.inc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133922
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Mon, 27 Jun 2011 18:01:20 +0000 (18:01 +0000)]
pre-RA-sched: Cleanup register pressure tracking.
Removed the check that peeks past EXTRA_SUBREG, which I don't think
makes sense any more. Intead treat it as a normal register def. No
significant affect on x86 or ARM benchmarks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133917
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 27 Jun 2011 17:27:37 +0000 (17:27 +0000)]
Move all inline-asm-fpstack tests to a single file.
Also fix some of the tests that were actually testing wrong behavior -
An input operand in {st} is only popped by the inline asm when {st} is
also in the clobber list.
The original bug reports all had ~{st} clobbers as they should.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133916
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 27 Jun 2011 15:00:36 +0000 (15:00 +0000)]
Track live-out physical registers in MachineDCE.
Patch by Sanjoy Das!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133910
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 27 Jun 2011 05:40:02 +0000 (05:40 +0000)]
Teach one piece of scalarrepl to handle lifetime markers. When transforming an
alloca that only holds a copy of a global and we're going to replace the users
of the alloca with that global, just nuke the lifetime intrinsics. Part of
PR10121.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133905
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 27 Jun 2011 04:20:45 +0000 (04:20 +0000)]
Move onlyUsedByLifetimeMarkers to ValueTracking so that it can be used by other
passes as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133904
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 27 Jun 2011 04:08:36 +0000 (04:08 +0000)]
Grow the X86FloatingPoint register map to hold 16 registers.
This allows for more live scratch registers which is needed to handle
live ST registers before return and inline asm instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133903
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 27 Jun 2011 04:08:33 +0000 (04:08 +0000)]
Distinguish early clobber output operands from clobbered registers.
Both become <earlyclobber> defs on the INLINEASM MachineInstr, but we
now use two different asm operand kinds.
The new Kind_Clobber is treated identically to the old
Kind_RegDefEarlyClobber for now, but x87 floating point stack inline
assembly does care about the difference.
This will pop a register off the stack:
asm("fstp %st" : : "t"(x) : "st");
While this will pop the input and push an output:
asm("fst %st" : "=&t"(r) : "t"(x));
We need to know if ST0 was a clobber or an output operand, and we can't
depend on <dead> flags for that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133902
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Mon, 27 Jun 2011 04:08:29 +0000 (04:08 +0000)]
Decode and pretty print inline asm operand descriptors.
The INLINEASM MachineInstrs have an immediate operand describing each
original inline asm operand. Decode the bits in MachineInstr::print() so
it is easier to read:
INLINEASM <es:rorq $1,$0>, $0:[regdef], %vreg0<def>, %vreg1<def>, $1:[imm], 1, $2:[reguse] [tiedto:$0], %vreg2, %vreg3, $3:[regdef-ec], %EFLAGS<earlyclobber,imp-def>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133901
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sun, 26 Jun 2011 22:44:34 +0000 (22:44 +0000)]
Remove unused methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133900
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sun, 26 Jun 2011 22:34:10 +0000 (22:34 +0000)]
There is only one register coalescer. Merge it into the base class and
remove the analysis group.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133899
91177308-0d34-0410-b5e6-
96231b3b80d8