Chris Lattner
7a82ba0510
Fix a couple of minor problems. Because PHI nodes can use themselves, this
...
could cause infinite loops. Also, getUnderlyingObject can return null
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12351 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 23:12:55 +00:00
Chris Lattner
04b7593546
Implement mod/ref analysis for a trivial case where locals don't escape.
...
This comes up when you have a local array on the stack and you never pass
the address of elements around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12349 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 22:39:00 +00:00
Brian Gaeke
215fb76865
Make -print-machineinstrs show us the code both before and after reg. alloc.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12344 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 21:19:08 +00:00
Alkis Evlogimenos
a3f66842b2
Add support for a wider range of CMOV instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12336 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 17:59:56 +00:00
Misha Brukman
85f5e11c06
Simplify code to process CallSites (thanks to Chris).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12334 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 16:20:49 +00:00
Misha Brukman
4230f40add
Keep transitively-required passes alive for queries to work after the initial
...
user pass is destroyed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12332 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 06:16:28 +00:00
Misha Brukman
bc1dbe95b8
Evaluate ModRef information in addition to regular ol' pointer analysis.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12331 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 06:15:08 +00:00
Misha Brukman
a975a9ab80
Implement getModRefInfo() for DSA to calculate whether a function modifies or
...
references a pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12330 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 06:14:22 +00:00
Chris Lattner
230c1a7222
Add support for checking the select instruction
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12325 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:54:31 +00:00
Chris Lattner
b4f4880eba
Know the opcode name of the select instruction
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12324 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:54:20 +00:00
Chris Lattner
08a45cc2ff
Add support for select constant expressions. Use reserve a bit more to avoid
...
memory wasteage.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12323 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:54:04 +00:00
Chris Lattner
647f82be07
Add new function
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12322 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:53:41 +00:00
Chris Lattner
e97148628f
Teach the constant folder how to do select instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12321 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:53:32 +00:00
Chris Lattner
cfdd148972
Print select instructions correctly
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12320 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:53:14 +00:00
Chris Lattner
17fd273512
Add constant folding wrapper support for select instructions.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12319 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:53:03 +00:00
Chris Lattner
6e32372fcd
Add sccp support for select instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12318 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:52:44 +00:00
Chris Lattner
3d69f46d64
Add trivial optimizations for select instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12317 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:52:32 +00:00
Chris Lattner
9f24a077bd
ADd support for select instructions
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12316 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:52:14 +00:00
Chris Lattner
46b787e986
Write select instructions to bytecode
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12315 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:52:01 +00:00
Chris Lattner
e3ac22a204
Read select instrs from bytecode
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12314 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:51:49 +00:00
Chris Lattner
76f0ff394d
Allow parsing select instruction and constant expr
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12313 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 05:51:36 +00:00
Misha Brukman
56c0fa69a3
Make code more readable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12305 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-12 00:58:41 +00:00
Misha Brukman
ec85af16a0
Fix indentation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12298 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-11 23:53:51 +00:00
Misha Brukman
b8bda13140
Move implementations of functions here, which avoids #including <cstdlib> in the
...
header file and all those who #include it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12297 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-11 23:52:43 +00:00
Brian Gaeke
c760d647c6
Get rid of the abort in PhyRegAlloc::finishSavingState().
...
Make an explicit call to it from runOnFunction() if we know we're supposed to
write into the global. This is lame (esp. the const_cast), but it solves
the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12291 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-11 19:46:30 +00:00
Brian Gaeke
c46f8a4f42
Give pass a name
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12290 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-11 19:23:15 +00:00
Misha Brukman
db760d00c3
Fix compilation on Sparc: assert(0) => abort()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12289 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-11 19:08:24 +00:00
Brian Gaeke
cf68bd5fc1
In PhyRegAlloc::saveState(), dump Arguments' saved-state, and try to
...
make the output more compact.
Divorce state-saving from the doFinalization method; for some reason it's not
getting called when I want it to, at Reoptimizer time. Put the guts in
PhyRegAlloc::finishSavingState(). Put an abort() in it so that I can be really
really sure that it's getting called.
Update comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12286 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-11 06:45:52 +00:00
Brian Gaeke
36061dab06
Remove ghostly directory from the build
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12285 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-11 04:42:41 +00:00
Brian Gaeke
d1b3679214
Move all the SaveState options and stuff inton one spot at the top of the file.
...
De-constify SaveStateToModule; we have to set both it and SaveRegAllocState
explicitly in the reoptimizer.
Make SaveRegAllocState an 'external location' option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12278 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-10 22:21:03 +00:00
Brian Gaeke
14068d9f97
Only call verifySavedState if SaveRegAllocState is set AND debugging flag is on.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12277 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-10 22:01:59 +00:00
Chris Lattner
c6b0c4b9e2
Fix PR284: [indvars] Induction variable analysis violates LLVM invariants
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12275 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-10 21:42:19 +00:00
Brian Gaeke
d0f3c5e8b1
My fix for PR274 broke the build on Darwin/PPC. As I'm fairly certain this
...
bug only affects Linux systems that use GLIBC, I'm going to put ifdefs around
the array.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12269 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-10 17:38:28 +00:00
Chris Lattner
85fb1be62f
implement new method
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12264 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 19:37:06 +00:00
Alkis Evlogimenos
6a367f33f3
Spill explicit physical register defs as well.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12260 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 08:35:13 +00:00
Alkis Evlogimenos
519f4e76b7
Check if printing of implicit uses is required for all types of shift
...
instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12258 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 06:10:15 +00:00
Brian Gaeke
00f0a29e1c
Address PR274 - '[JIT] Programs cannot resolve the fstat function'
...
by trying to get the compiler to generate an undefined reference for it
and related functions which live in libc_nonshared.a on Linux.
Linkers... sigh.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12256 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 05:22:10 +00:00
Brian Gaeke
cf47198a49
Hmm, who left this sitting around in my tree
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12255 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 04:49:13 +00:00
Alkis Evlogimenos
cc2a2a530f
Differentiate between extended precision floats (80-bit) and double precision floats (64-bit)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12254 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 03:37:54 +00:00
Alkis Evlogimenos
0309066f6c
Use newly added API to emit bytes for instructions that gas misassembles
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12253 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 03:35:34 +00:00
Alkis Evlogimenos
39c2005b70
Add emitInstruction() API so that we can get the bytes of a simple instruction
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12252 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 03:34:53 +00:00
Alkis Evlogimenos
f6e8156008
Constify things a bit
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12251 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-09 03:30:12 +00:00
Brian Gaeke
8b16a16918
Change PhyRegAlloc::saveStateForValue()'s arg type to deal with
...
AllocInfo.Instruction becoming an int.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12247 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 23:22:03 +00:00
Brian Gaeke
54a76b8808
Save argument list alloc state by recording it as the operands of Instruction
...
#-1. Other minor changes to deal with AllocInfo.Instruction becoming an int.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12246 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 23:22:02 +00:00
Brian Gaeke
757ccd5149
Make AllocInfo's Instruction an int, so that we can overload it for arguments.
...
(Instruction #-1's operands = argument list).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12245 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 23:22:01 +00:00
Chris Lattner
96ab5caf2d
Switch to using edge profiling information as the basic source of profile info
...
from using basic block counts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12242 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 22:04:08 +00:00
Chris Lattner
62e84f376b
Refactor implementations
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12240 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 21:30:35 +00:00
Chris Lattner
6ba8972919
Import the trace class from the reoptimizer
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12236 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 20:57:27 +00:00
Chris Lattner
dbbbfef165
If we have edge counts, we can produce block counts. I've verified that
...
using an edge profile to produce block counts gives the exact same numbers
as using a block count directly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12232 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 20:03:52 +00:00
Chris Lattner
9f717ef279
Adjust to new interface
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12231 91177308-0d34-0410-b5e6-96231b3b80d8
2004-03-08 18:51:45 +00:00