OSDN Git Service
Reid Spencer [Fri, 23 Mar 2007 20:05:17 +0000 (20:05 +0000)]
For PR1205:
APIntify visitDiv, visitMul and visitRem.
Patch by Zhou Sheng.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35283
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 23 Mar 2007 19:17:18 +0000 (19:17 +0000)]
switch AddReachableCodeToWorklist from being recursive to being iterative.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35282
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 23 Mar 2007 18:46:34 +0000 (18:46 +0000)]
For PR1205:
APIntify several utility functions supporting logical operators and shift
operators.
Patch by Zhou Sheng.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35281
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 23 Mar 2007 18:44:11 +0000 (18:44 +0000)]
Add the 'explicit' keyword to several constructors that accept one
argument that don't appear intended as implicit-conversion operators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35280
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Fri, 23 Mar 2007 07:17:52 +0000 (07:17 +0000)]
Test handling of switches with wide case ranges.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35279
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 23 Mar 2007 05:33:23 +0000 (05:33 +0000)]
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).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35277
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhou Sheng [Fri, 23 Mar 2007 03:13:21 +0000 (03:13 +0000)]
Make the "KnownZero ^ TypeMask" computation just once.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35276
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhou Sheng [Fri, 23 Mar 2007 02:39:25 +0000 (02:39 +0000)]
Simplify the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35275
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 23 Mar 2007 02:16:52 +0000 (02:16 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35274
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 22:19:58 +0000 (22:19 +0000)]
For PR1205:
APInt support for logical operators in visitAnd, visitOr, and visitXor.
Patch by Zhou Sheng.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35273
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Thu, 22 Mar 2007 21:06:50 +0000 (21:06 +0000)]
The -funcresolve and -raise options no longer exist.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35272
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 20:56:53 +0000 (20:56 +0000)]
For PR1205:
* APIntify commonIntCastTransforms
* APIntify visitTrunc
* APIntify visitZExt
Patch by Zhou Sheng.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35271
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 20:36:03 +0000 (20:36 +0000)]
For PR1205:
* Re-enable the APInt version of MaskedValueIsZero.
* APIntify the Comput{Un}SignedMinMaxValuesFromKnownBits functions
* APIntify visitICmpInst.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35270
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 22 Mar 2007 20:29:26 +0000 (20:29 +0000)]
We generate a shufflevector instruction, so we don't need the builtin
intrinsic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35269
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Thu, 22 Mar 2007 19:13:29 +0000 (19:13 +0000)]
Cleanup obsolete stuff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35268
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Thu, 22 Mar 2007 19:11:57 +0000 (19:11 +0000)]
Be more explicit concerning argument sizes.
Use VC++ byteswap intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35267
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Thu, 22 Mar 2007 18:42:45 +0000 (18:42 +0000)]
Support added for shifts and unpacking MMX instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35266
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 22 Mar 2007 16:38:57 +0000 (16:38 +0000)]
Change uses of Function::front to Function::getEntryBlock for readability.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35265
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 22 Mar 2007 07:43:51 +0000 (07:43 +0000)]
Unbreak non-debug builds.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35264
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 02:53:05 +0000 (02:53 +0000)]
Make this test actually match the generated code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35263
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 02:18:56 +0000 (02:18 +0000)]
Add noreturn function attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35262
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 02:15:17 +0000 (02:15 +0000)]
Add tests for nounwind and noreturn function attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35261
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 02:14:48 +0000 (02:14 +0000)]
Add the NoUnwind function attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35260
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 02:14:08 +0000 (02:14 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35259
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 02:13:23 +0000 (02:13 +0000)]
Add support for the noreturn and nounwind function attributes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35258
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 22 Mar 2007 02:02:51 +0000 (02:02 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35257
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 02:02:11 +0000 (02:02 +0000)]
Preview nounwind function attribute.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35256
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 22 Mar 2007 01:55:16 +0000 (01:55 +0000)]
Another test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35255
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 22 Mar 2007 01:54:19 +0000 (01:54 +0000)]
More opportunities to reduce load size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35254
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 22 Mar 2007 01:52:57 +0000 (01:52 +0000)]
Test case for PR1257
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35253
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Thu, 22 Mar 2007 01:26:05 +0000 (01:26 +0000)]
Fix for PR1257. Bug in live range shortening as a result of copy coalescing
where the destination is dead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35252
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 00:49:40 +0000 (00:49 +0000)]
Test case for PR1248
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35251
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 22 Mar 2007 00:32:02 +0000 (00:32 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35250
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Thu, 22 Mar 2007 00:02:17 +0000 (00:02 +0000)]
More LangRef fixes. Corrected names of intrinsics.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35249
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Wed, 21 Mar 2007 23:58:04 +0000 (23:58 +0000)]
Fixed va_arg example. Reported by Roman Samoilov
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35248
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 21 Mar 2007 23:19:50 +0000 (23:19 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35247
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 21 Mar 2007 22:22:19 +0000 (22:22 +0000)]
Fix a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35246
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Wed, 21 Mar 2007 21:51:52 +0000 (21:51 +0000)]
repair x86 performance, dejagnu problems from previous change
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35245
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Wed, 21 Mar 2007 21:48:59 +0000 (21:48 +0000)]
Add TODO list for MSIL backend
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35244
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Wed, 21 Mar 2007 21:45:25 +0000 (21:45 +0000)]
Add Roman to credits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35243
91177308-0d34-0410-b5e6-
96231b3b80d8
Anton Korobeynikov [Wed, 21 Mar 2007 21:38:25 +0000 (21:38 +0000)]
Let the new backend begin!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35242
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Wed, 21 Mar 2007 21:16:39 +0000 (21:16 +0000)]
add generation of unnecessary push/pop around calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35241
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Mar 2007 20:14:56 +0000 (20:14 +0000)]
New test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35240
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Mar 2007 20:14:05 +0000 (20:14 +0000)]
fold (truncate (srl (load x), c)) -> (smaller load (x+c/vt bits))
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35239
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 21 Mar 2007 17:27:53 +0000 (17:27 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35237
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 21 Mar 2007 17:26:41 +0000 (17:26 +0000)]
For PR1243:
Okay, really fix it this time. Make sure the CurFun.Linkage is set early
and consolidate some duplicate code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35236
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 21 Mar 2007 17:15:50 +0000 (17:15 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35235
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 21 Mar 2007 17:14:36 +0000 (17:14 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35234
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Wed, 21 Mar 2007 16:44:14 +0000 (16:44 +0000)]
Protect R31's frame offset from being used by callee-saved registers, when R31
is the frame pointer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35233
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhou Sheng [Wed, 21 Mar 2007 04:34:37 +0000 (04:34 +0000)]
Fix a bug in getAllOnesValue() which broke
some test cases for bitwidth > 64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35232
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Wed, 21 Mar 2007 00:16:56 +0000 (00:16 +0000)]
Mark re-materializable instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35230
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Mar 2007 22:32:39 +0000 (22:32 +0000)]
Updated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35229
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Mar 2007 22:22:38 +0000 (22:22 +0000)]
Potential spiller improvement.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35228
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 20 Mar 2007 21:54:54 +0000 (21:54 +0000)]
do not share old induction variables when this would result in invalid
instructions (that would have to be split later)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35227
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 20 Mar 2007 21:35:06 +0000 (21:35 +0000)]
maintain LiveIn when splitting blocks (register scavenging needs it)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35226
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 20 Mar 2007 21:25:31 +0000 (21:25 +0000)]
DominanceFrontier::calculate().
Avoid recursion, Use iterative algorithm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35225
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Tue, 20 Mar 2007 20:43:18 +0000 (20:43 +0000)]
Fix some VC++ warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35224
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeff Cohen [Tue, 20 Mar 2007 20:42:36 +0000 (20:42 +0000)]
Fix (and simplify) 48-bit byte swap.
Get pos/neg infinity the correct way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35223
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 20 Mar 2007 20:19:48 +0000 (20:19 +0000)]
LoopSimplify::FindPHIToPartitionLoops()
Use ETForest instead of DominatorSet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35222
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 20 Mar 2007 20:18:12 +0000 (20:18 +0000)]
LoopSimplify::FindPHIToPartitionLoops()
Use ETForest instead of DominatorSet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35221
91177308-0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Tue, 20 Mar 2007 20:09:03 +0000 (20:09 +0000)]
Code clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35220
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Mar 2007 19:32:11 +0000 (19:32 +0000)]
Minor bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35219
91177308-0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Tue, 20 Mar 2007 17:57:23 +0000 (17:57 +0000)]
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35218
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 20 Mar 2007 17:34:31 +0000 (17:34 +0000)]
llvm-gcc now requires -fnested-functions to enable them in C.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35217
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 20 Mar 2007 17:27:19 +0000 (17:27 +0000)]
Break up huge line so that this file is almost readable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35216
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 20 Mar 2007 17:19:31 +0000 (17:19 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35215
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 20 Mar 2007 17:18:33 +0000 (17:18 +0000)]
Don't delete things before their last use (avoids bad reads).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35214
91177308-0d34-0410-b5e6-
96231b3b80d8
Lauro Ramos Venancio [Tue, 20 Mar 2007 16:46:44 +0000 (16:46 +0000)]
CopyToReg source operand can be a physical register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35213
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 20 Mar 2007 14:13:20 +0000 (14:13 +0000)]
Test handling of structs with multiple variable-sized fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35212
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhou Sheng [Tue, 20 Mar 2007 12:49:06 +0000 (12:49 +0000)]
Simplify isHighOnes().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35211
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 20 Mar 2007 09:54:02 +0000 (09:54 +0000)]
Ada testcase for structs with multiple variable sized fields.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35210
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 20 Mar 2007 09:50:42 +0000 (09:50 +0000)]
Test that ARRAY_RANGE_REF returns an array not an element.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35209
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Mar 2007 08:13:50 +0000 (08:13 +0000)]
First cut trivial re-materialization support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35208
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Mar 2007 08:11:30 +0000 (08:11 +0000)]
Make two piece constant generation as a single instruction. It's re-materialized as a load from constantpool.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35207
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Mar 2007 08:10:17 +0000 (08:10 +0000)]
New entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35206
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 20 Mar 2007 08:09:38 +0000 (08:09 +0000)]
Added MRegisterInfo hook to re-materialize an instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35205
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 20 Mar 2007 06:08:29 +0000 (06:08 +0000)]
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35204
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 20 Mar 2007 06:01:41 +0000 (06:01 +0000)]
These functions should use shll, not lea.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35203
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 20 Mar 2007 02:25:53 +0000 (02:25 +0000)]
fix indentation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35202
91177308-0d34-0410-b5e6-
96231b3b80d8
Zhou Sheng [Tue, 20 Mar 2007 02:18:16 +0000 (02:18 +0000)]
Correct the name: isStrictPositive --> isStrictlyPositive.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35201
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 20 Mar 2007 02:10:56 +0000 (02:10 +0000)]
Add a dtor to fix leaks from all clients of BitVector.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35200
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 20 Mar 2007 01:13:36 +0000 (01:13 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35199
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 20 Mar 2007 01:13:00 +0000 (01:13 +0000)]
Plug some PATypeHolder memory leaks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35198
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 20 Mar 2007 00:47:50 +0000 (00:47 +0000)]
use types of loads and stores, not address, in CheckForIVReuse
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35197
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Tue, 20 Mar 2007 00:30:56 +0000 (00:30 +0000)]
fix obvious comment bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35196
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 20 Mar 2007 00:18:10 +0000 (00:18 +0000)]
Fix a nasty memory leak, caused by my revamp of the value symbol table.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35195
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 20 Mar 2007 00:16:52 +0000 (00:16 +0000)]
Make isOneBitSet faster by using APInt::isPowerOf2. Thanks Chris.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35194
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 23:36:19 +0000 (23:36 +0000)]
Make this test a little simpler/faster.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35193
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 23:28:16 +0000 (23:28 +0000)]
Add test case for PR1261, currently XFAILed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35192
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 19 Mar 2007 22:21:25 +0000 (22:21 +0000)]
Document LoopPass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35191
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 21:29:50 +0000 (21:29 +0000)]
APIntify the isHighOnes utility function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35190
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 21:19:02 +0000 (21:19 +0000)]
Fix coding standards violation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35189
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 21:10:28 +0000 (21:10 +0000)]
Implement isMaxValueMinusOne in terms of APInt instead of uint64_t.
Patch by Sheng Zhou.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35188
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 21:08:07 +0000 (21:08 +0000)]
Implement isMinValuePlusOne using facilities of APInt instead of uint64_t
Patch by Zhou Sheng.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35187
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 21:04:43 +0000 (21:04 +0000)]
Implement isOneBitSet in terms of APInt::countPopulation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35186
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 20:58:18 +0000 (20:58 +0000)]
1. Use APInt::getSignBit to reduce clutter (patch by Sheng Zhou)
2. Replace uses of the "isPositive" utility function with APInt::isPositive
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35185
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 20:47:50 +0000 (20:47 +0000)]
Remove a redundant clause in an if statement.
Patch by Sheng Zhou.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35184
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 20:40:51 +0000 (20:40 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35183
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 20:40:22 +0000 (20:40 +0000)]
Fix test/Assembler/2007-03-19-NegValue.ll by using the new "isSigned"
parameter on ConstantInt::get to indicate the signedness of the intended
value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35182
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 19 Mar 2007 20:39:08 +0000 (20:39 +0000)]
Allow ConstantInt::get(Ty, uint64_t) to interpret the 64-bit values as a
negative number. This is needed to fix test/Assembler/2007-03-19-NegValue.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35181
91177308-0d34-0410-b5e6-
96231b3b80d8