oota-llvm.git
13 years agoImplement RAGreedy::splitAroundRegion and remove loop splitting.
Jakob Stoklund Olesen [Wed, 19 Jan 2011 22:11:48 +0000 (22:11 +0000)]
Implement RAGreedy::splitAroundRegion and remove loop splitting.

Region splitting includes loop splitting as a subset, and it is more generic.
The splitting heuristics for variables that are live in more than one block are
now:

1. Try to create a region that covers multiple basic blocks.
2. Try to create a new live range for each block with multiple uses.
3. Spill.

Steps 2 and 3 are similar to what the standard spiller is doing.

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

13 years agoSimilarly, analyze truncate through multiply.
Nick Lewycky [Wed, 19 Jan 2011 18:56:00 +0000 (18:56 +0000)]
Similarly, analyze truncate through multiply.

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

13 years agoAdd a missed SCEV fold that is required to continue analyzing the IR produced
Nick Lewycky [Wed, 19 Jan 2011 16:59:46 +0000 (16:59 +0000)]
Add a missed SCEV fold that is required to continue analyzing the IR produced
by indvars through the scev expander.

trunc(add x, y) --> add(trunc x, y). Currently SCEV largely folds the other way
which is probably wrong, but preserved to minimize churn. Instcombine doesn't
do this fold either, demonstrating a missed optz'n opportunity on code doing
add+trunc+add.

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

13 years agoFix the encoding of mrrc and mcrr family of instructions. Also add testcases for...
Bruno Cardoso Lopes [Wed, 19 Jan 2011 16:56:52 +0000 (16:56 +0000)]
Fix the encoding of mrrc and mcrr family of instructions. Also add testcases for mcr and mrc

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

13 years agoAdd unnamed_addr when we can show that address of a global is not used.
Rafael Espindola [Wed, 19 Jan 2011 16:32:21 +0000 (16:32 +0000)]
Add unnamed_addr when we can show that address of a global is not used.

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

13 years agoFix comment for gen-clang-decl-nodes tblgen backend, from Michael Han
Douglas Gregor [Wed, 19 Jan 2011 15:57:47 +0000 (15:57 +0000)]
Fix comment for gen-clang-decl-nodes tblgen backend, from Michael Han

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

13 years agoAdd a missing SCEV simplification sext(zext x) --> zext x.
Nick Lewycky [Wed, 19 Jan 2011 15:56:12 +0000 (15:56 +0000)]
Add a missing SCEV simplification sext(zext x) --> zext x.

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

13 years agoARM/ISel: Factor out isScaledConstantInRange() helper.
Daniel Dunbar [Wed, 19 Jan 2011 15:12:16 +0000 (15:12 +0000)]
ARM/ISel: Factor out isScaledConstantInRange() helper.

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

13 years agoFor ARM subtargets with useNEONForSinglePrecisionFP, double count uses
Andrew Trick [Wed, 19 Jan 2011 02:35:27 +0000 (02:35 +0000)]
For ARM subtargets with useNEONForSinglePrecisionFP, double count uses
of the floating point types less than 64-bits. It's somewhat of a temporary
hack but forces more accurate modeling of register pressure and results
in fewer spills.

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

13 years agowhitespace
Andrew Trick [Wed, 19 Jan 2011 02:26:13 +0000 (02:26 +0000)]
whitespace

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

13 years agoDon't forget to emit the load from indirect symbol when using movw + movt to material...
Evan Cheng [Wed, 19 Jan 2011 02:16:49 +0000 (02:16 +0000)]
Don't forget to emit the load from indirect symbol when using movw + movt to materialize GA indirect symbols.

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

13 years agoWhen matching asm operands, always try to match the most restricted type first.
Owen Anderson [Tue, 18 Jan 2011 23:01:21 +0000 (23:01 +0000)]
When matching asm operands, always try to match the most restricted type first.
Unfortunately, while this is the "right" thing to do, it breaks some ARM
asm parsing tests because MemMode5 and ThumbMemModeReg are ambiguous.  This
is tricky to resolve since neither is a subset of the other.

XFAIL the test for now.  The old way was broken in other ways, just ways
we didn't happen to be testing, and our ARM asm parsing is going to require
significant revisiting at a later point anyways.

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

13 years agoCreate two new generic classes to represent the following VMRS/VMSR variations:
Bruno Cardoso Lopes [Tue, 18 Jan 2011 21:58:20 +0000 (21:58 +0000)]
Create two new generic classes to represent the following VMRS/VMSR variations:
vmrs  reg, fpexc
vmrs  reg, fpsid
vmsr  fpexc, reg
vmsr  fpsid, reg

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

13 years agoFix MRS encoding for arm and thumb.
Bruno Cardoso Lopes [Tue, 18 Jan 2011 21:31:35 +0000 (21:31 +0000)]
Fix MRS encoding for arm and thumb.

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

13 years agoFix the encoding of t2ISB by using the right class and also parse it correctly
Bruno Cardoso Lopes [Tue, 18 Jan 2011 21:17:09 +0000 (21:17 +0000)]
Fix the encoding of t2ISB by using the right class and also parse it correctly

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

13 years agoTeach BasicAA to return PartialAlias in cases where both pointers
Dan Gohman [Tue, 18 Jan 2011 21:16:06 +0000 (21:16 +0000)]
Teach BasicAA to return PartialAlias in cases where both pointers
are pointing to the same object, one pointer is accessing the entire
object, and the other is access has a non-zero size. This prevents
TBAA from kicking in and saying NoAlias in such cases.

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

13 years agoAdd RAGreedy methods for splitting live ranges around regions.
Jakob Stoklund Olesen [Tue, 18 Jan 2011 21:13:27 +0000 (21:13 +0000)]
Add RAGreedy methods for splitting live ranges around regions.

Analyze the live range's behavior entering and leaving basic blocks. Compute an
interference pattern for each allocation candidate, and use SpillPlacement to
find an optimal region where that register can be live.

This code is still not enabled.

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

13 years agoFollow the current hack set and enable the correct parsing of bkpt while in thumb...
Bruno Cardoso Lopes [Tue, 18 Jan 2011 20:55:11 +0000 (20:55 +0000)]
Follow the current hack set and enable the correct parsing of bkpt while in thumb mode.

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

13 years agofix rdar://8878965, a regression I introduced with the recent
Chris Lattner [Tue, 18 Jan 2011 20:53:04 +0000 (20:53 +0000)]
fix rdar://8878965, a regression I introduced with the recent
llvm.objectsize changes.

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

13 years agoAdd support for parsing and encoding ARM's official syntax for the BFI instruction
Bruno Cardoso Lopes [Tue, 18 Jan 2011 20:45:56 +0000 (20:45 +0000)]
Add support for parsing and encoding ARM's official syntax for the BFI instruction

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

13 years agoAdd a FIXME.
Jim Grosbach [Tue, 18 Jan 2011 19:59:19 +0000 (19:59 +0000)]
Add a FIXME.

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

13 years agoEnsure Mips::GP is properly reloaded after a function call. Patch by Sasa Stankovic
Bruno Cardoso Lopes [Tue, 18 Jan 2011 19:50:18 +0000 (19:50 +0000)]
Ensure Mips::GP is properly reloaded after a function call. Patch by Sasa Stankovic

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

13 years agoNegative zero is not legal on mips. Patch by Sasa Stankovic
Bruno Cardoso Lopes [Tue, 18 Jan 2011 19:41:41 +0000 (19:41 +0000)]
Negative zero is not legal on mips. Patch by Sasa Stankovic

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

13 years agoHandle (i32,i32) => f64 in a cleaner way. Patch by Sasa Stankovic
Bruno Cardoso Lopes [Tue, 18 Jan 2011 19:38:25 +0000 (19:38 +0000)]
Handle (i32,i32) => f64 in a cleaner way. Patch by Sasa Stankovic

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

13 years agoAdd support for mips32 madd and msub instructions. Patch by Akira Hatanaka
Bruno Cardoso Lopes [Tue, 18 Jan 2011 19:29:17 +0000 (19:29 +0000)]
Add support for mips32 madd and msub instructions. Patch by Akira Hatanaka

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

13 years agoFor completeness, generalize the (X + Y) - Y -> X transform and add X - (X + 1) ...
Duncan Sands [Tue, 18 Jan 2011 11:50:19 +0000 (11:50 +0000)]
For completeness, generalize the (X + Y) - Y -> X transform and add X - (X + 1) -> -1.
These were not recommended by my auto-simplifier since they don't fire often enough.
However they do fire from time to time, for example they remove one subtraction from
the final bitcode for 483.xalancbmk.

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

13 years agoSimplify (X<<1)-X into X. According to my auto-simplier this is the most common...
Duncan Sands [Tue, 18 Jan 2011 09:24:58 +0000 (09:24 +0000)]
Simplify (X<<1)-X into X.  According to my auto-simplier this is the most common missed
simplification in fully optimized code.  It occurs sporadically in the testsuite, and
many times in 403.gcc: the final bitcode has 131 fewer subtractions after this change.
The reason that the multiplies are not eliminated is the same reason that instcombine
did not catch this: they are used by other instructions (instcombine catches this with
a more general transform which in general is only profitable if the operands have only
one use).

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

13 years agoadd a note
Chris Lattner [Tue, 18 Jan 2011 07:47:48 +0000 (07:47 +0000)]
add a note

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

13 years agofinish a sentence.
Chris Lattner [Tue, 18 Jan 2011 06:12:10 +0000 (06:12 +0000)]
finish a sentence.

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

13 years agoSPARC backend: Modified LowerCall and LowerFormalArguments so that they use CallingCo...
Venkatraman Govindaraju [Tue, 18 Jan 2011 06:09:55 +0000 (06:09 +0000)]
SPARC backend: Modified LowerCall and LowerFormalArguments so that they use CallingConv assignments.

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

13 years agoRemove an unnecessary #include.
Cameron Zwarich [Tue, 18 Jan 2011 06:07:18 +0000 (06:07 +0000)]
Remove an unnecessary #include.

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

13 years agoMove DominanceFrontier from VMCore to Analysis.
Cameron Zwarich [Tue, 18 Jan 2011 06:06:27 +0000 (06:06 +0000)]
Move DominanceFrontier from VMCore to Analysis.

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

13 years agoMcARM: Use accessors where appropriate.
Daniel Dunbar [Tue, 18 Jan 2011 05:55:27 +0000 (05:55 +0000)]
McARM: Use accessors where appropriate.

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

13 years agoMcARM: Fill in ASMOperand::dump() for memory operands.
Daniel Dunbar [Tue, 18 Jan 2011 05:55:21 +0000 (05:55 +0000)]
McARM: Fill in ASMOperand::dump() for memory operands.

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

13 years agoMcARM: Make ARMOperand use a union where appropriate.
Daniel Dunbar [Tue, 18 Jan 2011 05:55:15 +0000 (05:55 +0000)]
McARM: Make ARMOperand use a union where appropriate.

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

13 years agoThere is no point in verifying an analysis that is never updated.
Cameron Zwarich [Tue, 18 Jan 2011 05:44:04 +0000 (05:44 +0000)]
There is no point in verifying an analysis that is never updated.

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

13 years agoMcARM: Unify ParseMemory() successfull return.
Daniel Dunbar [Tue, 18 Jan 2011 05:34:24 +0000 (05:34 +0000)]
McARM: Unify ParseMemory() successfull return.

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

13 years agoMcARM: Early exit on failure (NEFC).
Daniel Dunbar [Tue, 18 Jan 2011 05:34:17 +0000 (05:34 +0000)]
McARM: Early exit on failure (NEFC).

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

13 years agoMcARM: Always keep an offset expression, if used (instead of assuming == 0 if used...
Daniel Dunbar [Tue, 18 Jan 2011 05:34:11 +0000 (05:34 +0000)]
McARM: Always keep an offset expression, if used (instead of assuming == 0 if used but not present), and simplify logic.

Also, clean up various non-sensicalisms in isMemModeRegThumb() and isMemModeImmThumb().

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

13 years agoMcARM: Add a variety of asserts on the sanity of memory operands.
Daniel Dunbar [Tue, 18 Jan 2011 05:34:05 +0000 (05:34 +0000)]
McARM: Add a variety of asserts on the sanity of memory operands.

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

13 years agoMcARM: Use a consistent marker for not-set OffsetRegNum.
Daniel Dunbar [Tue, 18 Jan 2011 05:33:57 +0000 (05:33 +0000)]
McARM: Use a consistent marker for not-set OffsetRegNum.

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

13 years agoConvert a std::map to a DenseMap for another 1.7% speedup on -scalarrepl.
Cameron Zwarich [Tue, 18 Jan 2011 04:50:38 +0000 (04:50 +0000)]
Convert a std::map to a DenseMap for another 1.7% speedup on -scalarrepl.

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

13 years agoMake a std::vector a SmallVector<*, 32> like the other vectors in the same
Cameron Zwarich [Tue, 18 Jan 2011 04:41:32 +0000 (04:41 +0000)]
Make a std::vector a SmallVector<*, 32> like the other vectors in the same
function. This seems to be about a 1.5% speedup of -scalarrepl on test-suite
with SPEC2000 and SPEC2006.

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

13 years agoReduce indentation and remove commented out code.
Rafael Espindola [Tue, 18 Jan 2011 04:36:06 +0000 (04:36 +0000)]
Reduce indentation and remove commented out code.

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

13 years agoRemove some now-unused DominanceFrontier methods.
Cameron Zwarich [Tue, 18 Jan 2011 04:21:57 +0000 (04:21 +0000)]
Remove some now-unused DominanceFrontier methods.

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

13 years agoRemove code for updating dominance frontiers and some outdated references to
Cameron Zwarich [Tue, 18 Jan 2011 04:11:31 +0000 (04:11 +0000)]
Remove code for updating dominance frontiers and some outdated references to
dominance and post-dominance frontiers.

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

13 years agoRemove outdated references to dominance frontiers.
Cameron Zwarich [Tue, 18 Jan 2011 03:53:26 +0000 (03:53 +0000)]
Remove outdated references to dominance frontiers.

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

13 years agoMcARM: Start marking T2 address operands as such, for the benefit of the parser.
Daniel Dunbar [Tue, 18 Jan 2011 03:06:03 +0000 (03:06 +0000)]
McARM: Start marking T2 address operands as such, for the benefit of the parser.

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

13 years agoFormatting tweak.
Daniel Dunbar [Tue, 18 Jan 2011 01:59:30 +0000 (01:59 +0000)]
Formatting tweak.

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

13 years agoSupport/CommandLine: Add "Did you mean" print for mismatched operands.
Daniel Dunbar [Tue, 18 Jan 2011 01:59:24 +0000 (01:59 +0000)]
Support/CommandLine: Add "Did you mean" print for mismatched operands.

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

13 years agoThe stub routine that we're calling uses test and so clobbers
Eric Christopher [Tue, 18 Jan 2011 01:37:20 +0000 (01:37 +0000)]
The stub routine that we're calling uses test and so clobbers
the flags.

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

13 years agominor change to rafael's recent patches: if something is
Chris Lattner [Tue, 18 Jan 2011 01:23:44 +0000 (01:23 +0000)]
minor change to rafael's recent patches: if something is
constant but requires a unique address, we can still put it in a
readonly section, just not a mergable one.

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

13 years agoRemove unused variables found by gcc-4.6's -Wunused-but-set-variable.
Jeffrey Yasskin [Tue, 18 Jan 2011 00:51:23 +0000 (00:51 +0000)]
Remove unused variables found by gcc-4.6's -Wunused-but-set-variable.

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

13 years agoRemove checking that prevented overlapping CALLSEQ_START/CALLSEQ_END
Stuart Hastings [Tue, 18 Jan 2011 00:09:27 +0000 (00:09 +0000)]
Remove checking that prevented overlapping CALLSEQ_START/CALLSEQ_END
ranges, add legalizer support for nested calls.  Necessary for ARM
byval support.  Radar 7662569.

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

13 years agoWindows/PathV2.inc: For CryptAcquireContext(), CRYPT_VERIFYCONTEXT may be specified...
NAKAMURA Takumi [Mon, 17 Jan 2011 22:41:34 +0000 (22:41 +0000)]
Windows/PathV2.inc: For CryptAcquireContext(), CRYPT_VERIFYCONTEXT may be specified for easy use.

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

13 years agoWindows/PathV2.inc: MoveFileEx() can behave like Posix's mv(1) to specify MOVEFILE_CO...
NAKAMURA Takumi [Mon, 17 Jan 2011 22:41:25 +0000 (22:41 +0000)]
Windows/PathV2.inc: MoveFileEx() can behave like Posix's mv(1) to specify MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING.

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

13 years agolib/Support/Windows/Signals.inc: "Showstopper" dialogs may be suppressed with SetErro...
NAKAMURA Takumi [Mon, 17 Jan 2011 22:41:15 +0000 (22:41 +0000)]
lib/Support/Windows/Signals.inc: "Showstopper" dialogs may be suppressed with SetErrorMode() on Windows 7.

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

13 years agoRemove dead code, that I apparently wrote a while back. We seem to be doing well...
Owen Anderson [Mon, 17 Jan 2011 22:39:54 +0000 (22:39 +0000)]
Remove dead code, that I apparently wrote a while back.  We seem to be doing well enough
without whatever this was trying to do.  When/if someone has the time to do some empirical
evaluations, it might be worth it to figure out what this code was trying to do and see if
it's worth resurrecting/fixing.

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

13 years agoAdd a missing <cctype> include, from Joerg Sonnenberger!
Douglas Gregor [Mon, 17 Jan 2011 19:17:01 +0000 (19:17 +0000)]
Add a missing <cctype> include, from Joerg Sonnenberger!

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

13 years agoTrailing whitespace.
Jim Grosbach [Mon, 17 Jan 2011 18:34:03 +0000 (18:34 +0000)]
Trailing whitespace.

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

13 years agoFix an off-by-one error in ctpop combining.
Benjamin Kramer [Mon, 17 Jan 2011 18:00:28 +0000 (18:00 +0000)]
Fix an off-by-one error in ctpop combining.

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

13 years agoUpdate tests to accomodate unnamed_addr introduction.
Devang Patel [Mon, 17 Jan 2011 17:54:17 +0000 (17:54 +0000)]
Update tests to accomodate unnamed_addr introduction.

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

13 years agoRoll r123609 back in with two changes that fix test failures with expensive
Cameron Zwarich [Mon, 17 Jan 2011 17:38:41 +0000 (17:38 +0000)]
Roll r123609 back in with two changes that fix test failures with expensive
checks enabled:

1) Use '<' to compare integers in a comparison function rather than '<='.

2) Use the uniqued set DefBlocks rather than Info.DefiningBlocks to initialize
the priority queue.

The speedup of scalarrepl on test-suite + SPEC2000 + SPEC2006 is a bit less, at
just under 16% rather than 17%.

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

13 years agoRevert rr123550. It causes clang build failure on darwin9.
Devang Patel [Mon, 17 Jan 2011 17:34:43 +0000 (17:34 +0000)]
Revert rr123550. It causes clang build failure on darwin9.

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

13 years agoArchive: Fix temp path names.
Michael J. Spencer [Mon, 17 Jan 2011 16:43:30 +0000 (16:43 +0000)]
Archive: Fix temp path names.

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

13 years agoAdd some platform checks. Also fix a typo on a Makefile.
Oscar Fuentes [Mon, 17 Jan 2011 16:35:14 +0000 (16:35 +0000)]
Add some platform checks. Also fix a typo on a Makefile.

Patch by arrowdodger!

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

13 years agoSupport/raw_ostream: Fix uninitalized variable in raw_fd_ostream constructor.
Michael J. Spencer [Mon, 17 Jan 2011 15:53:12 +0000 (15:53 +0000)]
Support/raw_ostream: Fix uninitalized variable in raw_fd_ostream constructor.

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

13 years agoRemove useless Tag enumeration.
Jay Foad [Mon, 17 Jan 2011 15:18:06 +0000 (15:18 +0000)]
Remove useless Tag enumeration.

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

13 years agoSplit up RotateShift itinerary in SPU.
Kalle Raiskila [Mon, 17 Jan 2011 13:33:19 +0000 (13:33 +0000)]
Split up RotateShift itinerary in SPU.
'rotq*' and 'shlq*' instructions go to the odd pipeline,
wheras the inter-vector equivalents 'rot*', 'shl*' go
to the even.

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

13 years agoAdd a DAGCombine to turn (ctpop x) u< 2 into (x & x-1) == 0.
Benjamin Kramer [Mon, 17 Jan 2011 12:04:57 +0000 (12:04 +0000)]
Add a DAGCombine to turn (ctpop x) u< 2 into (x & x-1) == 0.

This shaves off 4 popcounts from the hacked 186.crafty source.

This is enabled even when a native popcount instruction is available. The
combined code is one operation longer but it should be faster nevertheless.

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

13 years agoDon't crash SPU BE with memory accesses with big alignmnet.
Kalle Raiskila [Mon, 17 Jan 2011 11:59:20 +0000 (11:59 +0000)]
Don't crash SPU BE with memory accesses with big alignmnet.

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

13 years agoMaterialize GA addresses with movw + movt pairs for Darwin in PIC mode. e.g.
Evan Cheng [Mon, 17 Jan 2011 08:03:18 +0000 (08:03 +0000)]
Materialize GA addresses with movw + movt pairs for Darwin in PIC mode. e.g.
        movw    r0, :lower16:(L_foo$non_lazy_ptr-(LPC0_0+4))
        movt    r0, :upper16:(L_foo$non_lazy_ptr-(LPC0_0+4))
LPC0_0:
        add     r0, pc, r0

It's not yet enabled by default as some tests are failing. I suspect bugs in
down stream tools.

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

13 years agoRoll out r123609 due to failures on the llvm-x86_64-linux-checks bot.
Cameron Zwarich [Mon, 17 Jan 2011 07:26:51 +0000 (07:26 +0000)]
Roll out r123609 due to failures on the llvm-x86_64-linux-checks bot.

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

13 years agoSuppress warning "switch statement contains 'default' but no 'case' labels" on MSVC.
Francois Pichet [Mon, 17 Jan 2011 02:07:17 +0000 (02:07 +0000)]
Suppress warning "switch statement contains 'default' but no 'case' labels" on MSVC.

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

13 years agoEliminate the use of dominance frontiers in PromoteMemToReg. In addition to
Cameron Zwarich [Mon, 17 Jan 2011 01:08:59 +0000 (01:08 +0000)]
Eliminate the use of dominance frontiers in PromoteMemToReg. In addition to
eliminating a potentially quadratic data structure, this also gives a 17%
speedup when running -scalarrepl on test-suite + SPEC2000 + SPEC2006. My initial
experiment gave a greater speedup around 25%, but I moved the dominator tree
level computation from dominator tree construction to PromoteMemToReg.

Since this approach to computing IDFs has a much lower overhead than the old
code using precomputed DFs, it is worth looking at using this new code for the
second scalarrepl pass as well.

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

13 years agoUnRevert "Revert "Archive: Replace all internal uses of PathV1 with PathV2. The exter...
Michael J. Spencer [Sun, 16 Jan 2011 23:39:59 +0000 (23:39 +0000)]
UnRevert "Revert "Archive: Replace all internal uses of PathV1 with PathV2. The external API still uses PathV1.""

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

13 years agoFix rename.
Michael J. Spencer [Sun, 16 Jan 2011 22:18:41 +0000 (22:18 +0000)]
Fix rename.

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

13 years agoTest for lazy value info's ability to prove the absense of NULLs in pointers.
Nick Lewycky [Sun, 16 Jan 2011 21:57:20 +0000 (21:57 +0000)]
Test for lazy value info's ability to prove the absense of NULLs in pointers.

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

13 years agoMake everyone happy this time.
Michael J. Spencer [Sun, 16 Jan 2011 21:34:34 +0000 (21:34 +0000)]
Make everyone happy this time.

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

13 years agoProvide instruction sizes for ARMv5 variants of MUL instructions.
Anton Korobeynikov [Sun, 16 Jan 2011 21:28:33 +0000 (21:28 +0000)]
Provide instruction sizes for ARMv5 variants of MUL instructions.
This fixes PR8987

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

13 years agoUpdate README.txt to remove the DAE enhancement.
Anders Carlsson [Sun, 16 Jan 2011 21:26:15 +0000 (21:26 +0000)]
Update README.txt to remove the DAE enhancement.

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

13 years agoTeach DAE to look for functions whose arguments are unused, and change all callers...
Anders Carlsson [Sun, 16 Jan 2011 21:25:33 +0000 (21:25 +0000)]
Teach DAE to look for functions whose arguments are unused, and change all callers to pass in an undefvalue instead.

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

13 years agoUnRevert "Revert the archive part of "Support/PathV2: Add identify_magic.""
Michael J. Spencer [Sun, 16 Jan 2011 21:13:51 +0000 (21:13 +0000)]
UnRevert "Revert the archive part of "Support/PathV2: Add identify_magic.""

This reverts commit dd103021a889a986a181ce36ed7b0e8dc9b645e1.

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

13 years agoTry and fix this test. For some reason llvm-ar thinks that the file exists when
Michael J. Spencer [Sun, 16 Jan 2011 20:52:58 +0000 (20:52 +0000)]
Try and fix this test. For some reason llvm-ar thinks that the file exists when
it shouldn't, but I have no way to verify that it doesn't actually exist on the
buildbot.

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

13 years agoRevert the archive part of "Support/PathV2: Add identify_magic."
Michael J. Spencer [Sun, 16 Jan 2011 19:56:42 +0000 (19:56 +0000)]
Revert the archive part of "Support/PathV2: Add identify_magic."

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

13 years agoUpdate tests.
Rafael Espindola [Sun, 16 Jan 2011 18:02:57 +0000 (18:02 +0000)]
Update tests.

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

13 years agotidy up a comment, as suggested by duncan
Chris Lattner [Sun, 16 Jan 2011 17:46:19 +0000 (17:46 +0000)]
tidy up a comment, as suggested by duncan

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

13 years agoOnly put unnamed_addr constants in mergeable sections. Fixes PR8297.
Rafael Espindola [Sun, 16 Jan 2011 17:19:34 +0000 (17:19 +0000)]
Only put unnamed_addr constants in mergeable sections. Fixes PR8297.

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

13 years agoDon't merge two constants if we care about the address of both.
Rafael Espindola [Sun, 16 Jan 2011 17:05:09 +0000 (17:05 +0000)]
Don't merge two constants if we care about the address of both.

This fixes the original testcase in PR8927. It also causes a clang
binary built with a patched clang to increase in size by 0.21%.

We can probably get some of the size back by writing a pass that
detects that a global never has its pointer compared and adds
unnamed_addr to it (maybe extend global opt). It is also possible that
there are some other cases clang could add unnamed_addr to.

I will investigate extending globalopt next.

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

13 years agoSimplify the construction and destruction of Uses. Simplify
Jay Foad [Sun, 16 Jan 2011 15:30:52 +0000 (15:30 +0000)]
Simplify the construction and destruction of Uses. Simplify
User::dropHungOffUses().

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

13 years agoReduce and merge testcases.
Owen Anderson [Sun, 16 Jan 2011 09:13:31 +0000 (09:13 +0000)]
Reduce and merge testcases.

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

13 years agofix PR8514, a bug where the "heroic" transformation of shift/and
Chris Lattner [Sun, 16 Jan 2011 08:48:11 +0000 (08:48 +0000)]
fix PR8514, a bug where the "heroic" transformation of shift/and
into and/shift would cause nodes to move around and a dangling pointer
to happen.  The code tried to avoid this with a HandleSDNode, but
got the details wrong.

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

13 years agoRemove unnecessary specialization OperandTraits<User>.
Jay Foad [Sun, 16 Jan 2011 08:23:16 +0000 (08:23 +0000)]
Remove unnecessary specialization OperandTraits<User>.

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

13 years agoMove the implementation of the User class into a new source file,
Jay Foad [Sun, 16 Jan 2011 08:10:57 +0000 (08:10 +0000)]
Move the implementation of the User class into a new source file,
User.cpp.

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

13 years agofix PR8932, a case where arg promotion could infinitely promote.
Chris Lattner [Sun, 16 Jan 2011 08:09:24 +0000 (08:09 +0000)]
fix PR8932, a case where arg promotion could infinitely promote.

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

13 years agosimplify a little
Chris Lattner [Sun, 16 Jan 2011 07:11:21 +0000 (07:11 +0000)]
simplify a little

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

13 years agoadd some commentary
Chris Lattner [Sun, 16 Jan 2011 06:39:44 +0000 (06:39 +0000)]
add some commentary

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

13 years agoif an alloca is only ever accessed as a unit, and is accessed with load/store instruc...
Chris Lattner [Sun, 16 Jan 2011 06:18:28 +0000 (06:18 +0000)]
if an alloca is only ever accessed as a unit, and is accessed with load/store instructions,
then don't try to decimate it into its individual pieces.  This will just make a mess of the
IR and is pointless if none of the elements are individually accessed.  This was generating
really terrible code for std::bitset (PR8980) because it happens to be lowered by clang
as an {[8 x i8]} structure instead of {i64}.

The testcase now is optimized to:

define i64 @test2(i64 %X) {
  br label %L2

L2:                                               ; preds = %0
  ret i64 %X
}

before we generated:

define i64 @test2(i64 %X) {
  %sroa.store.elt = lshr i64 %X, 56
  %1 = trunc i64 %sroa.store.elt to i8
  %sroa.store.elt8 = lshr i64 %X, 48
  %2 = trunc i64 %sroa.store.elt8 to i8
  %sroa.store.elt9 = lshr i64 %X, 40
  %3 = trunc i64 %sroa.store.elt9 to i8
  %sroa.store.elt10 = lshr i64 %X, 32
  %4 = trunc i64 %sroa.store.elt10 to i8
  %sroa.store.elt11 = lshr i64 %X, 24
  %5 = trunc i64 %sroa.store.elt11 to i8
  %sroa.store.elt12 = lshr i64 %X, 16
  %6 = trunc i64 %sroa.store.elt12 to i8
  %sroa.store.elt13 = lshr i64 %X, 8
  %7 = trunc i64 %sroa.store.elt13 to i8
  %8 = trunc i64 %X to i8
  br label %L2

L2:                                               ; preds = %0
  %9 = zext i8 %1 to i64
  %10 = shl i64 %9, 56
  %11 = zext i8 %2 to i64
  %12 = shl i64 %11, 48
  %13 = or i64 %12, %10
  %14 = zext i8 %3 to i64
  %15 = shl i64 %14, 40
  %16 = or i64 %15, %13
  %17 = zext i8 %4 to i64
  %18 = shl i64 %17, 32
  %19 = or i64 %18, %16
  %20 = zext i8 %5 to i64
  %21 = shl i64 %20, 24
  %22 = or i64 %21, %19
  %23 = zext i8 %6 to i64
  %24 = shl i64 %23, 16
  %25 = or i64 %24, %22
  %26 = zext i8 %7 to i64
  %27 = shl i64 %26, 8
  %28 = or i64 %27, %25
  %29 = zext i8 %8 to i64
  %30 = or i64 %29, %28
  ret i64 %30
}

In this case, instcombine was able to eliminate the nonsense, but in PR8980 enough
PHIs are in play that instcombine backs off.  It's better to not generate this stuff
in the first place.

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

13 years agoUse an irbuilder to get some trivial constant folding when doing a store
Chris Lattner [Sun, 16 Jan 2011 05:58:24 +0000 (05:58 +0000)]
Use an irbuilder to get some trivial constant folding when doing a store
of a constant.

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

13 years agoremove a dead check, this was needed before we had an explicit veto on uses of phis.
Chris Lattner [Sun, 16 Jan 2011 05:37:55 +0000 (05:37 +0000)]
remove a dead check, this was needed before we had an explicit veto on uses of phis.

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