oota-llvm.git
13 years agoFix a variant of PR6112 found by thinking about it: when doing
Duncan Sands [Tue, 4 May 2010 12:43:36 +0000 (12:43 +0000)]
Fix a variant of PR6112 found by thinking about it: when doing
RAUW of a global variable with a local variable in function F,
if function local metadata M in function G was using the global
then M would become function-local to both F and G, which is not
allowed.  See the testcase for an example.  Fixed by detecting
this situation and zapping the metadata operand when it occurs.

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

13 years agofix operand indexes when outputting InvokeInsts
Gabor Greif [Tue, 4 May 2010 09:23:54 +0000 (09:23 +0000)]
fix operand indexes when outputting InvokeInsts

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

13 years agoSet DW_AT_APPLE_omit_frame_ptr in endFunction() where MachineFunction is available...
Devang Patel [Tue, 4 May 2010 06:15:30 +0000 (06:15 +0000)]
Set DW_AT_APPLE_omit_frame_ptr in endFunction() where MachineFunction is available all the time.

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

13 years agoUse the SCEVAddRecExpr::getPostIncExpr utility function instead
Dan Gohman [Tue, 4 May 2010 01:12:27 +0000 (01:12 +0000)]
Use the SCEVAddRecExpr::getPostIncExpr utility function instead
of doing the same thing manually.

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

13 years agoFix a copy+pasto.
Dan Gohman [Tue, 4 May 2010 01:11:15 +0000 (01:11 +0000)]
Fix a copy+pasto.

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

13 years agoDo not ignore debug loc attached with llvm.dbg.declare while collecting debug info...
Devang Patel [Tue, 4 May 2010 01:05:02 +0000 (01:05 +0000)]
Do not ignore debug loc attached with llvm.dbg.declare while collecting debug info used by a module.

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

13 years agoInstruction selection optimizations may have moved the def of a function argument...
Evan Cheng [Tue, 4 May 2010 00:58:39 +0000 (00:58 +0000)]
Instruction selection optimizations may have moved the def of a function argument out of the entry block. rdar://7937489

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

13 years agoFix to r102952. The MOV64toSDrm record in X86Instr64bit.td needed the opcode
Kevin Enderby [Tue, 4 May 2010 00:42:46 +0000 (00:42 +0000)]
Fix to r102952.  The MOV64toSDrm record in X86Instr64bit.td needed the opcode
changed to 0x7E from 0x6E as well as the previous change of RPDI to S3SI.

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

13 years agoMC/Matcher: Add support for over-riding the default MatchInstruction function
Daniel Dunbar [Tue, 4 May 2010 00:33:13 +0000 (00:33 +0000)]
MC/Matcher: Add support for over-riding the default MatchInstruction function
name (for example, to allow targets to interpose the actual MatchInstruction
function).

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

13 years agollvm-mc: Fix case were we would skip a line in the .s file after an instruction
Daniel Dunbar [Tue, 4 May 2010 00:33:07 +0000 (00:33 +0000)]
llvm-mc: Fix case were we would skip a line in the .s file after an instruction
match failure.

Also, fixes a few memory leak FIXMEs.

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

13 years agoTeach scheduler about REG_SEQUENCE.
Evan Cheng [Tue, 4 May 2010 00:22:40 +0000 (00:22 +0000)]
Teach scheduler about REG_SEQUENCE.

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

13 years agoAdd a polygen rule that reflects the fact that nsw and nuw can be
Dan Gohman [Tue, 4 May 2010 00:13:24 +0000 (00:13 +0000)]
Add a polygen rule that reflects the fact that nsw and nuw can be
used together in either order.

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

13 years agoRe-enable isel kill flags, now that the local allocator is ignoring them.
Dan Gohman [Tue, 4 May 2010 00:12:15 +0000 (00:12 +0000)]
Re-enable isel kill flags, now that the local allocator is ignoring them.

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

13 years agordar://7937137 - dbg values not being handled in thumb1 version of
Jim Grosbach [Tue, 4 May 2010 00:11:37 +0000 (00:11 +0000)]
rdar://7937137 - dbg values not being handled in thumb1 version of
eliminateFrameIndex(), leading to llvm_unreachable() assertion failure.

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

13 years agoUpdate one more 2.7 to 2.8.
Dan Gohman [Mon, 3 May 2010 23:52:21 +0000 (23:52 +0000)]
Update one more 2.7 to 2.8.

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

13 years agoMinimally update ReleaseNotes.html for 2.8 development; uncomment and
Dan Gohman [Mon, 3 May 2010 23:51:05 +0000 (23:51 +0000)]
Minimally update ReleaseNotes.html for 2.8 development; uncomment and
update the big red warning at the top. Most of the old content remains
and awaits revision.

Clear out the API changes section, and start it up again with a
mention of the add->fadd transition.

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

13 years agoRemove preexisting kill flags in RegAllocLocal, just like LiveVariables does.
Jakob Stoklund Olesen [Mon, 3 May 2010 23:49:20 +0000 (23:49 +0000)]
Remove preexisting kill flags in RegAllocLocal, just like LiveVariables does.

This should make it possible to start producing kill flags in isel without
breaking stuff.

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

13 years agoFactor out FastISel's code for materializing constants and other values
Dan Gohman [Mon, 3 May 2010 23:36:34 +0000 (23:36 +0000)]
Factor out FastISel's code for materializing constants and other values
in registers into a separate function to de-couple it from the
top-down-specific logic in getRegForValue.

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

13 years agoImplement builtin_return_address(x) and builtin_frame_address(x)
Dale Johannesen [Mon, 3 May 2010 22:59:34 +0000 (22:59 +0000)]
Implement builtin_return_address(x) and builtin_frame_address(x)
on PPC for x!=0.  7624113.

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

13 years agoRemove the API compatibility layer which converted add, sub, and mul
Dan Gohman [Mon, 3 May 2010 22:44:19 +0000 (22:44 +0000)]
Remove the API compatibility layer which converted add, sub, and mul
to fadd, fsub, and fmul, when used with a floating-point type. LLVM
has supported the new instructions since 2.6, so it's time to get
on board.

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

13 years agoCheck that subregisters don't have independent values in RemoveCopyByCommutingDef().
Jakob Stoklund Olesen [Mon, 3 May 2010 22:40:32 +0000 (22:40 +0000)]
Check that subregisters don't have independent values in RemoveCopyByCommutingDef().

This fixes PR6941.

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

13 years agoFix tests to use fadd, fsub, and fmul, instead of add, sub, and mul,
Dan Gohman [Mon, 3 May 2010 22:36:46 +0000 (22:36 +0000)]
Fix tests to use fadd, fsub, and fmul, instead of add, sub, and mul,
when the type is floating-point.

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

13 years agoReword a comment slightly.
Eric Christopher [Mon, 3 May 2010 22:18:49 +0000 (22:18 +0000)]
Reword a comment slightly.

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

13 years agoUse getConstant instead of getIntegerSCEV. The two are basically the
Dan Gohman [Mon, 3 May 2010 22:09:21 +0000 (22:09 +0000)]
Use getConstant instead of getIntegerSCEV. The two are basically the
same, now that getConstant has overloads consistent with ConstantInt::get.

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

13 years agoRevert r102948.
Bill Wendling [Mon, 3 May 2010 21:51:21 +0000 (21:51 +0000)]
Revert r102948.

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

13 years agoRemove special case for llvmCore_Embedded project. This is no longer needed
Bob Wilson [Mon, 3 May 2010 21:41:24 +0000 (21:41 +0000)]
Remove special case for llvmCore_Embedded project.  This is no longer needed
since llvmCore is built as part of llvmgcc42 now.

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

13 years agoPrint basic block numbers in live interval debug output. Since the rest of the
Bob Wilson [Mon, 3 May 2010 21:38:11 +0000 (21:38 +0000)]
Print basic block numbers in live interval debug output. Since the rest of the
debug output is showing machine instructions, the IR-level basic block names
aren't very meaningful, and because multiple machine basic blocks may be
derived from one IR-level BB, they're also not unique.

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

13 years agoFix function prototype mismatch in LLVMUnionType(). Fixes PR7019.
Nick Lewycky [Mon, 3 May 2010 21:36:51 +0000 (21:36 +0000)]
Fix function prototype mismatch in LLVMUnionType(). Fixes PR7019.

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

13 years agoChanged llvm-mc to use the same suffixes with floating point compare
Kevin Enderby [Mon, 3 May 2010 21:31:40 +0000 (21:31 +0000)]
Changed llvm-mc to use the same suffixes with floating point compare
instructions as the Mac OS X darwin assembler.  Some of which like 'fcoml'
assembled to different opcodes.  While some of the suffixes were just different.

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

13 years agoFixed the encoding of two of the X86 movq instuctions. The Move quadword from
Kevin Enderby [Mon, 3 May 2010 21:03:31 +0000 (21:03 +0000)]
Fixed the encoding of two of the X86 movq instuctions.  The Move quadword from
mm to mm/m64 and the Move quadword from xmm2/mem64 to xmm1 had the incorrect
encodings.

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

13 years agoFixed the encoding of the x86 push instructions. Using a 32-bit immediate value
Kevin Enderby [Mon, 3 May 2010 20:45:05 +0000 (20:45 +0000)]
Fixed the encoding of the x86 push instructions.  Using a 32-bit immediate value
caused the a pushl instruction to be incorrectly encoding using only two bytes
of immediate, causing the following 2 instruction bytes to be part of the 32-bit
immediate value.  Also fixed the one byte form of push to be used when the
immediate would fit in a signed extended byte.  Lastly changed the names to not
include the 32 of PUSH32 since they actually push the size of the stack pointer.

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

13 years agoTestcase for r102947.
Bill Wendling [Mon, 3 May 2010 20:39:35 +0000 (20:39 +0000)]
Testcase for r102947.

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

13 years agoSilence warnings about -1 being converted to an unsigned value.
Dan Gohman [Mon, 3 May 2010 20:23:47 +0000 (20:23 +0000)]
Silence warnings about -1 being converted to an unsigned value.

Also, pass true for isSigned even when creating constants for unsigned
comparisons, because the point is to create an all-ones constant,
rather than UINT64_MAX, even for integers wider than 64 bits.

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

13 years agoAdd an option, defaulting to off, to disable the sse domain crossing opts.
Eric Christopher [Mon, 3 May 2010 19:54:02 +0000 (19:54 +0000)]
Add an option, defaulting to off, to disable the sse domain crossing opts.

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

13 years agoCheck for side effects before splitting loop.
Devang Patel [Mon, 3 May 2010 18:06:58 +0000 (18:06 +0000)]
Check for side effects before splitting loop.
Patch by Jakub Staszak!

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

13 years agoUse isTrueWhenEqual and isFalseWhenEqual instead of assuming that
Dan Gohman [Mon, 3 May 2010 18:00:24 +0000 (18:00 +0000)]
Use isTrueWhenEqual and isFalseWhenEqual instead of assuming that
SimplifyICmpOperands will simplify such cases to EQ or NE. This makes
the correcntess of the code independent on SimplifyICmpOperands doing
certain simplifications.

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

13 years agoIn ScalarEvolution::print, don't bother printing out the SCEVs for
Dan Gohman [Mon, 3 May 2010 17:03:23 +0000 (17:03 +0000)]
In ScalarEvolution::print, don't bother printing out the SCEVs for
comparison instructions, since they aren't interesting, despite having
integer result types.

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

13 years agoIn SimplifyICmpOperands, avoid needlessly swapping the operands in the
Dan Gohman [Mon, 3 May 2010 17:00:11 +0000 (17:00 +0000)]
In SimplifyICmpOperands, avoid needlessly swapping the operands in the
case where both are addrecs in unrelated loops.

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

13 years agoFactor out the new <= and >= analysis code into SimplifyICmpOperands.
Dan Gohman [Mon, 3 May 2010 16:35:17 +0000 (16:35 +0000)]
Factor out the new <= and >= analysis code into SimplifyICmpOperands.

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

13 years agoUpdate this comment to note its relationship with the "happens-before"
Dan Gohman [Mon, 3 May 2010 14:59:34 +0000 (14:59 +0000)]
Update this comment to note its relationship with the "happens-before"
concept in the proposed memory model changes.

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

13 years agoDelete this comment. The behavior of struct loads and stores with
Dan Gohman [Mon, 3 May 2010 14:58:14 +0000 (14:58 +0000)]
Delete this comment. The behavior of struct loads and stores with
respect to padding bytes isn't something that the dependence text
needs to spell out.

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

13 years agoDescribe invoke instruction dependencies. Generalize the text for
Dan Gohman [Mon, 3 May 2010 14:55:22 +0000 (14:55 +0000)]
Describe invoke instruction dependencies. Generalize the text for
terminator instructions so that it applies to all terminators with
multiple successors, including invoke.

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

13 years agoSay "operations" instead of "instructions", as nsw can be applied to
Dan Gohman [Mon, 3 May 2010 14:51:43 +0000 (14:51 +0000)]
Say "operations" instead of "instructions", as nsw can be applied to
constant expressions as well as instructions.

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

13 years agoFix a bug which prevented tail merging of return instructions in
Dan Gohman [Mon, 3 May 2010 14:35:47 +0000 (14:35 +0000)]
Fix a bug which prevented tail merging of return instructions in
beneficial cases. See the changes in test/CodeGen/X86/tail-opts.ll and
test/CodeGen/ARM/ifcvt2.ll for details.

The fix is to change HashEndOfMBB to hash at most one instruction,
instead of trying to apply heuristics about when it will be profitable to
consider more than one instruction. The regular tail-merging heuristics
are already prepared to handle the same cases, and they're more precise.

Also, make test/CodeGen/ARM/ifcvt5.ll and
test/CodeGen/Thumb2/thumb2-branch.ll slightly more complex so that they
continue to test what they're intended to test.

And, this eliminates the problem in
test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll, the testcase from
PR5204. Update it accordingly.

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

13 years agoAdd a README entry.
Dan Gohman [Mon, 3 May 2010 14:31:00 +0000 (14:31 +0000)]
Add a README entry.

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

13 years agoRemove the -enable-sjlj-eh option, which doesn't do anything.
Duncan Sands [Sun, 2 May 2010 15:36:26 +0000 (15:36 +0000)]
Remove the -enable-sjlj-eh option, which doesn't do anything.
Remove the -enable-eh option which is only used by the JIT,
and replace it with -jit-enable-eh.

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

13 years agofix some inconsistent line endings, patch by Jakub Staszak!
Chris Lattner [Sat, 1 May 2010 17:36:49 +0000 (17:36 +0000)]
fix some inconsistent line endings, patch by Jakub Staszak!

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

13 years agorevert r102831. We already delete dead readonly calls in
Chris Lattner [Sat, 1 May 2010 17:19:38 +0000 (17:19 +0000)]
revert r102831.  We already delete dead readonly calls in
other places, killing a valid transformation is not the right
answer.

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

13 years agoDon't count debug info as instructions. This was
Dale Johannesen [Sat, 1 May 2010 16:41:11 +0000 (16:41 +0000)]
Don't count debug info as instructions.  This was
preventing the emission of the NOP on Darwin for a
function with no actual code.  From timberwolfmc
with TEST=optllcdbg.

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

13 years agoAdded a variant of InlineCostAnalyzer::getInlineCost() that takes the called function...
David Chisnall [Sat, 1 May 2010 15:47:41 +0000 (15:47 +0000)]
Added a variant of InlineCostAnalyzer::getInlineCost() that takes the called function as an explicit argument, for use when inlining function pointers.

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

13 years agoInsert ANY_EXTEND node instead of invalid truncate during DAG Combining (X & 1),
Anton Korobeynikov [Sat, 1 May 2010 12:52:34 +0000 (12:52 +0000)]
Insert ANY_EXTEND node instead of invalid truncate during DAG Combining (X & 1),
when needed. This fixes PR7001

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

13 years agoDo folding for indirect branches, where possible
Anton Korobeynikov [Sat, 1 May 2010 12:28:21 +0000 (12:28 +0000)]
Do folding for indirect branches, where possible

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

13 years agoImplement indirect branches on MSP430
Anton Korobeynikov [Sat, 1 May 2010 12:04:32 +0000 (12:04 +0000)]
Implement indirect branches on MSP430

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

13 years agoLong branch target oparands are not pc-rel.
Anton Korobeynikov [Sat, 1 May 2010 12:04:22 +0000 (12:04 +0000)]
Long branch target oparands are not pc-rel.
This should fix PR6603.

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

13 years agoDisable the call-deletion transformation introduced in r86975. Without
Owen Anderson [Sat, 1 May 2010 08:34:28 +0000 (08:34 +0000)]
Disable the call-deletion transformation introduced in r86975.  Without
halting analysis, it is illegal to delete a call to a read-only function.
The correct solution is almost certainly to add a "must halt" attribute and
only allow deletions in its presence.

XFAIL the relevant testcase for now.

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

13 years agofix PR5009 by making CGSCCPM realize that a call was devirtualized
Chris Lattner [Sat, 1 May 2010 06:38:43 +0000 (06:38 +0000)]
fix PR5009 by making CGSCCPM realize that a call was devirtualized
if an indirect call site was removed and a direct one was added, not
just if an indirect call site was modified to be direct.

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

13 years agorename test
Chris Lattner [Sat, 1 May 2010 06:34:13 +0000 (06:34 +0000)]
rename test

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

13 years agoRemove the code for special-casing byval for fast-isel. SelectionDAG
Dan Gohman [Sat, 1 May 2010 02:44:23 +0000 (02:44 +0000)]
Remove the code for special-casing byval for fast-isel. SelectionDAG
handles argument lowering anyway, so there's no need for special
casing here.

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

13 years agoFix an ancient FIXME.
Dan Gohman [Sat, 1 May 2010 02:43:10 +0000 (02:43 +0000)]
Fix an ancient FIXME.

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

13 years agoRe-disable kill flags, as there is more trouble.
Dan Gohman [Sat, 1 May 2010 01:57:56 +0000 (01:57 +0000)]
Re-disable kill flags, as there is more trouble.

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

13 years agorename InlineInfo.DevirtualizedCalls -> InlinedCalls to
Chris Lattner [Sat, 1 May 2010 01:26:13 +0000 (01:26 +0000)]
rename InlineInfo.DevirtualizedCalls -> InlinedCalls to
reflect that it includes all inlined calls now, not just
devirtualized ones.

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

13 years agoImplement rdar://6295824 and PR6724 with two tiny changes
Chris Lattner [Sat, 1 May 2010 01:15:56 +0000 (01:15 +0000)]
Implement rdar://6295824 and PR6724 with two tiny changes
that can have a big effect :).  The first is to enable the
iterative SCC passmanager juice that kicks in when the
scc passmgr detects that a function pass has devirtualized
a call.  In this case, it will rerun all the passes it
manages on the SCC, up to the iteration count limit (4). This
is useful because a function pass may devirualize a call, and
we want the inliner to inline it, or pruneeh to infer stuff
about it, etc.

The second patch is to add *all* call sites to the
DevirtualizedCalls list the inliner uses.  This list is
about to get renamed, but the jist of this is that the
inliner now reconsiders *all* inlined call sites as candidates
for further inlining.  The intuition is this that in cases
like this:

f() { g(1); }     g(int x) { h(x); }

We analyze this bottom up, and may decide that it isn't
profitable to inline H into G.  Next step, we decide that it is
profitable to inline G into F, and do so, which means that F
now calls H.  Even though the call from G -> H may not have been
profitable to inline, the call from F -> H may be (in this case
because a constant allows folding etc).

In my spot checks, this doesn't have a big impact on code.  For
example, the LLC output for 252.eon grew from 0.02% (from
317252 to 317308) and 176.gcc actually shrunk by .3% (from 1525612
to 1520964 bytes).  252.eon never iterated in the SCC Passmgr,
176.gcc iterated at most 1 time.

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

13 years agoThe inliner has traditionally not considered call sites
Chris Lattner [Sat, 1 May 2010 01:05:10 +0000 (01:05 +0000)]
The inliner has traditionally not considered call sites
that appear due to inlining a callee as candidates for
futher inlining, but a recent patch made it do this if
those call sites were indirect and became direct.

Unfortunately, in bizarre cases (see testcase) doing this
can cause us to infinitely inline mutually recursive
functions into callers not in the cycle.  Fix this by
keeping track of the inline history from which callsite
inline candidates got inlined from.

This shouldn't affect any "real world" code, but is required
for a follow on patch that is coming up next.

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

13 years agoRe-enable kill flags from SelectionDAGISel, with a fix: don't
Dan Gohman [Sat, 1 May 2010 00:50:53 +0000 (00:50 +0000)]
Re-enable kill flags from SelectionDAGISel, with a fix: don't
try to put a kill flag on a DBG_INFO instruction.

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

13 years agoFix a bug where debug info affected stack slot coloring.
Dale Johannesen [Sat, 1 May 2010 00:41:15 +0000 (00:41 +0000)]
Fix a bug where debug info affected stack slot coloring.
Seen in SingleSrc/Benchmarks/Misc/flops with TEST=optllcdbg.
7929951.

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

13 years agoFix whitespace.
Dan Gohman [Sat, 1 May 2010 00:33:28 +0000 (00:33 +0000)]
Fix whitespace.

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

13 years agoDon't pass SDValues by non-const reference unless they may be
Dan Gohman [Sat, 1 May 2010 00:33:16 +0000 (00:33 +0000)]
Don't pass SDValues by non-const reference unless they may be
modified.

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

13 years agoAdd a pseudo instruction REG_SEQUENCE that takes a list of registers and
Evan Cheng [Sat, 1 May 2010 00:28:44 +0000 (00:28 +0000)]
Add a pseudo instruction REG_SEQUENCE that takes a list of registers and
sub-register indices and outputs a single super register which is formed from
a consecutive sequence of registers.

This is used as register allocation / coalescing aid and it is useful to
represent instructions that output register pairs / quads. For example,
v1024, v1025 = vload <address>
where v1024 and v1025 forms a register pair.

This really should be modelled as
v1024<3>, v1025<4> = vload <address>
but it would violate SSA property before register allocation is done.

Currently we use insert_subreg to form the super register:
v1026 = implicit_def
v1027 - insert_subreg v1026, v1024, 3
v1028 = insert_subreg v1027, v1025, 4
...
      = use v1024
      = use v1028

But this adds pseudo live interval overlap between v1024 and v1025.

We can now modeled it as
v1024, v1025 = vload <address>
v1026 = REG_SEQUENCE v1024, 3, v1025, 4
...
      = use v1024
      = use v1026

After coalescing, it will be
v1026<3>, v1025<4> = vload <address>
...
      = use v1026<3>
      = use v1026

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

13 years agoReorgnaize more switch code lowering to clean up some tricky
Dan Gohman [Sat, 1 May 2010 00:25:44 +0000 (00:25 +0000)]
Reorgnaize more switch code lowering to clean up some tricky
code, and to eliminate the need for the SelectionDAGBuilder
state to be live during CodeGenAndEmitDAG calls.

Call SDB->clear() before CodeGenAndEmitDAG calls instead of
before it, and move the CurDAG->clear() out of SelectionDAGBuilder,
which doesn't own the DAG, and into CodeGenAndEmitDAG.

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

13 years agoTest failing too much on too many platforms.
Bill Wendling [Sat, 1 May 2010 00:12:33 +0000 (00:12 +0000)]
Test failing too much on too many platforms.

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

13 years agoDelete the EdgeMapping variable itself.
Dan Gohman [Sat, 1 May 2010 00:02:20 +0000 (00:02 +0000)]
Delete the EdgeMapping variable itself.

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

13 years agoGet rid of the EdgeMapping map. Instead, just check for BasicBlock
Dan Gohman [Sat, 1 May 2010 00:01:06 +0000 (00:01 +0000)]
Get rid of the EdgeMapping map. Instead, just check for BasicBlock
changes before doing phi lowering for switches.

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

13 years agoUpdate for CIndex rename.
Daniel Dunbar [Fri, 30 Apr 2010 23:36:47 +0000 (23:36 +0000)]
Update for CIndex rename.

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

13 years agoMaybe it needs sse2?
Bill Wendling [Fri, 30 Apr 2010 23:19:29 +0000 (23:19 +0000)]
Maybe it needs sse2?

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

13 years agoForce 64-bit.
Bill Wendling [Fri, 30 Apr 2010 22:45:20 +0000 (22:45 +0000)]
Force 64-bit.

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

13 years agoFix a typo.
Dan Gohman [Fri, 30 Apr 2010 22:38:11 +0000 (22:38 +0000)]
Fix a typo.

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

13 years agoDan recently disabled recursive inlining within a function, but we
Chris Lattner [Fri, 30 Apr 2010 22:37:22 +0000 (22:37 +0000)]
Dan recently disabled recursive inlining within a function, but we
were still inlining self-recursive functions into other functions.

Inlining a recursive function into itself has the potential to
reduce recursion depth by a factor of 2, inlining a recursive
function into something else reduces recursion depth by exactly
1.  Since inlining a recursive function into something else is a
weird form of loop peeling, turn this off.

The deleted testcase was added by Dale in r62107, since then
we're leaning towards not inlining recursive stuff ever.  In any
case, if we like inlining recursive stuff, it should be done
within the recursive function itself to get the algorithm
recursion depth win.

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

13 years agoEXTRACT_VECTOR_ELT of an INSERT_VECTOR_ELT may have the same index, but the
Bill Wendling [Fri, 30 Apr 2010 22:19:17 +0000 (22:19 +0000)]
EXTRACT_VECTOR_ELT of an INSERT_VECTOR_ELT may have the same index, but the
indexes could be of a different value type. Or not even using the same SDNode
for the constant (weird, I know). Compare the actual values instead of the
pointers.

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

13 years agoDon't use 'else ifdef', I guess this is a 3.81 feature?
Daniel Dunbar [Fri, 30 Apr 2010 22:00:17 +0000 (22:00 +0000)]
Don't use 'else ifdef', I guess this is a 3.81 feature?

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

13 years agoRemove this debug output. The MachineFunction will be printed once all of
Dan Gohman [Fri, 30 Apr 2010 21:21:21 +0000 (21:21 +0000)]
Remove this debug output. The MachineFunction will be printed once all of
instruction selection is done; it's confusing to see parts of it printed,
while other parts are omitted, along the way.

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

13 years agoThe local register allocator has to spill dirty callee saved registers before a
Jakob Stoklund Olesen [Fri, 30 Apr 2010 21:19:29 +0000 (21:19 +0000)]
The local register allocator has to spill dirty callee saved registers before a
call that might throw. The landing pad assumes that all registers are in stack
slots.

We used to spill those dirty CSRs after the call, and the stack slots would be
wrong when arriving at the landing pad.

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

13 years agoUpdate BitVectorTest.cpp to stay in sync with SmallBitVectorTest.cpp,
Dan Gohman [Fri, 30 Apr 2010 20:50:28 +0000 (20:50 +0000)]
Update BitVectorTest.cpp to stay in sync with SmallBitVectorTest.cpp,
and fix a bug in BitVector's reference proxy class which this exposed.

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

13 years agoFix TOOLALIAS to not make dependency against $(PROJ_bindir), this is unnecessary
Daniel Dunbar [Fri, 30 Apr 2010 20:47:09 +0000 (20:47 +0000)]
Fix TOOLALIAS to not make dependency against $(PROJ_bindir), this is unnecessary
(and wrong).

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

13 years agoPreserve debug info attached with call instruction while eliminating dead argument.
Devang Patel [Fri, 30 Apr 2010 20:23:54 +0000 (20:23 +0000)]
Preserve debug info attached with call instruction while eliminating dead argument.
Radar 7927803

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

13 years agoMake this code less confusing. Instead of reassigning BB, just operate
Dan Gohman [Fri, 30 Apr 2010 20:14:26 +0000 (20:14 +0000)]
Make this code less confusing. Instead of reassigning BB, just operate
on the original variables, so it's easier to see what is being done
to which blocks.

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

13 years agoAdd new NO_INSTALL_ARCHIVES make variable, to suppress install of .a files.
Daniel Dunbar [Fri, 30 Apr 2010 20:04:53 +0000 (20:04 +0000)]
Add new NO_INSTALL_ARCHIVES make variable, to suppress install of .a files.

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

13 years agoAdd an install-clang-c top-level target, which does a Clang C API install.
Daniel Dunbar [Fri, 30 Apr 2010 20:04:45 +0000 (20:04 +0000)]
Add an install-clang-c top-level target, which does a Clang C API install.

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

13 years agoNew test.
Devang Patel [Fri, 30 Apr 2010 19:39:29 +0000 (19:39 +0000)]
New test.

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

13 years agoAttach AT_APPLE_optimized attribute to optimized function's debug info.
Devang Patel [Fri, 30 Apr 2010 19:38:23 +0000 (19:38 +0000)]
Attach AT_APPLE_optimized attribute to optimized function's debug info.

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

13 years agoEmitDbgValue doesn't need its EdgeMapping argument.
Dan Gohman [Fri, 30 Apr 2010 19:35:33 +0000 (19:35 +0000)]
EmitDbgValue doesn't need its EdgeMapping argument.

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

13 years agoFixed @ctor / @dtor the wrong way around in last commit.
David Chisnall [Fri, 30 Apr 2010 19:27:35 +0000 (19:27 +0000)]
Fixed @ctor / @dtor the wrong way around in last commit.

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

13 years agoAdded a brief explanation of @llvm.global_{c,d}tors.
David Chisnall [Fri, 30 Apr 2010 19:23:49 +0000 (19:23 +0000)]
Added a brief explanation of @llvm.global_{c,d}tors.

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

13 years agoSet isSigned to true when creating an all-ones integer constant, even
Dan Gohman [Fri, 30 Apr 2010 19:22:39 +0000 (19:22 +0000)]
Set isSigned to true when creating an all-ones integer constant, even
for unsigned purposes, so >64-bit integer values get a full all-ones
value.

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

13 years agoSilence compiler warnings.
Dan Gohman [Fri, 30 Apr 2010 19:21:13 +0000 (19:21 +0000)]
Silence compiler warnings.

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

13 years agoAdd lint checks for invalid uses of memory.
Dan Gohman [Fri, 30 Apr 2010 19:05:00 +0000 (19:05 +0000)]
Add lint checks for invalid uses of memory.

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

13 years agoAdd some comments.
Dan Gohman [Fri, 30 Apr 2010 18:33:41 +0000 (18:33 +0000)]
Add some comments.

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

13 years agoRemove the -disable-16bit command-line option, which is now obsolete.
Dan Gohman [Fri, 30 Apr 2010 18:30:26 +0000 (18:30 +0000)]
Remove the -disable-16bit command-line option, which is now obsolete.

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

13 years agoDon't use floating point in SimpleRegisterCoalescing.
Jakob Stoklund Olesen [Fri, 30 Apr 2010 18:28:11 +0000 (18:28 +0000)]
Don't use floating point in SimpleRegisterCoalescing.

Rounding differences causes tests to fail on Linux.

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

13 years agoProperly escape edge source and destination labels.
Dan Gohman [Fri, 30 Apr 2010 18:27:57 +0000 (18:27 +0000)]
Properly escape edge source and destination labels.

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

13 years agoAdd -o /dev/null to some tests which don't care about their output.
Dan Gohman [Fri, 30 Apr 2010 17:42:30 +0000 (17:42 +0000)]
Add -o /dev/null to some tests which don't care about their output.

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