Evan Cheng
5fe81cf64e
Enable more fold (sext (load x)) -> (sext (truncate (sextload x)))
...
transformation. Previously, it's restricted by ensuring the number of load uses
is one. Now the restriction is loosened up by allowing setcc uses to be
"extended" (e.g. setcc x, c, eq -> setcc sext(x), sext(c), eq).
llvm-svn: 43465
2007-10-29 19:58:20 +00:00
Dan Gohman
65be3b6502
Add explicit keywords.
...
llvm-svn: 43464
2007-10-29 19:52:04 +00:00
Dan Gohman
a309c59972
Update a comment to reflect the current code.
...
llvm-svn: 43463
2007-10-29 19:32:39 +00:00
Dan Gohman
459bb8cbd2
Remove an unused function argument.
...
llvm-svn: 43462
2007-10-29 19:31:25 +00:00
Dan Gohman
30b8bd2ad4
Fix a typo in a comment.
...
llvm-svn: 43461
2007-10-29 19:26:14 +00:00
Dan Gohman
957fd1704a
Avoid calling ValidStride when not all uses are addresses.
...
llvm-svn: 43460
2007-10-29 19:23:53 +00:00
Ted Kremenek
4f7fd889e1
Fixed warning concerning implicit conversion from a NULL pointer
...
constant to an unsigned int. We now just directly assign the literal 0.
llvm-svn: 43459
2007-10-29 18:43:39 +00:00
Evan Cheng
1113931fd8
Avoid doing something dumb like rewriting using a 64-bit iv in 32-bit mode.
...
llvm-svn: 43446
2007-10-29 07:57:50 +00:00
Chris Lattner
be8379fac5
add a note.
...
llvm-svn: 43444
2007-10-29 06:19:48 +00:00
Chris Lattner
1659eb3c3f
I am not sure this is a good idea to be an option, but rename the option for
...
now. It conflicts with clang's -pedantic flag.
llvm-svn: 43431
2007-10-29 03:14:55 +00:00
Chris Lattner
1503362624
Add support for the x86-64 'q' regigster modifier, and add support for the
...
b/h/w/k/q inline asm memory modifiers, which are just ignored. This fixes
PR1748 and CodeGen/X86/2007-10-28-inlineasm-q-modifier.ll
llvm-svn: 43430
2007-10-29 03:09:07 +00:00
Chris Lattner
7e3a8a7604
Fix PR1749 and InstCombine/2007-10-28-EmptyField.ll by handling
...
zero-length fields better.
llvm-svn: 43427
2007-10-29 02:40:02 +00:00
Chris Lattner
891066cfff
Fix PR1752 and LoopSimplify/2007-10-28-InvokeCrash.ll: terminators
...
can have uses too. Wouldn't it be nice if invoke didn't exist? :)
llvm-svn: 43426
2007-10-29 02:30:37 +00:00
Ted Kremenek
3ad324488b
Fixed assertion in Deserializer::~Deserializer that checks for
...
pointers that were not backpatched (previously checked the wrong invariant).
llvm-svn: 43425
2007-10-28 23:38:38 +00:00
Anton Korobeynikov
ab0c5f6d32
Add 'pedantic' mode to verifier rejecting syntactically valid, but 'bad' due to other reasons code
...
llvm-svn: 43424
2007-10-28 22:50:32 +00:00
Ted Kremenek
27c96e0d86
Updated backpatching logic during object deserialization to perform
...
eager backpatching instead of waithing until all objects have been
deserialized. This allows us to reduce the memory footprint needed
for backpatching.
llvm-svn: 43422
2007-10-28 21:17:59 +00:00
Duncan Sands
b494fb97a4
The guaranteed alignment of ptr+offset is only the minimum of
...
of offset and the alignment of ptr if these are both powers of
2. While the ptr alignment is guaranteed to be a power of 2,
there is no reason to think that offset is. For example, if
offset is 12 (the size of a long double on x86-32 linux) and
the alignment of ptr is 8, then the alignment of ptr+offset
will in general be 4, not 8. Introduce a function MinAlign,
lifted from gcc, for computing the minimum guaranteed alignment.
I've tried to fix up everywhere under lib/CodeGen/SelectionDAG/.
I also changed some places that weren't wrong (because both values
were a power of 2), as a defensive change against people copying
and pasting the code.
Hopefully someone who cares about alignment will review the rest
of LLVM and fix up the remaining places. Since I'm on x86 I'm
not very motivated to do this myself...
llvm-svn: 43421
2007-10-28 12:59:45 +00:00
Evan Cheng
053178440a
New entry.
...
llvm-svn: 43420
2007-10-28 04:01:09 +00:00
Evan Cheng
c8adcda731
A number of LSR fixes:
...
- ChangeCompareStride only reuse stride that is larger than current stride. It
will let the general reuse mechanism to try to reuse a smaller stride.
- Watch out for multiplication overflow in ChangeCompareStride.
- Replace std::set with SmallPtrSet.
llvm-svn: 43408
2007-10-26 23:08:19 +00:00
Ted Kremenek
3f3b4818ef
Added serialization support for APInt.
...
llvm-svn: 43405
2007-10-26 21:50:10 +00:00
Bill Wendling
8d329ff809
- Remove the hacky code that forces a memcpy. Alignment is taken care of in the
...
FE.
- Explicitly pass in the alignment of the load & store.
- XFAIL 2007-10-23-UnalignedMemcpy.ll because llc has a bug that crashes on
unaligned pointers.
llvm-svn: 43398
2007-10-26 20:24:42 +00:00
Evan Cheng
53b2e7f3ca
Fix a crash. Make sure TLI is not null.
...
llvm-svn: 43384
2007-10-26 17:24:46 +00:00
Anton Korobeynikov
0d3f43480e
Fix off-by-one stack offset computations (dwarf information) for callee-saved
...
registers in case, when FP pointer was eliminated. This should fixes misc. random
EH-related crahses, when stuff is compiled with -fomit-frame-pointer.
Thanks Duncan for nailing this bug!
llvm-svn: 43381
2007-10-26 09:13:24 +00:00
Eric Christopher
82c77dd85b
clo/clz aren't supported on mips I. Keep them around for when we'll
...
want them later (mips32/64).
llvm-svn: 43380
2007-10-26 04:00:13 +00:00
Owen Anderson
8bf547855a
Make a comment better.
...
llvm-svn: 43379
2007-10-26 03:47:14 +00:00
Gordon Henriksen
609997aa7d
More fleshing out of docs/Passes.html, plus some typo fixes and
...
improved wording in source files.
llvm-svn: 43377
2007-10-26 03:03:51 +00:00
Evan Cheng
53696b7e9f
Loosen up iv reuse to allow reuse of the same stride but a larger type when truncating from the larger type to smaller type is free.
...
e.g.
Turns this loop:
LBB1_1: # entry.bb_crit_edge
xorl %ecx, %ecx
xorw %dx, %dx
movw %dx, %si
LBB1_2: # bb
movl L_X$non_lazy_ptr, %edi
movw %si, (%edi)
movl L_Y$non_lazy_ptr, %edi
movw %dx, (%edi)
addw $4, %dx
incw %si
incl %ecx
cmpl %eax, %ecx
jne LBB1_2 # bb
into
LBB1_1: # entry.bb_crit_edge
xorl %ecx, %ecx
xorw %dx, %dx
LBB1_2: # bb
movl L_X$non_lazy_ptr, %esi
movw %cx, (%esi)
movl L_Y$non_lazy_ptr, %esi
movw %dx, (%esi)
addw $4, %dx
incl %ecx
cmpl %eax, %ecx
jne LBB1_2 # bb
llvm-svn: 43375
2007-10-26 01:56:11 +00:00
Hartmut Kaiser
d57d01b8e0
Silenced a VC++ warning.
...
llvm-svn: 43374
2007-10-25 23:49:14 +00:00
Ted Kremenek
2bfb73a3f4
Updated backpatching during object deserialization to support "smart"
...
pointers that employ unused bits in a pointer to store extra data.
llvm-svn: 43373
2007-10-25 23:40:35 +00:00
Hartmut Kaiser
48b3098b43
Clarified operator precedence.
...
Silenced VC++ warning.
llvm-svn: 43372
2007-10-25 23:15:31 +00:00
Hartmut Kaiser
8b605b5578
Disambiguated variable name to comply with VC++'s archaic variable scoping rules.
...
llvm-svn: 43369
2007-10-25 22:57:48 +00:00
Evan Cheng
d7eab3a984
Do not rewrite compare instruction using iv of a different stride if the new
...
stride may be rewritten using the stride of the compare instruction.
llvm-svn: 43367
2007-10-25 22:45:20 +00:00
Dale Johannesen
0774a9c549
Support non-POSIX hosts by removing use of strncasecmp.
...
llvm-svn: 43364
2007-10-25 21:54:43 +00:00
Bill Wendling
27f7cac311
Changed XXX to FIXME, and added comment to the README file
...
llvm-svn: 43359
2007-10-25 19:49:32 +00:00
Ted Kremenek
d29fe31fcd
Added special treatment of serializing NULL pointers.
...
llvm-svn: 43357
2007-10-25 18:42:52 +00:00
Evan Cheng
c25c4276a6
Remove code that's commented out.
...
llvm-svn: 43356
2007-10-25 18:38:24 +00:00
Bill Wendling
34d5118422
Added comment explaining why we are doing this check.
...
llvm-svn: 43353
2007-10-25 18:23:45 +00:00
Duncan Sands
fcfc9fdd5c
Small formatting changes. Add a sanity check.
...
Use NVT rather than looking it up, since we have
it to hand.
llvm-svn: 43341
2007-10-25 12:35:51 +00:00
Duncan Sands
15f9f7d669
Promote SETCC operands.
...
llvm-svn: 43340
2007-10-25 12:32:31 +00:00
Duncan Sands
28582a76eb
Correctly extract the ValueType from a VTSDNode.
...
llvm-svn: 43339
2007-10-25 12:30:51 +00:00
Evan Cheng
66cbf54030
If a loop termination compare instruction is the only use of its stride,
...
and the compaison is against a constant value, try eliminate the stride
by moving the compare instruction to another stride and change its
constant operand accordingly. e.g.
loop:
...
v1 = v1 + 3
v2 = v2 + 1
if (v2 < 10) goto loop
=>
loop:
...
v1 = v1 + 3
if (v1 < 30) goto loop
llvm-svn: 43336
2007-10-25 09:11:16 +00:00
Owen Anderson
6cc4e90741
Fix for PR1741.
...
llvm-svn: 43326
2007-10-25 02:36:18 +00:00
Ted Kremenek
195382dce2
Implemented prototype serialization of pointers, including support
...
for backpatching.
Added Deserialize::ReadVal.
llvm-svn: 43319
2007-10-25 00:10:21 +00:00
Dale Johannesen
53ca1384b0
Another expansion for i64 multiply, suitable for PPC.
...
llvm-svn: 43314
2007-10-24 22:26:08 +00:00
Dale Johannesen
414ad5d4a4
Fix off by 1 bug in printf->puts lowering.
...
llvm-svn: 43309
2007-10-24 20:14:50 +00:00
Ted Kremenek
b3085f2d74
Split Serialization.h into separate headers: Serialize.h and
...
Deserialize.h Serialization.h now includes trait speciailizations for
unsigned long, etc.
llvm-svn: 43307
2007-10-24 19:06:40 +00:00
Chris Lattner
ae9cfd2fb0
simplify some code by using the new isNaN predicate
...
llvm-svn: 43305
2007-10-24 18:54:45 +00:00
Chris Lattner
483c471daa
Implement a couple of foldings for ordered and unordered comparisons,
...
implementing cases related to PR1738.
llvm-svn: 43289
2007-10-24 05:38:08 +00:00
Bill Wendling
e5f534148e
Fix comment and use the "Size" variable that's already provided.
...
llvm-svn: 43271
2007-10-23 23:36:57 +00:00
Bill Wendling
a420d660c8
If there's an unaligned memcpy to/from the stack, don't lower it. Just call the
...
memcpy library function instead.
llvm-svn: 43270
2007-10-23 23:32:40 +00:00