Chris Lattner
d2f09965e6
zext(undef) = 0 and sext(undef) = 0, not undef.
...
This hopefully fixes a miscompilation of TargetData.cpp when self hosting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40125 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 22:09:02 +00:00
Chris Lattner
3ccc6bc61c
this xform is already done by the constant folder.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40124 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 22:06:41 +00:00
Evan Cheng
8bd6035750
Added -print-emitted-asm to print out JIT generated asm to cerr.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40123 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 21:56:13 +00:00
Devang Patel
edbef38067
Use SmallVector instead of std::vector.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40109 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 18:04:54 +00:00
Dan Gohman
9941f7426d
Optimize alignment of loads and stores.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40102 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 16:34:21 +00:00
Duncan Sands
e2abf12436
Place SCCPSolver also in the anonymous namespace. This
...
pacifies g++-4.2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40089 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 08:56:21 +00:00
Owen Anderson
c9399be5e5
Fix a bug where we were marking GEP expressions with the wrong opcode.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40085 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 08:19:20 +00:00
Owen Anderson
521a20207c
When removing instructions from the analysis, be sure to check the confirmed
...
flag when determining what to do with dependencies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40079 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 06:16:07 +00:00
Evan Cheng
b4162fd393
Because we promote SSE logical ops and loads to v2i64, we often end up generate
...
code that cross integer / floating point domains (e.g. generate pxor / pand for
logical ops on floating point value, movdqa to load / store floating point SSE
values). Given that, it's better to use movaps instead of movdqa and movups
instead of movdqu. They have the same latency but the "aps" variants are one
byte shorter.
If the domain crossing problem is a real performance issue, then we will have to
fix it with dynamic programming based isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40076 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 00:27:43 +00:00
Evan Cheng
d5f181a665
Oops. These stores actually produce results.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40074 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-20 00:20:46 +00:00
Evan Cheng
d4d01b71a7
Fix custom lowering of SSE FXOR.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40071 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 23:36:01 +00:00
Evan Cheng
31d3a65052
Fix patterns so we isel the xorps, etc. for floating pt logical SSE ops. DAG combiner may fold away the (bit_convert (load)).
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40070 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 23:34:10 +00:00
Reid Spencer
9445e9aaa0
For PR1553:
...
Change the keywords for the zext and sext parameter attributes to be
zeroext and signext so they don't conflict with the keywords for the
instructions of the same name. This gets around the ambiguity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40069 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 23:13:04 +00:00
Reid Spencer
087b72d1bc
Hush a noisy warning from GCC 4.2 about overflow during conversion by using
...
the type "unsigned" instead of uintptr_t for a 1-bit structure field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40066 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 21:05:30 +00:00
Owen Anderson
b83e56f6b6
Make val_replace fail early, which reduces the time to optimize 403.gcc to 14.8s.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40064 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 19:57:13 +00:00
Devang Patel
58e0ef1e90
Verify loop info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40062 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 18:02:32 +00:00
Duncan Sands
20d824b7df
Replace mysterious code causing a g++-4.2 warning
...
with hopefully correct code that pleases g++-4.2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40051 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 09:42:01 +00:00
Duncan Sands
70d0bd1624
As pointed out by g++-4.2, the original code didn't do
...
what it thought it was doing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40044 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 07:31:58 +00:00
Owen Anderson
71a1e57d18
Remember to free the heap allocated array if we're not going to use it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40043 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 06:45:33 +00:00
Owen Anderson
19bc4a8acd
Use SmallVector and DenseMap in even more places.
...
With this, the time to optimize 403.gcc is down to 15.1s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40042 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 06:37:56 +00:00
Owen Anderson
fb66541e63
Change ValueTable to use a DenseMap for mapping expressions to value numbers.
...
This results in a slight speedup for 403.gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40040 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 06:13:15 +00:00
Devang Patel
9750b5d577
Set up ground work to verify preserved analysis info.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40039 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 05:36:09 +00:00
Owen Anderson
b97819852a
Move some sets and maps to SmallPtrSet and DenseMap respectively. This
...
reduces the time to optimize 403.gcc from 17.6s to 16.4s.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40036 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 03:32:44 +00:00
Devang Patel
a8a8a36629
After a basic block is split into two parts,
...
second part dominates all the blocks dominated
by original basic block. And first part dominates
second part.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40035 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 02:29:24 +00:00
Devang Patel
72ea8d9060
Now this temp. fix is not required.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40034 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 02:22:21 +00:00
Evan Cheng
64d80e3387
Change instruction description to split OperandList into OutOperandList and
...
InOperandList. This gives one piece of important information: # of results
produced by an instruction.
An example of the change:
def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
=>
def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40033 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 01:14:50 +00:00
Evan Cheng
4558b807a2
Only adjust esp around calls in presence of alloca.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40030 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 00:42:58 +00:00
Evan Cheng
7e7bbf8271
Only adjust esp around calls in presence of alloca.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40028 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-19 00:42:05 +00:00
Devang Patel
24857a3fac
Fix typo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40025 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 23:50:19 +00:00
Devang Patel
31ad75329e
Fix dominator info update to accommodate CFG changes.
...
This fixes PR1559.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40024 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 23:48:20 +00:00
Evan Cheng
273288c888
Add comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40022 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 23:34:48 +00:00
Evan Cheng
3c46eefba2
Use MOV instead of LEA to restore ESP if callee-saved frame size is 0; if previous instruction updates esp, fold it in.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40018 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 21:26:06 +00:00
Dan Gohman
6ab2d18f5e
Add constructor overloads for LoadInst and StoreInst that insert at the
...
end of a BasicBlock and have an alignment parameter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40016 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 20:51:11 +00:00
Dan Gohman
4106f3714e
Implement initial memory alignment awareness for SSE instructions. Vector loads
...
and stores that have a specified alignment of less than 16 bytes now use
instructions that support misaligned memory references.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40015 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 20:23:34 +00:00
Owen Anderson
b54b315251
Fix an issue where assignments that caused a SmallPtrSet to become non-small
...
would result in calling realloc() on a null pointer. Instead, if we encounter
this situation, make a normal call to malloc().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40014 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 19:54:15 +00:00
Dan Gohman
48613b930a
It's not necessary to do rounding for alloca operations when the requested
...
alignment is equal to the stack alignment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 16:29:46 +00:00
Evan Cheng
b5cd24973c
New entry.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39998 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-18 08:21:49 +00:00
Evan Cheng
9b8c674432
Fold prologue esp update when possible.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39984 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 21:26:42 +00:00
Evan Cheng
f99002c143
Dead code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39979 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 20:01:19 +00:00
Evan Cheng
5b3332cc27
Make sure not to break eh_return.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39978 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 18:40:47 +00:00
Evan Cheng
698b63862c
Update.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39977 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 18:39:45 +00:00
Evan Cheng
f27795d174
Missed the case where alloca is used but the stack size (not including callee-saved portion) is zero. Thanks Dan.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39974 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 18:03:34 +00:00
Rafael Espindola
969c44481b
detect invalid combination of sret and byval
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39971 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 13:34:23 +00:00
Evan Cheng
89d1659cf2
Use push / pop for prologues and epilogues.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39967 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 07:59:08 +00:00
Chris Lattner
c3dbe70ce7
no email addrs in file headers
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39962 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 05:56:43 +00:00
Reid Spencer
845b31de0c
Unbreak the build by putting calls to free into the implementation file and
...
having that implementation file #include <cstdlib>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39952 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-17 02:16:12 +00:00
Owen Anderson
ce17b1c1f8
Take advantage of undefined behavior if the source program tries to GEP
...
beyond the end of an alloca to make FastDSE faster and more aggressive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39945 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-16 23:34:39 +00:00
Owen Anderson
faac518ce0
Add support for walking up memory def chains, which enables finding many more
...
dead stores on 400.perlbench.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39929 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-16 21:52:50 +00:00
Owen Anderson
1629a1fa87
Use realloc() to (potentially) resize the contents of SmallPtrSet in place.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39926 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-16 21:27:44 +00:00
Reid Spencer
bde6869ef4
Return Undef if the block has no dominator. This was required to allow
...
llvm-gcc build to succeed. Without this change it fails in libstdc++
compilation. This causes no regressions in dejagnu tests. However,
someone who knows this code better might want to review it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@39924 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-16 21:03:44 +00:00