Nick Lewycky
ad108baf47
Add CreateNUWAdd and CreateNUWSub to complement the existing CreateNSWAdd and
...
CreateNSWSub functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86930 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 02:08:11 +00:00
Chris Lattner
3e04a05672
should not commit when distracted.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86929 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 02:04:17 +00:00
Dan Gohman
72b2990a74
Make the BranchFolderPass class local to BranchFolding.cpp.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86928 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:59:26 +00:00
Chris Lattner
a5810add9c
We now thread some impossible condition information with LVI.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86927 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:55:20 +00:00
Dan Gohman
8520149db1
Minor code cleanups.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86926 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:51:28 +00:00
Chris Lattner
87e9f59c7a
with the new code we can thread non-instruction values. This
...
allows us to handle the test10 testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86924 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:41:34 +00:00
Chris Lattner
1c96b4187b
this argument can be an arbitrary value, it doesn't need to be an instruction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86923 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:37:43 +00:00
Chris Lattner
38392bbeb8
expose edge information and switch j-t to use it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86920 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:29:10 +00:00
Lang Hames
f035ce58bc
Fixed an iteration condition in PreAllocSplitting. This should fix some miscompilations casued by PreAllocSplitting.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86919 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:24:08 +00:00
Chris Lattner
b8c124c343
move some stuff into DEBUG's and turn on lazy-value-info for
...
the basic.ll testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86918 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:22:16 +00:00
Eric Christopher
5cf0aedd0b
Fix typo, cleanup whitespace.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86917 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 01:06:08 +00:00
Devang Patel
afa5a34b30
Do not use StringRef in DebugInfo interface.
...
This allows StringRef to skip controversial if(str) check in constructor.
Buildbots, wait for corresponding clang and llvm-gcc FE check-ins!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86914 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 00:50:58 +00:00
Dan Gohman
ad6af45dc1
Tail merge at any size when there are two potentials blocks and one
...
can be made to fall through into the other.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86909 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 00:39:10 +00:00
Bill Wendling
73b5551058
Don't mark a call as potentially throwing if the function it's calling has the
...
"nounwind" attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86897 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 23:17:02 +00:00
Bruno Cardoso Lopes
9089ba8e5e
A real solution for the first part of PR5445
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86895 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 23:09:33 +00:00
Chris Lattner
1697652922
make LazyValueInfo actually to some stuff. This isn't very tested but improves
...
strswitch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86889 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 22:48:44 +00:00
Chris Lattner
2ad00bf99d
pass TD into a SimplifyCmpInst call. Add another case that
...
uses LVI info when -enable-jump-threading-lvi is passed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86886 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 22:31:38 +00:00
Dan Gohman
ffe644ebf4
Promote MergePotentialsElt and SameTailElt to be regular classes
...
instead of typedefs for std::pair. This simplifies the type of
SameTails, which previously was std::vector<std::pair<std::vector<std::pair<unsigned, MachineBasicBlock *> >::iterator, MachineBasicBlock::iterator>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86885 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 21:57:02 +00:00
Kenneth Uildriks
c158dde219
x86 users can now return arbitrary sized structs. Structs too large to fit in return registers will be returned through a hidden sret parameter introduced during SelectionDAG construction.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86876 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:59:24 +00:00
Dan Gohman
7cc253e3b8
Revert this line of 86871.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86875 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:56:05 +00:00
Devang Patel
3380cc5307
If doesSupportDebugInformation() is false then do not try to emit dwarf debug info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86874 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:55:08 +00:00
Dan Gohman
412a3b90d1
Check in the changes to this file too.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86873 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:49:34 +00:00
Dan Gohman
2210c0bea8
Add support for tail duplication to BranchFolding, and extend
...
tail merging support to handle more cases.
- Recognize several cases where tail merging is beneficial even when
the tail size is smaller than the generic threshold.
- Make use of MachineInstrDesc::isBarrier to help detect
non-fallthrough blocks.
- Check for and avoid disrupting fall-through edges in more cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86871 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:48:59 +00:00
Jakob Stoklund Olesen
3e20475fee
Fix liveness calculation when splitting critical edges during PHI elimination.
...
- Edges are split before any phis are eliminated, so the code is SSA.
- Create a proper IR BasicBlock for the split edges.
- LiveVariables::addNewBlock now has same syntax as
MachineDominatorTree::addNewBlock. Algorithm calculates predecessor live-out
set rather than successor live-in set.
This feature still causes some miscompilations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86867 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:31:31 +00:00
Devang Patel
eba4ed9cbb
Reenable StackTracke.cpp test.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86861 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:08:42 +00:00
Devang Patel
4a8efb0c39
Add SetDebugLocation() variant to
...
add debug info location to an instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86859 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:06:06 +00:00
Evan Cheng
77e4751011
Add TargetLowering::isLegalICmpImmediate. It tells LSR what immediate can be folded into target icmp instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86858 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:05:52 +00:00
Jim Grosbach
f4997e87e3
Do jump table adjustment before constant island allocation
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86857 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 19:04:24 +00:00
Dan Gohman
cdc06ba5df
Fix indentation level.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86856 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 18:42:28 +00:00
Dan Gohman
4e3f125e18
Whitespace cleanups.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86855 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 18:38:14 +00:00
Dan Gohman
a127edceae
Prefix MBB numbers with "BB#" in debug output to make it clear what
...
the numbers mean.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86854 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 18:23:17 +00:00
Dan Gohman
d194498d26
Minor code simplification.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86853 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 18:18:34 +00:00
Dan Gohman
641c6f983e
Fix a copy+pasto in a comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86852 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 18:14:02 +00:00
Dan Gohman
adaace8aa8
Set isBarrier = 1 on return instructions, as they are control barriers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86851 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 18:11:07 +00:00
Dan Gohman
e94975ee64
Use a tab in INT3's asm string, for consistency.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86850 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 18:07:16 +00:00
Chris Lattner
fc926c2395
another const prop failure.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86848 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 17:54:02 +00:00
Chris Lattner
6fdfc9c630
add a note
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86847 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 17:51:27 +00:00
Chris Lattner
d682a60c4e
Reject duplicate case values in a switch, PR5450.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86846 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 17:37:02 +00:00
Duncan Sands
a3da922a27
Don't trivially delete unused calls to llvm.invariant.start. This allows
...
llvm.invariant.start to be used without necessarily being paired with a call
to llvm.invariant.end. If you run the entire optimization pipeline then such
calls are in fact deleted (adce does it), but that's actually a good thing since
we probably do want them to be zapped late in the game. There should really be
an integration test that checks that the llvm.invariant.start call lasts long
enough that all passes that do interesting things with it get to do their stuff
before it is deleted. But since no passes do anything interesting with it yet
this will have to wait for later.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86840 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 15:34:13 +00:00
Evan Cheng
012397489b
Add nounwind.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86814 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 07:11:02 +00:00
Chris Lattner
f8fb7c26ee
remove the now dead condprop pass, PR3906.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86810 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 05:56:35 +00:00
Jeffrey Yasskin
b069c91191
Fix JITTest.ModuleDeletion in -Asserts mode (which turns off JITEmitDebugInfo
...
by default).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86807 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 05:30:02 +00:00
Chris Lattner
f1e9cf5020
remove condprop testcases.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86804 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 05:25:16 +00:00
Daniel Dunbar
a8333d3d10
Add StringRef::split(StringRef), to complement StringRef::split(char).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86803 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 05:19:11 +00:00
Rafael Espindola
90a6fd31b7
Remove dead code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86802 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 04:10:24 +00:00
Sandeep Patel
bf177ee6fd
Show command-line args and features passed into backend in debug output. Approved by Evan Cheng.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86797 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 03:23:46 +00:00
Daniel Dunbar
95470b73ba
Add missing run line. Devang, please check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86795 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 03:10:03 +00:00
Daniel Dunbar
c032679d3e
Fix -Asserts warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86794 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 03:09:50 +00:00
Jim Grosbach
1fc7d715aa
The TBB and TBH instructions for Thumb2 are really handy for jump tables, but
...
can only branch forward. To best take advantage of them, we'd like to adjust
the basic blocks around a bit when reasonable. This patch puts basics in place
to do that, with a super-simple algorithm for backwards jump table targets that
creates a new branch after the jump table which branches backwards. Real
heuristics for reordering blocks or other modifications rather than inserting
branches will follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86791 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 02:47:19 +00:00
Chris Lattner
cc4d3b25f3
stub out some LazyValueInfo interfaces, and have JumpThreading
...
start using them in a trivial way when -enable-jump-threading-lvi
is passed. enable-jump-threading-lvi will be my playground for
awhile.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86789 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-11 02:08:33 +00:00