Chris Lattner
63168d2244
Do not let the numbering of PHI nodes placed in the function depend on
...
non-deterministic things like the ordering of blocks in the dominance
frontier of a BB. Unfortunately, I don't know of a better way to solve
this problem than to explicitly sort the BB's in function-order before
processing them. This is guaranteed to slow the pass down a bit, but
is absolutely necessary to get usable diffs between two different tools
executing the mem2reg or scalarrepl pass.
Before this, bazillions of spurious diff failures occurred all over the
place due to the different order of processing PHIs:
- %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.0, uint 0, uint 0
+ %tmp.111 = getelementptr %struct.Connector_struct* %upcon.0.1, uint 0, uint 0
Now, the diffs match.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14244 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-19 07:40:14 +00:00
Chris Lattner
1654cff8e8
Do not sort by the address of LLVM ConstantInt* objects. This produces
...
nondeterministic results that depend on where these objects land in memory.
Instead, sort by the value of the constant, which is stable.
Before this patch, the -simplifycfg pass run from two different compilers
could cause different code to be generated, though it was semantically the
same:
@@ -12258,8 +12258,8 @@
%s_addr.1 = phi sbyte* [ %s, %entry ], [ %inc.0, %no_exit ] ; <sbyte*> [#uses=5]
%tmp.1 = load sbyte* %s_addr.1 ; <sbyte> [#uses=1]
switch sbyte %tmp.1, label %no_exit [
- sbyte 0, label %loopexit
sbyte 46, label %loopexit
+ sbyte 0, label %loopexit
]
We need to stomp all of this stuff out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14243 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-19 07:02:14 +00:00
Chris Lattner
8430a4545c
Do not loop over uses as we delete them. This causes iterators to be
...
invalidated out from under us. This bug goes back to revision 1.1: scary.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14242 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-19 02:02:22 +00:00
Chris Lattner
190196047a
Bug fixed
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14241 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-19 01:11:02 +00:00
Chris Lattner
553a7abc78
Test for PR374
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14240 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-19 01:08:12 +00:00
Misha Brukman
b3707baf89
Fix relative link to the CVS mirrors.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14239 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 20:18:31 +00:00
Chris Lattner
883bcbea3e
Add link to the CVS mirror hosted by Reid
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14238 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 20:15:58 +00:00
Misha Brukman
a0f71e4d43
Add link documenting shared/static library differences across platforms.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14237 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 18:39:00 +00:00
Chris Lattner
f82bba95ba
Bug fixed
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14236 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 17:57:29 +00:00
Misha Brukman
62a9343da6
Capitalize Cygwin.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14235 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 15:54:54 +00:00
Misha Brukman
ebb0faabd3
* Fix file header and name
...
* Order #includes alphabetically
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14234 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 15:38:49 +00:00
Misha Brukman
b487303725
Use the machine-independent method of querying the page size.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14233 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 15:34:07 +00:00
Misha Brukman
0ed24ad968
Add a target-independent way to query page size.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14232 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 15:30:25 +00:00
Brian Gaeke
9d2427c074
.zero doesn't work in the Solaris assembler.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14231 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:59:16 +00:00
Brian Gaeke
a3c57624c0
Get rid of selects the easy way
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14230 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:46:15 +00:00
Brian Gaeke
cfaf22445c
Make visitAllocaInst() look more like its X86 counterpart.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14229 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:45:52 +00:00
Brian Gaeke
4f217fdd10
Mess around with allocation order. In particular, I think we ought to be
...
using the local & in regs first because they are not clobbered by calls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14228 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:19:08 +00:00
Brian Gaeke
fbaae01269
JMPL has a delay slot.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14227 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 08:18:54 +00:00
Brian Gaeke
0735920173
Clean up the commented-out F3_3 stuff.
...
Replace it with a working class for FP instrs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14226 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:28:21 +00:00
Brian Gaeke
f89cc655ab
Fix jmpl.
...
Add some FP moves.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14225 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:28:10 +00:00
Brian Gaeke
ceb224148e
Support printing base+offset pairs where the offset is a register.
...
Use this for printing the jmpl indirect-call instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14224 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:27:59 +00:00
Brian Gaeke
9d67ea0b61
Support intrinsic calls (although no particular intrinsics are supported yet).
...
Support indirect calls.
Support returning a float value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14223 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:27:48 +00:00
Chris Lattner
ceebeb64a6
Calls to __builtin_isunordered and friends no longer cause llvmgcc to ICE.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14222 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:26:29 +00:00
Chris Lattner
5b62aa743d
Implement Transforms/InstCombine/and.ll:test17, a common case that
...
occurs due to unordered comparison macros in math.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14221 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:07:51 +00:00
Chris Lattner
b80e3ada7b
New test
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14220 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 06:07:17 +00:00
Chris Lattner
e5ad50b2e8
Do not function resolve intrinsics. This prevents warnings and possible bad
...
things from happening due to
declare bool %llvm.isunordered(double, double)
declare bool %llvm.isunordered(float, float)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14219 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 05:50:48 +00:00
Chris Lattner
eaf10c8242
Test that C99 unordered comparison functions are not being turned into libc calls
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14218 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 05:42:50 +00:00
Brian Gaeke
562d5b0f6d
Add load instructions for floating-point registers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14217 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 05:19:27 +00:00
Brian Gaeke
c93a75223d
Support alloca instructions.
...
Support copying floating-point constants to registers.
Add assertion to visitCallInst to abort if we hit a NULL calledFunction, for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14216 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 05:19:16 +00:00
Chris Lattner
a8abee2136
Fix printing of Argument objects, problem found by Patrick Meredith
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14215 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 04:07:20 +00:00
Chris Lattner
cb37056996
New testcase for GCC unordered comparison builtins
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14214 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 03:39:56 +00:00
Chris Lattner
667ea024b5
Codegen sub C, X a little bit better for register pressure. Instead of
...
mov REG, C
sub REG, X
generate:
neg X
add X, C
which uses one less reg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14213 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 00:50:37 +00:00
Chris Lattner
a6f9fe6dbc
Fold setcc instructions into select and branches that are not in the same BB as
...
the setcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14212 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-18 00:29:22 +00:00
Brian Gaeke
6713d988a4
Make storeRegToStackSlot slightly shorter.
...
Make copyRegToReg return 1 instead of -1.
Edit a comment in emitPrologue().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14211 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:48 +00:00
Brian Gaeke
070bb4a8da
Set the isBranch and isTerminator flags on branch instructions correctly.
...
Add a FIXME about the (currently unused) JMPL instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14210 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:29 +00:00
Brian Gaeke
8308d04dbc
Emit stores correctly; don't fail an assertion.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14209 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:19 +00:00
Brian Gaeke
6c868a4c17
Support generating machine instructions for Phi nodes (based on x86, but with
...
modifications for 1 LLVM BB --> many MBBs).
Fix store operand order: make it always be Base, Offset, SrcReg (think
"[ Base + Offset ] = SrcReg").
Rewrite visitBranchInst() to be even dumber (but working) -- give up on
the branch fallthrough trick, for the time being.
Make visitSetCondInst() work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14208 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:34:08 +00:00
Brian Gaeke
fc7fa31211
Recognize more branches.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14207 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:33:57 +00:00
Brian Gaeke
afe16e1742
I love the smell of a freshly broken PowerPC build in the morning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14206 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:27:04 +00:00
Brian Gaeke
988b7ba5ba
Make debugging dumps w/ multiple MachineBBs for a given LLVM BB readable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14205 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:26:53 +00:00
Chris Lattner
ccd9796a46
Do not fold loads into instructions if it is used more than once. In particular
...
we do not want to fold the load in cases like this:
X = load
= add A, X
= add B, X
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14204 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 22:15:25 +00:00
Chris Lattner
5253f05709
Fix compilation problem on freebsd. Problem noted by Vladimir Merzliakov in
...
PR371
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14203 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 21:20:52 +00:00
Brian Gaeke
09c1309814
Use addGlobalAddress and addMBB for call & branch targets instead of addPCDisp.
...
Abort if we see a PCRelativeDisp MachineOperand, to be safe. This matches
the X86 backend.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14202 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 19:39:23 +00:00
Chris Lattner
f70c22b019
Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14201 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 18:19:28 +00:00
Chris Lattner
5dd04027c7
Rename Type::PrimitiveID to TypeId and ::getPrimitiveID() to ::getTypeID()
...
Delete two functions that are now methods on the Type class
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14200 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 18:16:02 +00:00
Chris Lattner
c2616625a3
Minor cleanup
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14199 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 17:56:54 +00:00
Misha Brukman
0603079719
Make header comment fit within 80 cols.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14198 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 15:49:36 +00:00
Misha Brukman
b5a2e40dd8
Since the Great LLVM Tool Renaming(tm), we no longer have collisions between our
...
assembler/linker and the system equivalents.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14197 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 15:39:58 +00:00
Brian Gaeke
802daf8b7d
Fix typo in DEBUG printout.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14196 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-17 07:26:52 +00:00
Chris Lattner
aebcce8404
Fix a recent regression in Applications/sgefa that Alkis pointed out to me.
...
The vector may actually be empty if the register that we are marking as
recently used is not actually allocatable. This happens for physical registers
that are not allocatable, like the ST(x) registers on X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14195 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-16 06:57:29 +00:00