Evan Cheng
f870fbc554
If a PHI node has a single implicit_def source, replace it with an implicit_def instead of a copy.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49543 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11 17:54:45 +00:00
Evan Cheng
4cce6b4c78
Use of implicit_def is not part of live interval. Create empty intervals for the uses when the live interval is being spilled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49542 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11 17:53:36 +00:00
Gabor Greif
78256a199e
detabify
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49524 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11 09:34:57 +00:00
Owen Anderson
8f46c78fcc
Fix PR2213 by simultaneously making GVN more aggressive with the return values
...
of calls and less aggressive with non-readnone calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49516 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-11 05:11:49 +00:00
Evan Cheng
d2012d0c4b
Remove implicit_def instructions that become dead as result of coalescing.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49513 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 23:48:35 +00:00
Evan Cheng
5d3600f576
Allow registers defined by implicit_def to be clobbered.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49512 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 23:47:53 +00:00
Dan Gohman
c04575f494
Fix a typo in a comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49504 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 23:02:38 +00:00
Owen Anderson
f062f10231
Fix for PR2190. Memdep's non-local caching was checking dirtied blocks in the
...
wrong order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49499 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 22:13:32 +00:00
Dan Gohman
3bd659ba20
Make several symbols static.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49496 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 21:11:47 +00:00
Dan Gohman
eee962e1ce
Teach InstCombine's ComputeMaskedBits to handle pointer expressions
...
in addition to integer expressions. Rewrite GetOrEnforceKnownAlignment
as a ComputeMaskedBits problem, moving all of its special alignment
knowledge to ComputeMaskedBits as low-zero-bits knowledge.
Also, teach ComputeMaskedBits a few basic things about Mul and PHI
instructions.
This improves ComputeMaskedBits-based simplifications in a few cases,
but more noticeably it significantly improves instcombine's alignment
detection for loads, stores, and memory intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49492 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 18:43:06 +00:00
Evan Cheng
172b70c62a
A copy instruction may use a register multiple times on some targets. Change them all.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49491 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 18:38:47 +00:00
Evan Cheng
f0785153e5
Add comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49469 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 08:03:14 +00:00
Chris Lattner
2189c17443
add a note, this is actually not too bad to implement.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49466 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 05:54:50 +00:00
Chris Lattner
a825d75f1d
move the x86-32 part of PR2108 here.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49465 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 05:37:47 +00:00
Chris Lattner
db66750753
Fix the x86-64 side of PR2108 by adding a v2f64 version of
...
MOVZQI2PQIrr. This would be better handled as a dag combine
(with the goal of eliminating the bitconvert) but I don't know
how to do that safely. Thoughts welcome.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49463 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 05:13:43 +00:00
Evan Cheng
80b09fe8bc
Teach branch folding pass about implicit_def instructions. Unfortunately we can't just eliminate them since register scavenger expects every register use to be defined. However, we can delete them when there are no intra-block uses. Carefully removing some implicit def's which enable more blocks to be optimized away.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49461 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 02:32:10 +00:00
Chris Lattner
0c1963099f
Disable an xform we've had for a long time, pow(x,0.5) -> sqrt.
...
This is not safe for all inputs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49458 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-10 02:07:51 +00:00
Evan Cheng
7e073baedb
- More aggressively coalescing away copies whose source is defined by an implicit_def.
...
- Added insert_subreg coalescing support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49448 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 20:57:25 +00:00
Dan Gohman
7d8143f0ef
Make isVectorClearMaskLegal's operand list const.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49446 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 20:09:42 +00:00
Dan Gohman
c2ffd4b1cb
Add XMM1 as a second return value register for f32 and f64 on x86-64. This
...
is needed for the x86-64-ABI handling of structs that contain floating-point
members that are returned by value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49441 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 17:54:37 +00:00
Dan Gohman
719e64e8c1
Add DX as a second return value register for i16 on x86.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49440 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 17:53:38 +00:00
Chris Lattner
cc7f168c6c
Generalize getUnaryFloatFunction to handle any FP unary function, automatically
...
figuring out the suffix to use. implement pow(2,x) -> exp2(x).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49437 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 17:48:11 +00:00
Chris Lattner
8bb9a4f28f
use the new ConstantFP::get method to make this work with
...
long double and simplify the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49435 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 17:17:35 +00:00
Devang Patel
d4e0af9f89
Be conservative if getresult operand is neither call nor invoke.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49430 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 15:58:24 +00:00
Owen Anderson
a723d1e48f
Factor a bunch of functionality related to memcpy and memset transforms out of
...
GVN and into its own pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49419 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 08:23:16 +00:00
Owen Anderson
82a66291b0
Remove accidentally duplicated code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49418 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 07:55:01 +00:00
Chris Lattner
288e78fbe7
add a simplified accessor for creating an fp constant of a
...
particular value but variable type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49416 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 06:38:30 +00:00
Evan Cheng
f20d943bc6
Missed a hasInterval check.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49415 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 01:30:15 +00:00
Chris Lattner
4592230265
add a version of ConstantFP::get that doesn't take a redundant Type* value,
...
start migrating code over to use it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49413 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 00:45:01 +00:00
Chris Lattner
77d00b0cea
many cleanups to the pow optimizer. Allow it to handle powf,
...
add support for pow(x, 2.0) -> x*x.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49411 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-09 00:07:45 +00:00
Dale Johannesen
e8277dc7d6
Rename -disable-required-unwind-tables to unwind-tables-optional.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49389 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 18:07:49 +00:00
Duncan Sands
92432a8db1
Convenience method for setting the nounwind
...
attribute for a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49373 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 07:23:58 +00:00
Devang Patel
34437f35e9
Fix insert point handling for multiple return values.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49367 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 02:24:08 +00:00
Dale Johannesen
f2247cfb38
Handle the situation in 2008-01-25-EmptyFunction.ll
...
correctly when unwind info is being generated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49366 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 00:37:56 +00:00
Dale Johannesen
4e1b79459f
Implement new llc flag -disable-required-unwind-tables.
...
Corresponds to -fno-unwind-tables (usually default in gcc).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49361 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-08 00:10:24 +00:00
Ted Kremenek
9b01cc0ede
Make getDirnameSep a static method (not part of Path's interface).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49354 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 22:01:32 +00:00
Ted Kremenek
cf55c8e221
Added method Path::getDirname().
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49352 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 21:53:57 +00:00
Dan Gohman
36b5c1338a
Rename MemOperand to MachineMemOperand. This was suggested by
...
review feedback from Chris quite a while ago. No functionality
change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49348 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 19:35:22 +00:00
Owen Anderson
412821284f
Add operator= implementations to SparseBitVector, allowing it to be used in GVN. This results
...
in both time and memory savings for GVN. For example, one testcase went from 10.5s to 6s with
this patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49345 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 17:38:23 +00:00
Daniel Berlin
a2ce2e3dd9
Fix PR 2169.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49339 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 14:20:50 +00:00
Duncan Sands
e2c4304654
Use Intrinsic::getDeclaration in more places.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49338 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 13:45:04 +00:00
Duncan Sands
3d292aca03
The "stacksave is not nounwind problem" no longer
...
needs to be fixed here - a previous commit made sure
that intrinsics always get the right attributes.
So remove no-longer needed code, and while there use
Intrinsic::getDeclaration rather than getOrInsertFunction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49337 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 13:43:58 +00:00
Duncan Sands
a122043c2c
Use Intrinsic::getDeclaration to get hold of
...
intrinsics. Fix up the argument type (should
be i8*, was an array*).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49336 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 13:41:19 +00:00
Duncan Sands
79ab3e8014
Make sure that intrinsics automagically get the
...
right parameter attributes no matter how they
are obtained.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49335 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 13:39:11 +00:00
Roman Levenstein
dc1adac582
Re-commit of the r48822, where the infinite looping problem discovered
...
by Dan Gohman is fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49330 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 10:06:32 +00:00
Owen Anderson
e5ffa900f8
Make GVN more memory efficient, particularly on code that contains a large number of
...
allocations, which GVN can't optimize anyways.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49329 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 09:59:07 +00:00
Dale Johannesen
11b80a8e1c
Mark calls to llvm.stacksave, llvm.stackrestore as
...
nounwind. When such calls are inlined into something
else that is invoked, they were getting changed to invokes,
which is badness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49299 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-07 00:08:48 +00:00
Gabor Greif
e64d248b63
regenerate
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49293 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06 23:07:54 +00:00
Chris Lattner
aee7f21c47
fix warnings with assertions disabled.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49285 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06 21:50:58 +00:00
Chris Lattner
409a3d0837
Silence warning when no assertions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49284 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-06 21:46:45 +00:00