30809 Commits

Author SHA1 Message Date
Evan Cheng
51ace3b1f6 Test case for PR1257
llvm-svn: 35253
2007-03-22 01:52:57 +00:00
Evan Cheng
a20815e157 Fix for PR1257. Bug in live range shortening as a result of copy coalescing
where the destination is dead.

llvm-svn: 35252
2007-03-22 01:26:05 +00:00
Reid Spencer
fa9925e263 Test case for PR1248
llvm-svn: 35251
2007-03-22 00:49:40 +00:00
Reid Spencer
be7e9bc494 For PR1145:
Add the NoUnwindAttribute to allow explicit marking of functions that do
not unwind the stack via the unwind instruction. This is akin to gcc's
NoThrow attribute and used for optimizing exception handling.

llvm-svn: 35250
2007-03-22 00:32:02 +00:00
Anton Korobeynikov
be9c93c79c More LangRef fixes. Corrected names of intrinsics.
llvm-svn: 35249
2007-03-22 00:02:17 +00:00
Anton Korobeynikov
640bbe0a15 Fixed va_arg example. Reported by Roman Samoilov
llvm-svn: 35248
2007-03-21 23:58:04 +00:00
Reid Spencer
f40711637f For PR1248:
* Fix some indentation and comments in InsertRangeTest
* Add an "IsSigned" parameter to AddWithOverflow and make it handle signed
  additions. Also, APIntify this function so it works with any bitwidth.
* For the icmp pred ([us]div %X, C1), C2 transforms, exit early if the
  div instruction's RHS is zero.
* Finally, for icmp pred (sdiv %X, C1), -C2, fix an off-by-one error. The
  HiBound needs to be incremented in order to get the range test correct.

llvm-svn: 35247
2007-03-21 23:19:50 +00:00
Reid Spencer
925e8aa370 Fix a comment.
llvm-svn: 35246
2007-03-21 22:22:19 +00:00
Dale Johannesen
0c6bb5eab7 repair x86 performance, dejagnu problems from previous change
llvm-svn: 35245
2007-03-21 21:51:52 +00:00
Anton Korobeynikov
4ad4bcdc2d Add TODO list for MSIL backend
llvm-svn: 35244
2007-03-21 21:48:59 +00:00
Anton Korobeynikov
91549cef78 Add Roman to credits
llvm-svn: 35243
2007-03-21 21:45:25 +00:00
Anton Korobeynikov
aa3090d815 Let the new backend begin!
llvm-svn: 35242
2007-03-21 21:38:25 +00:00
Dale Johannesen
a827d03154 add generation of unnecessary push/pop around calls
llvm-svn: 35241
2007-03-21 21:16:39 +00:00
Evan Cheng
a7f81f29ce New test case.
llvm-svn: 35240
2007-03-21 20:14:56 +00:00
Evan Cheng
d63baead9b fold (truncate (srl (load x), c)) -> (smaller load (x+c/vt bits))
llvm-svn: 35239
2007-03-21 20:14:05 +00:00
Reid Spencer
2f8fa50bb3 Regenerate.
llvm-svn: 35237
2007-03-21 17:27:53 +00:00
Reid Spencer
20337a5e76 For PR1243:
Okay, really fix it this time. Make sure the CurFun.Linkage is set early
and consolidate some duplicate code.

llvm-svn: 35236
2007-03-21 17:26:41 +00:00
Reid Spencer
77e0bba30c Regenerate.
llvm-svn: 35235
2007-03-21 17:15:50 +00:00
Reid Spencer
6ae04faffb For PR1256:
Make Signedness information pervasive throughout all types and values.
There is no easy way to get around this. Because the GEP instruction can
index through an arbitrarily complex value structure, it is necessary to
keep track of signedness information throughout that structure. This change
makes Signedness a full class, capable of representing Signedness in
arbitrarily shaped types. The class is then used throughout llvm-upgrade to
track signedness and differentiate between globals, locals, and functions
based on their signedness.

For PR1243:
This patch also removes bogus warnings about renaming internal globals. It
now only emits such warnings when renaming non-internal globals because
they may affect linkage.

llvm-svn: 35234
2007-03-21 17:14:36 +00:00
Nicolas Geoffray
4ea5217880 Protect R31's frame offset from being used by callee-saved registers, when R31
is the frame pointer.

llvm-svn: 35233
2007-03-21 16:44:14 +00:00
Zhou Sheng
0458c1db71 Fix a bug in getAllOnesValue() which broke
some test cases for bitwidth > 64.

llvm-svn: 35232
2007-03-21 04:34:37 +00:00
Evan Cheng
61eee86487 Mark re-materializable instructions.
llvm-svn: 35230
2007-03-21 00:16:56 +00:00
Evan Cheng
cba9538499 Updated.
llvm-svn: 35229
2007-03-20 22:32:39 +00:00
Evan Cheng
3578dd61c6 Potential spiller improvement.
llvm-svn: 35228
2007-03-20 22:22:38 +00:00
Dale Johannesen
bacf4acf65 do not share old induction variables when this would result in invalid
instructions (that would have to be split later)

llvm-svn: 35227
2007-03-20 21:54:54 +00:00
Dale Johannesen
d05a1a2ade maintain LiveIn when splitting blocks (register scavenging needs it)
llvm-svn: 35226
2007-03-20 21:35:06 +00:00
Devang Patel
eb5d241d00 DominanceFrontier::calculate().
Avoid recursion, Use iterative algorithm.

llvm-svn: 35225
2007-03-20 21:25:31 +00:00
Jeff Cohen
1baf5c84ab Fix some VC++ warnings.
llvm-svn: 35224
2007-03-20 20:43:18 +00:00
Jeff Cohen
e06855e684 Fix (and simplify) 48-bit byte swap.
Get pos/neg infinity the correct way.

llvm-svn: 35223
2007-03-20 20:42:36 +00:00
Devang Patel
b39885d23d LoopSimplify::FindPHIToPartitionLoops()
Use ETForest instead of DominatorSet.

llvm-svn: 35222
2007-03-20 20:19:48 +00:00
Devang Patel
1758cb50de LoopSimplify::FindPHIToPartitionLoops()
Use ETForest instead of DominatorSet.

llvm-svn: 35221
2007-03-20 20:18:12 +00:00
Lauro Ramos Venancio
971aa18867 Code clean up.
llvm-svn: 35220
2007-03-20 20:09:03 +00:00
Evan Cheng
550cf0369c Minor bug.
llvm-svn: 35219
2007-03-20 19:32:11 +00:00
Lauro Ramos Venancio
a88c4a74f3 bugfix: When the source register of CALL_NOLINK was LR, the following code was emitted:
mov lr, pc
    bx lr
So, the function was not called.

llvm-svn: 35218
2007-03-20 17:57:23 +00:00
Chris Lattner
cdf6823e10 llvm-gcc now requires -fnested-functions to enable them in C.
llvm-svn: 35217
2007-03-20 17:34:31 +00:00
Reid Spencer
98f0709618 Break up huge line so that this file is almost readable.
llvm-svn: 35216
2007-03-20 17:27:19 +00:00
Reid Spencer
8d364d0e17 Regenerate.
llvm-svn: 35215
2007-03-20 17:19:31 +00:00
Reid Spencer
0ad5cebb09 Don't delete things before their last use (avoids bad reads).
llvm-svn: 35214
2007-03-20 17:18:33 +00:00
Lauro Ramos Venancio
25878b45f5 CopyToReg source operand can be a physical register.
llvm-svn: 35213
2007-03-20 16:46:44 +00:00
Duncan Sands
76e4fdf879 Test handling of structs with multiple variable-sized fields.
llvm-svn: 35212
2007-03-20 14:13:20 +00:00
Zhou Sheng
b3949340c8 Simplify isHighOnes().
llvm-svn: 35211
2007-03-20 12:49:06 +00:00
Duncan Sands
dd066c34a9 Ada testcase for structs with multiple variable sized fields.
llvm-svn: 35210
2007-03-20 09:54:02 +00:00
Duncan Sands
2fd6a4bef5 Test that ARRAY_RANGE_REF returns an array not an element.
llvm-svn: 35209
2007-03-20 09:50:42 +00:00
Evan Cheng
0e3278e505 First cut trivial re-materialization support.
llvm-svn: 35208
2007-03-20 08:13:50 +00:00
Evan Cheng
9e7b838469 Make two piece constant generation as a single instruction. It's re-materialized as a load from constantpool.
llvm-svn: 35207
2007-03-20 08:11:30 +00:00
Evan Cheng
39eb62ea3b New entry.
llvm-svn: 35206
2007-03-20 08:10:17 +00:00
Evan Cheng
61f39d186c Added MRegisterInfo hook to re-materialize an instruction.
llvm-svn: 35205
2007-03-20 08:09:38 +00:00
Chris Lattner
3e1d917e80 Two changes:
1) codegen a shift of a register as a shift, not an LEA.
2) teach the RA to convert a shift to an LEA instruction if it wants something
   in three-address form.

This gives us asm diffs like:

-       leal (,%eax,4), %eax
+       shll $2, %eax

which is faster on some processors and smaller on all of them.

and, more interestingly:

-       movl 24(%esi), %eax
-       leal (,%eax,4), %edi
+       movl 24(%esi), %edi
+       shll $2, %edi

Without #2, #1 was a significant pessimization in some cases.

This implements CodeGen/X86/shift-codegen.ll

llvm-svn: 35204
2007-03-20 06:08:29 +00:00
Chris Lattner
d95d748a4d These functions should use shll, not lea.
llvm-svn: 35203
2007-03-20 06:01:41 +00:00
Chris Lattner
f806e1cdbc fix indentation
llvm-svn: 35202
2007-03-20 02:25:53 +00:00