oota-llvm.git
13 years agoAdd -mattr=+sse2 to make the buildbots happy.
Eli Friedman [Fri, 10 Jun 2011 08:26:26 +0000 (08:26 +0000)]
Add -mattr=+sse2 to make the buildbots happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132839 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoReverted r132785. It seems this test needs more research.
Galina Kistanova [Fri, 10 Jun 2011 05:35:25 +0000 (05:35 +0000)]
Reverted r132785. It seems this test needs more research.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132836 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoChanged condition.
Galina Kistanova [Fri, 10 Jun 2011 03:57:02 +0000 (03:57 +0000)]
Changed condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132834 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdding a test case for revision 132825.
Chad Rosier [Fri, 10 Jun 2011 02:44:19 +0000 (02:44 +0000)]
Adding a test case for revision 132825.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132830 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR10092 (second try): Don't crash on a load without a momoperand; fast-isel creates...
Eli Friedman [Fri, 10 Jun 2011 01:13:01 +0000 (01:13 +0000)]
PR10092 (second try): Don't crash on a load without a momoperand; fast-isel creates loads like this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132826 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoEnsure that EmitGlobalVariable is correctly differentiating between declarations
Chad Rosier [Fri, 10 Jun 2011 00:53:15 +0000 (00:53 +0000)]
Ensure that EmitGlobalVariable is correctly differentiating between declarations
and definitions when emitting global variables.  This was causing global
declarations to be emitted as if they were definitions.
Fixes <rdar://problem/9429892>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132825 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a simple test which makes sure folding immediate float zero to a memory operand...
Eli Friedman [Fri, 10 Jun 2011 00:30:08 +0000 (00:30 +0000)]
Add a simple test which makes sure folding immediate float zero to a memory operand works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132824 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake the optional verification step more strict.
Rafael Espindola [Thu, 9 Jun 2011 23:55:56 +0000 (23:55 +0000)]
Make the optional verification step more strict.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132822 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAvoid a gcc warning about multiline comments.
Rafael Espindola [Thu, 9 Jun 2011 23:51:45 +0000 (23:51 +0000)]
Avoid a gcc warning about multiline comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132821 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoOn last fix to the early tail duplication.
Rafael Espindola [Thu, 9 Jun 2011 23:22:56 +0000 (23:22 +0000)]
On last fix to the early tail duplication.

With this I am able to bootstrap clang with early tail duplication enabled
for any small bb and setting tail-dup-size to a relatively large value(8) to
stress this code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132816 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoChris fixed this README a while back by changing how clang generates code for structs...
Eli Friedman [Thu, 9 Jun 2011 23:02:19 +0000 (23:02 +0000)]
Chris fixed this README a while back by changing how clang generates code for structs like the given struct.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132815 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAlso consider phi nodes when deciding if a register is live out.
Rafael Espindola [Thu, 9 Jun 2011 22:53:47 +0000 (22:53 +0000)]
Also consider phi nodes when deciding if a register is live out.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132814 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoA CCState was being created without setting whether it is in the Call or Prologue...
Cameron Zwarich [Thu, 9 Jun 2011 22:30:07 +0000 (22:30 +0000)]
A CCState was being created without setting whether it is in the Call or Prologue state,
causing an assertion failure downstream. This fixes <rdar://problem/9562908>.

This really seems like it should always be set at CCState creation time, so mistakes like
this can never happen. I'll take a look at doing that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132811 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoChange this DAGCombine to build AND of SHR instead of SHR of AND; this matches the...
Eli Friedman [Thu, 9 Jun 2011 22:14:44 +0000 (22:14 +0000)]
Change this DAGCombine to build AND of SHR instead of SHR of AND; this matches the ordering we prefer in instcombine.  Part of rdar://9562809.

The potential DAGCombine which enforces this more generally messes up some other very fragile patterns, so I'm leaving that alone, at least for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132809 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAnalyzeBranch modifies the bb, but we don't want to modify a bb with
Rafael Espindola [Thu, 9 Jun 2011 21:43:25 +0000 (21:43 +0000)]
AnalyzeBranch modifies the bb, but we don't want to modify a bb with
eh edges. Swap the order of the checks to avoid it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132806 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoA PHI in this basic block is a use in another basic block.
Rafael Espindola [Thu, 9 Jun 2011 20:55:41 +0000 (20:55 +0000)]
A PHI in this basic block is a use in another basic block.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132805 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoWhen deleting a basic block, remove call edges only for non-intrinsics.
John McCall [Thu, 9 Jun 2011 20:31:09 +0000 (20:31 +0000)]
When deleting a basic block, remove call edges only for non-intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132803 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix emission of PPC64 assembler on non-darwin platforms by splitting
Roman Divacky [Thu, 9 Jun 2011 20:25:38 +0000 (20:25 +0000)]
Fix emission of PPC64 assembler on non-darwin platforms by splitting
VK_PPC_{HA,LO}16 into darwin and gas variants.

Darwin wants {ha,lo}16(symbol) while gnu as wants symbol@{ha,l}.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132802 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoModify comment.
Johnny Chen [Thu, 9 Jun 2011 20:11:46 +0000 (20:11 +0000)]
Modify comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132800 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSplitCriticalEdge can sometimes split the edge from an invoke to a landing
John McCall [Thu, 9 Jun 2011 20:06:24 +0000 (20:06 +0000)]
SplitCriticalEdge can sometimes split the edge from an invoke to a landing
pad, separating the exception and selector calls from the new lpad.  Teaching
it not to do that, or to properly adjust the CFG afterwards, is out of
scope because it would require the other edges to the landing pad to be split
as well (effectively).  Instead, just recover from the most likely cases
during inlining.  The best long-term solution is to change the exception
representation and commit to either requiring or not requiring the more
complex edge-splitting logic;  this is just a shorter-term hack.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132799 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor some checks into shouldTailDuplicate. Update comments.
Rafael Espindola [Thu, 9 Jun 2011 19:54:42 +0000 (19:54 +0000)]
Refactor some checks into shouldTailDuplicate. Update comments.
No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132798 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTeach the CallGraph to ignore calls to intrinsics.
John McCall [Thu, 9 Jun 2011 19:46:27 +0000 (19:46 +0000)]
Teach the CallGraph to ignore calls to intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132797 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevert 132789; it breaks tests. My mistake.
Eli Friedman [Thu, 9 Jun 2011 19:33:30 +0000 (19:33 +0000)]
Revert 132789; it breaks tests.  My mistake.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132795 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove an uneeded switch - Turns out reloc results are identical w/o the switch....
Jason W Kim [Thu, 9 Jun 2011 19:13:45 +0000 (19:13 +0000)]
Remove an uneeded switch - Turns out reloc results are identical w/o the switch. (face+palm)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132790 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a check to make sure we don't crash with strange configurations where we do fast...
Eli Friedman [Thu, 9 Jun 2011 18:55:00 +0000 (18:55 +0000)]
Add a check to make sure we don't crash with strange configurations where we do fast-isel, then try to fold instructions. PR10092.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132789 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMove TableGen's register bank classes to their own source file.
Jakob Stoklund Olesen [Thu, 9 Jun 2011 18:42:07 +0000 (18:42 +0000)]
Move TableGen's register bank classes to their own source file.

I'll be moving some more code there to gather all of the
register-specific stuff in one place. Currently it is shared between
CodeGenTarget and RegisterInfoEmitter.

The plan is that CodeGenRegisters can compute the full register bank
structure while RegisterInfoEmitter only will handle the printing part.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132788 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdded dg.exp to run FrontendC ARM-dependent tests; updated inline-asm-multichar.c...
Galina Kistanova [Thu, 9 Jun 2011 17:18:37 +0000 (17:18 +0000)]
Added dg.exp to run FrontendC ARM-dependent tests; updated inline-asm-multichar.c test per this change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132785 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd special-case range checking for VCVT_N intrinsic immediate operands.
Bob Wilson [Thu, 9 Jun 2011 16:57:29 +0000 (16:57 +0000)]
Add special-case range checking for VCVT_N intrinsic immediate operands.
Radar 9558930.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132782 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove custom allocation order boilerplate that is no longer needed.
Jakob Stoklund Olesen [Thu, 9 Jun 2011 16:56:59 +0000 (16:56 +0000)]
Remove custom allocation order boilerplate that is no longer needed.

The register allocators automatically filter out reserved registers and
place the callee saved registers last in the allocation order, so custom
methods are no longer necessary just for that.

Some targets still use custom allocation orders:

ARM/Thumb: The high registers are removed from GPR in thumb mode. The
NEON allocation orders prefer to use non-VFP2 registers first.

X86: The GR8 classes omit AH-DH in x86-64 mode to avoid REX trouble.

SystemZ: Some of the allocation orders are omitting R12 aliases without
explanation. I don't understand this target well enough to fix that. It
looks like all the boilerplate could be removed by reserving the right
registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132781 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSpeculatively revert 132758 and 132768 to try to fix the Windows buildbots.
Eric Christopher [Thu, 9 Jun 2011 16:03:19 +0000 (16:03 +0000)]
Speculatively revert 132758 and 132768 to try to fix the Windows buildbots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132777 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRecommit r132764 since it didn't cause the windows buildbot failures.
Eric Christopher [Thu, 9 Jun 2011 15:39:01 +0000 (15:39 +0000)]
Recommit r132764 since it didn't cause the windows buildbot failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132776 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoImprove the handling of available_externally and llvm.global_ctors.
Rafael Espindola [Thu, 9 Jun 2011 14:38:09 +0000 (14:38 +0000)]
Improve the handling of available_externally and llvm.global_ctors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132775 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoEnable printf() to iprintf() optimization for the TCE target.
Duncan Sands [Thu, 9 Jun 2011 11:11:45 +0000 (11:11 +0000)]
Enable printf() to iprintf() optimization for the TCE target.
Patch by Pekka Jaaskelainen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132774 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoadd another sandybridge alias.
Chris Lattner [Thu, 9 Jun 2011 06:38:17 +0000 (06:38 +0000)]
add another sandybridge alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132772 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTemporarily revert 132764 to see if it fixes the Windows buildbot.
Eric Christopher [Thu, 9 Jun 2011 06:29:54 +0000 (06:29 +0000)]
Temporarily revert 132764 to see if it fixes the Windows buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132771 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoHave the JIT tutorial use IRBuilder for the IR.
Eric Christopher [Thu, 9 Jun 2011 05:58:50 +0000 (05:58 +0000)]
Have the JIT tutorial use IRBuilder for the IR.

Patch by Jake Waskett!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132770 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoInitial support for inline asm memory operand constraints.
Akira Hatanaka [Thu, 9 Jun 2011 03:31:05 +0000 (03:31 +0000)]
Initial support for inline asm memory operand constraints.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132768 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove a vacuous condition.
Cameron Zwarich [Thu, 9 Jun 2011 01:52:44 +0000 (01:52 +0000)]
Remove a vacuous condition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132767 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix PR10104 by adding a bounds check on a vector element access check. It was
Cameron Zwarich [Thu, 9 Jun 2011 01:45:33 +0000 (01:45 +0000)]
Fix PR10104 by adding a bounds check on a vector element access check. It was
assuming that all offsets are legal vector accesses, and thus trying to access
the float member of { <2 x float>, float } as the 3rd element of the first
member.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132766 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoIf the alignment of the byval argument is greater than the alignment
Eric Christopher [Thu, 9 Jun 2011 00:15:19 +0000 (00:15 +0000)]
If the alignment of the byval argument is greater than the alignment
of the frame then increase the maximum alignment of the frame to
match.

Fixes PR6965

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132764 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a parameter to CCState so that it can access the MachineFunction.
Eric Christopher [Wed, 8 Jun 2011 23:55:35 +0000 (23:55 +0000)]
Add a parameter to CCState so that it can access the MachineFunction.

No functional change.

Part of PR6965

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132763 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix an assymmetry between ConvertScalar_ExtractValue and ConvertScalar_InsertValue...
Cameron Zwarich [Wed, 8 Jun 2011 22:08:31 +0000 (22:08 +0000)]
Fix an assymmetry between ConvertScalar_ExtractValue and ConvertScalar_InsertValue. The
former was using the size of the entire alloca, whereas the latter was correctly using
the allocated size of the immediate type being converted (which may differ from the size
of the alloca). This fixes PR10082.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132759 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix bug in lowering of DYNAMIC_STACKALLOC nodes. The correct offset of the
Akira Hatanaka [Wed, 8 Jun 2011 21:28:09 +0000 (21:28 +0000)]
Fix bug in lowering of DYNAMIC_STACKALLOC nodes. The correct offset of the
dynamically allocated stack area was not set.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132758 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoReorganize code in MipsTargetLowering::LowerCall to improve readability.
Akira Hatanaka [Wed, 8 Jun 2011 17:39:33 +0000 (17:39 +0000)]
Reorganize code in MipsTargetLowering::LowerCall to improve readability.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132756 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove a temporary test case probe in CheckForLiveRegDef.
Andrew Trick [Wed, 8 Jun 2011 15:19:49 +0000 (15:19 +0000)]
Remove a temporary test case probe in CheckForLiveRegDef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132751 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix count.
Rafael Espindola [Wed, 8 Jun 2011 14:23:19 +0000 (14:23 +0000)]
Fix count.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132749 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCount how many phis we are creating.
Rafael Espindola [Wed, 8 Jun 2011 14:13:31 +0000 (14:13 +0000)]
Count how many phis we are creating.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132748 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix an issue where the two-address conversion pass incorrectly rewrites untied
Cameron Zwarich [Tue, 7 Jun 2011 23:54:00 +0000 (23:54 +0000)]
Fix an issue where the two-address conversion pass incorrectly rewrites untied
operands to an early clobber register. This fixes <rdar://problem/9566076>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132738 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a silly error I introduce in r131951.
Rafael Espindola [Tue, 7 Jun 2011 23:26:45 +0000 (23:26 +0000)]
Fix a silly error I introduce in r131951.
Fixes PR10095.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132735 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCreate a new ARM directory for FrontendC tests and use it.
Eric Christopher [Tue, 7 Jun 2011 22:20:13 +0000 (22:20 +0000)]
Create a new ARM directory for FrontendC tests and use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132734 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFixed a few illegal paths with llvm_unreachable. Patch by Cameron McInally.
Chad Rosier [Tue, 7 Jun 2011 20:41:31 +0000 (20:41 +0000)]
Fixed a few illegal paths with llvm_unreachable.  Patch by Cameron McInally.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132732 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTypo.
Chad Rosier [Tue, 7 Jun 2011 20:03:13 +0000 (20:03 +0000)]
Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132730 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor MipsTargetLowering::EmitInstrWithCustomInserter.
Akira Hatanaka [Tue, 7 Jun 2011 19:28:39 +0000 (19:28 +0000)]
Refactor MipsTargetLowering::EmitInstrWithCustomInserter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132726 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPut back removed line.
Akira Hatanaka [Tue, 7 Jun 2011 19:03:14 +0000 (19:03 +0000)]
Put back removed line.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132725 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCoding style fixes.
Akira Hatanaka [Tue, 7 Jun 2011 18:58:42 +0000 (18:58 +0000)]
Coding style fixes.

- Fix indentation.
- Move comments.
- Fit lines in 80 columns.
- Remove dead code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132724 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse tabs to separate opcode and operand strings.
Akira Hatanaka [Tue, 7 Jun 2011 18:16:51 +0000 (18:16 +0000)]
Use tabs to separate opcode and operand strings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132718 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd comments for wrapper node patterns in MipsInstrInfo.td.
Akira Hatanaka [Tue, 7 Jun 2011 18:00:14 +0000 (18:00 +0000)]
Add comments for wrapper node patterns in MipsInstrInfo.td.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132717 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTest that ".byte 1, 2, 3, 4" does the right thing.
Roman Divacky [Tue, 7 Jun 2011 17:32:17 +0000 (17:32 +0000)]
Test that ".byte 1, 2, 3, 4" does the right thing.

Requested by nbjoerg!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132716 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMake EmitIntValue() work properly on big-endian targets.
Roman Divacky [Tue, 7 Jun 2011 17:31:02 +0000 (17:31 +0000)]
Make EmitIntValue() work properly on big-endian targets.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132715 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTweak this test for ARM-hosted 'bot.
Stuart Hastings [Tue, 7 Jun 2011 15:23:11 +0000 (15:23 +0000)]
Tweak this test for ARM-hosted 'bot.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132711 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSwitched to DenseMap for allowed sets in PBQP. Reduces total LLC time by 15% on CINT2...
Lang Hames [Tue, 7 Jun 2011 06:05:58 +0000 (06:05 +0000)]
Switched to DenseMap for allowed sets in PBQP. Reduces total LLC time by 15% on CINT2006 for x86-32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132707 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMove the legalizer tests to the X86 directory because the test uses the x86
Nadav Rotem [Tue, 7 Jun 2011 05:23:58 +0000 (05:23 +0000)]
Move the legalizer tests to the X86 directory because the test uses the x86
codegen. Thanks Galina.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132706 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd test case for C++ exception handling and fix the following mistakes in MipsFrameL...
Akira Hatanaka [Tue, 7 Jun 2011 02:17:21 +0000 (02:17 +0000)]
Add test case for C++ exception handling and fix the following mistakes in MipsFrameLowering::emitPrologue:

- cfi directives are not inserted at the right location or in the right order.
- The source MachineLocation for the cfi directive that changes the cfa register
  to $fp should be MachineLocation::VirtualFP.
- A PROLOG_LABEL that marks the beginning of cfi_offset directives for
  callee-saved register is emitted even when no callee-saved registers are
  saved.
- When a callee-saved double precision register is saved, two cfi_offset
  directives, one for each of the paired single precision registers, should be
  emitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132703 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a merge bug in preRAsched for handling physreg aliases.
Andrew Trick [Tue, 7 Jun 2011 00:38:12 +0000 (00:38 +0000)]
Fix a merge bug in preRAsched for handling physreg aliases.

I've been sitting on this long enough trying to find a test case. I
think the fix should go in now, but I'll keep working on the test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132701 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix for setjmp/longjmp exception handling on ARM. setjmp clobbers CPSR.
Andrew Trick [Tue, 7 Jun 2011 00:08:49 +0000 (00:08 +0000)]
Fix for setjmp/longjmp exception handling on ARM. setjmp clobbers CPSR.
rdar://problem/9556069

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132699 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSimplify local live range splitting's safeguard to fix PR10070.
Jakob Stoklund Olesen [Mon, 6 Jun 2011 23:55:20 +0000 (23:55 +0000)]
Simplify local live range splitting's safeguard to fix PR10070.

When local live range splitting creates a live range with the same
number of instructions as the old range, mark it as RS_Local. When such
a range is seen again, require that it be split in a way that reduces
the number of instructions. That guarantees we are making progress while
still being able to perform 3 -> 2+3 splits as required by PR10070.

This also means that the PrevSlot map is no longer needed. This was also
used to estimate new spill weights, but that is no longer necessary
after slotIndexes::insertMachineInstrInMaps() got the extra Late
insertion argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132697 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFollowup to 132458, omit unnecessary stack copy when x87 input is a
Stuart Hastings [Mon, 6 Jun 2011 23:15:58 +0000 (23:15 +0000)]
Followup to 132458, omit unnecessary stack copy when x87 input is a
load.  rdar://problem/6373334

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132696 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd -O1/2/3 to bugpoint, so when you conclude opt -O2 reproduces an issue, you can...
Eli Friedman [Mon, 6 Jun 2011 22:45:46 +0000 (22:45 +0000)]
Add -O1/2/3 to bugpoint, so when you conclude opt -O2 reproduces an issue, you can just run bugpoint -O2. :)  My implementation isn't precisely equivalent to what opt does, but as far as I can tell, it's close enough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132695 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoWe only do always-inlining at -O1; make opt reflect that.
Eli Friedman [Mon, 6 Jun 2011 22:13:27 +0000 (22:13 +0000)]
We only do always-inlining at -O1; make opt reflect that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132693 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoGet allocation orders from RegisterClassInfo when possible.
Jakob Stoklund Olesen [Mon, 6 Jun 2011 21:02:04 +0000 (21:02 +0000)]
Get allocation orders from RegisterClassInfo when possible.

Only target-dependent hints require callbacks. The RCI allocation order
has CSR aliases last according to their order of appearance in the
getCalleeSavedRegs list. This can depend on the calling convention.

This way, AllocationOrder::next doesn't have to check for reserved
registers, and CSRs are always allocated last, even with weird calling
conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132690 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd methods to support the integer-promotion of vector types. Methods to
Nadav Rotem [Mon, 6 Jun 2011 20:55:56 +0000 (20:55 +0000)]
Add methods to support the integer-promotion of vector types. Methods to
legalize SDNodes such as BUILD_VECTOR, EXTRACT_VECTOR_ELT, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132689 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoThis directory was missing the dg.exp to cause the tests to run. Some time since
Nick Lewycky [Mon, 6 Jun 2011 20:23:00 +0000 (20:23 +0000)]
This directory was missing the dg.exp to cause the tests to run. Some time since
it was added, the test has regressed, so XFAIL it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132686 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTest case for PR10085.
Stuart Hastings [Mon, 6 Jun 2011 20:03:22 +0000 (20:03 +0000)]
Test case for PR10085.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132682 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAvoid FGETSIGN of 80-bit types. Fixes PR10085.
Stuart Hastings [Mon, 6 Jun 2011 16:44:31 +0000 (16:44 +0000)]
Avoid FGETSIGN of 80-bit types.  Fixes PR10085.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132681 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDon't try to be clever, just preserve the target's allocation order.
Jakob Stoklund Olesen [Mon, 6 Jun 2011 16:36:30 +0000 (16:36 +0000)]
Don't try to be clever, just preserve the target's allocation order.

The order of registers returned by getCalleeSavedRegs is used to lay out
the fixed stack slots for CSRs. Some targets like their CSRs used from
one end, and some targets want them used from the other end.

When computing an allocation order, simply preserve the relative
ordering of CSRs that the target specifies in its allocation order.
Reordering CSRs would break some targets, ARM in particular.

We still place volatiles before the CSRs, providing slightly better
results with different calling conventions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132680 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoPR10077: fix fast-isel of extractvalue of aggregate constants.
Eli Friedman [Mon, 6 Jun 2011 05:46:34 +0000 (05:46 +0000)]
PR10077: fix fast-isel of extractvalue of aggregate constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132676 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoHarden tests for windows path separators.
Benjamin Kramer [Sun, 5 Jun 2011 18:20:05 +0000 (18:20 +0000)]
Harden tests for windows path separators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132671 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse path API for path concatenation.
Benjamin Kramer [Sun, 5 Jun 2011 14:36:47 +0000 (14:36 +0000)]
Use path API for path concatenation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132668 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoBasic support for macros with explicit arguments.
Rafael Espindola [Sun, 5 Jun 2011 02:43:45 +0000 (02:43 +0000)]
Basic support for macros with explicit arguments.

We still don't handle

* default values
* :req
* :vararg
* \()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132656 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoProduce an undefined reference to _GLOBAL_OFFSET_TABLE_ if we have a
Rafael Espindola [Sun, 5 Jun 2011 01:20:06 +0000 (01:20 +0000)]
Produce an undefined reference to _GLOBAL_OFFSET_TABLE_ if we have a
VK_GOTOFF reloc. This matches as' behavior, but it is not clear why the linker
might need this, so I added a FIXME.

I could test this by duplicating test/MC/ELF/got.s, but it doesn't look
worthwhile.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132655 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFix a test that keeps breaking when allocation orders change.
Jakob Stoklund Olesen [Sat, 4 Jun 2011 23:34:40 +0000 (23:34 +0000)]
Fix a test that keeps breaking when allocation orders change.

Who said FileCheck couldn't handle arbitrarily complex conditions?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132654 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTypeLegalizer: Add support for passing of vector-promoted types in registers (copyFro...
Nadav Rotem [Sat, 4 Jun 2011 20:58:08 +0000 (20:58 +0000)]
TypeLegalizer: Add support for passing of vector-promoted types in registers (copyFromParts/copyToParts).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132649 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTypeLegalizer: Fix a bug in the promotion of elements of integer vectors.
Nadav Rotem [Sat, 4 Jun 2011 20:32:01 +0000 (20:32 +0000)]
TypeLegalizer: Fix a bug in the promotion of elements of integer vectors.
(only happens when using the -promote-elements option).

The correct legalization order is to first try to promote element. Next, we try
to widen vectors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132648 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRefactor parsing of variable names (ie., %foo and @foo) since they have the same
Nick Lewycky [Sat, 4 Jun 2011 18:16:26 +0000 (18:16 +0000)]
Refactor parsing of variable names (ie., %foo and @foo) since they have the same
rules. Also refactor "read string until quote" into its own function. No
functionality change!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132645 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd support for @GOTPTOFF in i386 mode.
Nick Lewycky [Sat, 4 Jun 2011 17:38:07 +0000 (17:38 +0000)]
Add support for @GOTPTOFF in i386 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132643 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoCast unused parameter to void.
Hans Wennborg [Sat, 4 Jun 2011 16:00:19 +0000 (16:00 +0000)]
Cast unused parameter to void.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132641 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoIf the block that we're threading through is jumped to by an indirect branch,
Bill Wendling [Sat, 4 Jun 2011 09:42:04 +0000 (09:42 +0000)]
If the block that we're threading through is jumped to by an indirect branch,
then we don't want to set the destination in the indirect branch to the
destination. This is because the indirect branch needs its destinations to have
had their block addresses taken. This isn't so of the new critical edge that's
split during this process. If it turns out that the destination block has only
one predecessor, and that being a BB with an indirect branch, then it won't be
marked as 'used' and may be removed.
PR10072

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132638 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDrop a RecordKeeper reference that wasn't necessary.
Jakob Stoklund Olesen [Sat, 4 Jun 2011 07:49:55 +0000 (07:49 +0000)]
Drop a RecordKeeper reference that wasn't necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132636 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoAdd a testcase to demonstrate the problem where phi translation is
Dan Gohman [Sat, 4 Jun 2011 07:05:05 +0000 (07:05 +0000)]
Add a testcase to demonstrate the problem where phi translation is
ignored for clobbering partial-alias loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132633 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoReapply r131781, now that the GVN bug with partially-aliasing loads
Dan Gohman [Sat, 4 Jun 2011 06:50:18 +0000 (06:50 +0000)]
Reapply r131781, now that the GVN bug with partially-aliasing loads
is disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132632 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoDisable the main feature of 130180, the elimination of loads that are
Dan Gohman [Sat, 4 Jun 2011 06:48:50 +0000 (06:48 +0000)]
Disable the main feature of 130180, the elimination of loads that are
redundant with partially-aliasing loads.

When computing what portion of a clobbering load value is needed,
it doesn't consider phi-translation which may have occurred
between the clobbing load and the redundant load.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132631 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRemove this test, which should have been reverted along with r131781.
Dan Gohman [Sat, 4 Jun 2011 06:21:23 +0000 (06:21 +0000)]
Remove this test, which should have been reverted along with r131781.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132628 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoUse processor name in the target triple. This fixes PowerPC64 to generate
Roman Divacky [Sat, 4 Jun 2011 06:15:42 +0000 (06:15 +0000)]
Use processor name in the target triple. This fixes PowerPC64 to generate
64bit code for example.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132627 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoRevert r131781 again. Apparently there is more going on here.
Dan Gohman [Sat, 4 Jun 2011 05:11:22 +0000 (05:11 +0000)]
Revert r131781 again. Apparently there is more going on here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132625 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoSilence compiler warnings.
Jakob Stoklund Olesen [Sat, 4 Jun 2011 05:09:36 +0000 (05:09 +0000)]
Silence compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132624 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoTeach TableGen to evaluate DAG expressions as set operations.
Jakob Stoklund Olesen [Sat, 4 Jun 2011 04:11:37 +0000 (04:11 +0000)]
Teach TableGen to evaluate DAG expressions as set operations.

A TableGen backend can define how certain classes can be expanded into
ordered sets of defs, typically by evaluating a specific field in the
record. The SetTheory class can then evaluate DAG expressions that refer
to these named sets.

A number of standard set and list operations are predefined, and the
backend can add more specialized operators if needed. The -print-sets
backend is used by SetTheory.td to provide examples.

This is intended to simplify how register classes are defined:

  def GR32_NOSP : RegisterClass<"X86", [i32], 32, (sub GR32, ESP)>;

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132621 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoFold assert-only-used variable into the assert.
Nick Lewycky [Sat, 4 Jun 2011 02:07:10 +0000 (02:07 +0000)]
Fold assert-only-used variable into the assert.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132620 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoMissing include of climits in the new BranchProbability pass.
Andrew Trick [Sat, 4 Jun 2011 01:30:52 +0000 (01:30 +0000)]
Missing include of climits in the new BranchProbability pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132616 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoNew BranchProbabilityInfo analysis. Patch by Jakub Staszak!
Andrew Trick [Sat, 4 Jun 2011 01:16:30 +0000 (01:16 +0000)]
New BranchProbabilityInfo analysis. Patch by Jakub Staszak!

BranchProbabilityInfo provides an interface for IR passes to query the
likelihood that control follows a CFG edge. This patch provides an
initial implementation of static branch predication that will populate
BranchProbabilityInfo for branches with no external profile
information using very simple heuristics. It currently isn't hooked up
to any external profile data, so static prediction does all the work.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132613 91177308-0d34-0410-b5e6-96231b3b80d8

13 years agoReapply r131781 (revert r131809), now that some BasicAA shortcomings
Dan Gohman [Sat, 4 Jun 2011 00:46:31 +0000 (00:46 +0000)]
Reapply r131781 (revert r131809), now that some BasicAA shortcomings
it exposed are fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132611 91177308-0d34-0410-b5e6-96231b3b80d8