31084 Commits

Author SHA1 Message Date
Duncan Sands
96719d1667 Test handling of switches with wide case ranges.
llvm-svn: 35279
2007-03-23 07:17:52 +00:00
Reid Spencer
d96dc9020a Fix constant fold of div by zero and rem by zero to match IEEE 754
requirements. We must return NaN in some cases and correctly signed
infinity in other cases. Passes CFP2006 (not that that says much).

llvm-svn: 35277
2007-03-23 05:33:23 +00:00
Zhou Sheng
0900993ebc Make the "KnownZero ^ TypeMask" computation just once.
llvm-svn: 35276
2007-03-23 03:13:21 +00:00
Zhou Sheng
755f04b5d7 Simplify the code.
llvm-svn: 35275
2007-03-23 02:39:25 +00:00
Evan Cheng
a824e79f06 A couple of bug fixes for reducing load width xform:
1. Address offset is in bytes.
2. Make sure truncate node uses are replaced with new load.

llvm-svn: 35274
2007-03-23 02:16:52 +00:00
Reid Spencer
b722f2b110 For PR1205:
APInt support for logical operators in visitAnd, visitOr, and visitXor.

Patch by Zhou Sheng.

llvm-svn: 35273
2007-03-22 22:19:58 +00:00
Duncan Sands
14b191c687 The -funcresolve and -raise options no longer exist.
llvm-svn: 35272
2007-03-22 21:06:50 +00:00
Reid Spencer
4154e732e6 For PR1205:
* APIntify commonIntCastTransforms
* APIntify visitTrunc
* APIntify visitZExt

Patch by Zhou Sheng.

llvm-svn: 35271
2007-03-22 20:56:53 +00:00
Reid Spencer
c3e3b8a32f For PR1205:
* Re-enable the APInt version of MaskedValueIsZero.
* APIntify the Comput{Un}SignedMinMaxValuesFromKnownBits functions
* APIntify visitICmpInst.

llvm-svn: 35270
2007-03-22 20:36:03 +00:00
Bill Wendling
7c17fbc5b7 We generate a shufflevector instruction, so we don't need the builtin
intrinsic.

llvm-svn: 35269
2007-03-22 20:29:26 +00:00
Jeff Cohen
17a19c917f Cleanup obsolete stuff.
llvm-svn: 35268
2007-03-22 19:13:29 +00:00
Jeff Cohen
d530a17cef Be more explicit concerning argument sizes.
Use VC++ byteswap intrinsics.

llvm-svn: 35267
2007-03-22 19:11:57 +00:00
Bill Wendling
d551a18783 Support added for shifts and unpacking MMX instructions.
llvm-svn: 35266
2007-03-22 18:42:45 +00:00
Dan Gohman
dcb291faa4 Change uses of Function::front to Function::getEntryBlock for readability.
llvm-svn: 35265
2007-03-22 16:38:57 +00:00
Evan Cheng
085b8d7ae2 Unbreak non-debug builds.
llvm-svn: 35264
2007-03-22 07:43:51 +00:00
Reid Spencer
02b0b57101 Make this test actually match the generated code.
llvm-svn: 35263
2007-03-22 02:53:05 +00:00
Reid Spencer
9d1700e188 Add noreturn function attribute.
llvm-svn: 35262
2007-03-22 02:18:56 +00:00
Reid Spencer
8f0bcc6b89 Add tests for nounwind and noreturn function attributes.
llvm-svn: 35261
2007-03-22 02:15:17 +00:00
Reid Spencer
478dcd0239 Add the NoUnwind function attribute.
llvm-svn: 35260
2007-03-22 02:14:48 +00:00
Reid Spencer
32096786f1 Regenerate.
llvm-svn: 35259
2007-03-22 02:14:08 +00:00
Reid Spencer
a483577d21 Add support for the noreturn and nounwind function attributes.
llvm-svn: 35258
2007-03-22 02:13:23 +00:00
Nick Lewycky
b0da7ed9c8 Fix broken optimization disabled by a logic bug.
Analyze GEPs. If the indices are all zero, transfer whether the pointer is
known to be not null through the GEP.

Add a few more cases for xor and shift instructions.

llvm-svn: 35257
2007-03-22 02:02:51 +00:00
Reid Spencer
05dbb9d002 Preview nounwind function attribute.
llvm-svn: 35256
2007-03-22 02:02:11 +00:00
Evan Cheng
9a95c6e7db Another test case.
llvm-svn: 35255
2007-03-22 01:55:16 +00:00
Evan Cheng
464dc9b74c More opportunities to reduce load size.
llvm-svn: 35254
2007-03-22 01:54:19 +00:00
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