Dan Gohman
150b4c3890
Short-circuit inttoptr-ptrtoint constant expressions; these aren't
...
always folded by the regular constant folder because it doesn't have
TargetData information.
llvm-svn: 70553
2009-05-01 17:00:00 +00:00
Dan Gohman
719f7d5c86
Make SCEVExpander::addInsertedValue able to accept Values, not just
...
Instructions.
llvm-svn: 70552
2009-05-01 16:58:31 +00:00
Dan Gohman
d3aa4215ef
Minor whitespace fix.
...
llvm-svn: 70551
2009-05-01 16:56:32 +00:00
Dan Gohman
90f73564d0
Fix an 80-column violation.
...
llvm-svn: 70550
2009-05-01 16:44:56 +00:00
Dan Gohman
194e42c612
When creating cast scevs, canonicalize the destination type. This
...
avoids duplicate scevs that differ only in type.
llvm-svn: 70549
2009-05-01 16:44:18 +00:00
Dan Gohman
cee10c5351
Fix a compiler warning on hosts where uint64_t isn't unsigned long long.
...
llvm-svn: 70548
2009-05-01 16:33:33 +00:00
Dan Gohman
6be8530158
Fix some code to work if TargetLowering is not available.
...
llvm-svn: 70546
2009-05-01 16:29:14 +00:00
Bill Wendling
80b9abf8f4
Simplify more code and add timer stuff.
...
llvm-svn: 70539
2009-05-01 08:40:06 +00:00
Bill Wendling
03968bd796
Simplify more code.
...
llvm-svn: 70537
2009-05-01 08:35:12 +00:00
Torok Edwin
83aec26ef8
hasSCEV() was declared in ScalarEvolution.h, but never defined. This must have
...
gone lost during the pImpl conversion.
llvm-svn: 70536
2009-05-01 08:33:47 +00:00
Bill Wendling
87cbaf4bc9
Simplify some code.
...
llvm-svn: 70534
2009-05-01 08:32:14 +00:00
Bill Wendling
1c24c74495
Fix whitespace. It was confusing me.
...
llvm-svn: 70533
2009-05-01 08:25:13 +00:00
Mike Stump
43a675bf8a
Lets install the manual page with install-clang! Radar 6838692
...
llvm-svn: 70529
2009-05-01 01:47:55 +00:00
Evan Cheng
f8949a61bf
Code clean up. Bye bye PhysRegTracker.
...
llvm-svn: 70524
2009-05-01 01:03:49 +00:00
Argyrios Kyrtzidis
31af617924
Fix compilation for some targets other than x86.
...
llvm-svn: 70522
2009-04-30 23:50:26 +00:00
Stefanus Du Toit
05cfd1beb2
Add a comment to refer to the section of the programmer's manual that explains what the pointer tagging in Use is for.
...
llvm-svn: 70521
2009-04-30 23:28:50 +00:00
Argyrios Kyrtzidis
a5037484a4
Make DebugLoc independent of DwarfWriter.
...
-Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable*
-Remove DwarfWriter::getOrCreateSourceID
-Make necessary changes for the above (fix callsites, etc.)
llvm-svn: 70520
2009-04-30 23:22:31 +00:00
Argyrios Kyrtzidis
30481e275c
Set FnEnd in JITEmitter::finishFunction to point strictly to the end of function's machine code.
...
Don't include memory allocated for global variables during relocations resolution.
llvm-svn: 70517
2009-04-30 23:01:58 +00:00
Jeffrey Yasskin
590dc3c9ac
Add a mention of TypeBuilder to the programmer's manual, and clean up the class
...
comment a bit.
llvm-svn: 70515
2009-04-30 22:33:41 +00:00
Jakob Stoklund Olesen
050631c0a6
Join cross class copies using getCommonSubClass()
...
llvm-svn: 70513
2009-04-30 21:24:03 +00:00
Jakob Stoklund Olesen
e651f25a7b
getCommonSubClass() - Calculate the largest common sub-class of two register
...
classes.
This is implemented as a function rather than a method on TargetRegisterClass
because it is symmetric in its arguments.
llvm-svn: 70512
2009-04-30 21:23:32 +00:00
Jakob Stoklund Olesen
c8124976af
Slightly change TableGen's definition of a register subclass.
...
A subclass is allowed to have a larger spill size than the superclass, and the
spill alignment must be a multiple of the superclass alignment. This causes
the following new subclass relations:
=== Alpha ===
F4RC -> F8RC
=== PPC ===
F4RC -> F8RC
=== SPU ===
R8C -> R16C -> R32C/R32FP -> R64C/R64FP -> GPRC/VECREG
=== X86 ===
FR32 -> FR64 -> VR128
RFP32 -> RFP64 -> RFP80
These subclass relations are consistent with the behaviour of -join-cross-class-copies.
llvm-svn: 70511
2009-04-30 21:22:44 +00:00
Dan Gohman
fa066ef136
Add some comments, and tidy up some whitespace.
...
llvm-svn: 70510
2009-04-30 20:48:53 +00:00
Dan Gohman
2b8da35f9d
Extend ScalarEvolution's getBackedgeTakenCount to be able to
...
compute an upper-bound value for the trip count, in addition to
the actual trip count. Use this to allow getZeroExtendExpr and
getSignExtendExpr to fold casts in more cases.
This may eventually morph into a more general value-range
analysis capability; there are certainly plenty of places where
more complete value-range information would allow more folding.
llvm-svn: 70509
2009-04-30 20:47:05 +00:00
Evan Cheng
007cbe91c5
Add a smarter heuristic to determine when to coalesce a virtual register with a physical one. More specifically, it avoid tying a virtual register in the loop with a physical register defined / used outside the loop. When it determines it's not profitable, it will use the physical register as the allocation preference instead.
...
This is *not* turned on by default. Testing indicates this is just as likely to pessimize code. The main issue seems to be allocation preference doesn't work effectively. That will change once I've taught register allocator "swapping".
llvm-svn: 70503
2009-04-30 18:39:57 +00:00
Bob Wilson
f71e656631
Rename the CurMultiClass formal parameter of TGParser::AddSubMultiClass
...
so that it doesn't shadow the instance variable of the same name.
Make the parameter names in method declarations match the definitions.
llvm-svn: 70502
2009-04-30 18:26:19 +00:00
Bob Wilson
92ab820f03
Remove unnecessary "class" keywords.
...
llvm-svn: 70499
2009-04-30 17:46:20 +00:00
Bob Wilson
56d8625492
Change forward declaration of MultiClass to use the "struct" keyword instead
...
of "class", so that it matches the subsequent definition.
llvm-svn: 70498
2009-04-30 17:35:11 +00:00
Torok Edwin
f45e07d766
Make dataflow iteration possible on Value*, not only on User*: df_ext_iterator<Value*, SmallPtrSet<const Value*, 16> >
...
llvm-svn: 70496
2009-04-30 17:09:22 +00:00
Dan Gohman
4bafc42185
Don't try to mix integers and pointers in an icmp instruction
...
in getSCEVAtScope.
llvm-svn: 70495
2009-04-30 16:40:30 +00:00
Nick Lewycky
e6141a5d6f
Oops! Missed a file in my last commit.
...
llvm-svn: 70491
2009-04-30 15:29:26 +00:00
Nick Lewycky
a303097de0
Allow a user of libLTO to specify the full pathname of the gcc executable to
...
run when assembling.
Wire this up to the gold plugin. You can now pass --plugin-opt gcc=/foo/bar/gcc
and it will run that gcc instead of looking for it on the path.
llvm-svn: 70490
2009-04-30 15:24:09 +00:00
Jay Foad
fe0c648fee
Move helper functions for optimizing division by constant into the APInt
...
class.
llvm-svn: 70488
2009-04-30 10:15:35 +00:00
Dan Gohman
db3a57ec5c
Set mayLoad on MOVZX32_NOREXrm8 too.
...
llvm-svn: 70466
2009-04-30 03:11:48 +00:00
Dan Gohman
7216b9da5f
Fix ScalarEvolution::print to print a value for any Instruction with
...
a SCEVable type, not just integer types.
llvm-svn: 70463
2009-04-30 01:30:18 +00:00
Evan Cheng
99578674fd
Mark MOV8mr_NOREX and MOV8rm_NOREX as mayStore / mayLoad respectively.
...
llvm-svn: 70461
2009-04-30 00:58:57 +00:00
Bill Wendling
aeaf5a57be
Remove unused flags.
...
llvm-svn: 70459
2009-04-30 00:57:51 +00:00
Chris Lattner
5ab42e93c4
fix a regression handling indirect results: these need to be considered
...
memory operands otherwise the writebacks get lost when the inline asm
doesn't otherwise have side effects. This fixes rdar://6839427, though
clang really shouldn't generate these anymore.
llvm-svn: 70455
2009-04-30 00:48:50 +00:00
Bill Wendling
352ee2cb05
Fix the JIT bindings for ocaml.
...
llvm-svn: 70454
2009-04-30 00:43:39 +00:00
Chris Lattner
1fba01bbcd
remove progname which is never set. PR4085
...
llvm-svn: 70453
2009-04-30 00:24:33 +00:00
Bill Wendling
dad991900b
Error out with bad optimization level specified.
...
llvm-svn: 70449
2009-04-29 23:46:43 +00:00
Bill Wendling
6598b95712
Remove LTO optimization level.
...
llvm-svn: 70445
2009-04-29 23:40:42 +00:00
Bill Wendling
026e5d7667
Instead of passing in an unsigned value for the optimization level, use an enum,
...
which better identifies what the optimization is doing. And is more flexible for
future uses.
llvm-svn: 70440
2009-04-29 23:29:43 +00:00
Bill Wendling
db59fda319
Add support for a character after a command line option. Like '-Os'.
...
llvm-svn: 70437
2009-04-29 23:26:16 +00:00
Dale Johannesen
f4031bd01e
Print correct instruction in dump.
...
llvm-svn: 70427
2009-04-29 22:57:20 +00:00
Nate Begeman
7e6e352735
Fix infinite recursion in the C++ code which handles movddup by making it unnecessary.
...
llvm-svn: 70425
2009-04-29 22:47:44 +00:00
Dan Gohman
0098d01ef9
Implement getSCEVAtScope for SCEV cast expressions.
...
llvm-svn: 70422
2009-04-29 22:29:01 +00:00
Dan Gohman
494dac3f84
Generalize the cast-of-addrec folding to handle folding of SCEVs like
...
(sext i8 {-128,+,1} to i64) to i64 {-128,+,1}, where the iteration
crosses from negative to positive, but is still safe if the trip
count is within range.
llvm-svn: 70421
2009-04-29 22:28:28 +00:00
Dan Gohman
8ddd0b3599
Reword and tidy up some comments.
...
llvm-svn: 70416
2009-04-29 22:01:05 +00:00
Bill Wendling
e9037a97d1
Don't use 'false' for 'fast isel' here.
...
llvm-svn: 70411
2009-04-29 21:22:00 +00:00
Dan Gohman
d9775a3be1
Fix this test to match the new output from scalar-evolution.
...
llvm-svn: 70410
2009-04-29 21:06:20 +00:00
Jakob Stoklund Olesen
1971dc7007
MachineInstr::isRegTiedTo{Use,Def}Operand can safely be made const.
...
llvm-svn: 70408
2009-04-29 20:57:16 +00:00
Dan Gohman
d9b11b2ef4
Include the source type in SCEV cast expression debug output, and
...
print sext, zext, and trunc, instead of signextend, zeroextend,
and truncate, respectively, for consistency with the main IR.
llvm-svn: 70405
2009-04-29 20:27:52 +00:00
Nate Begeman
39b59db245
Update comment, replace theoretically impossible check with an assert.
...
llvm-svn: 70391
2009-04-29 18:13:31 +00:00
Dale Johannesen
b0bc5c2f81
Fix recent regression in gcc.dg/pr26719.c (6835035).
...
llvm-svn: 70386
2009-04-29 16:38:47 +00:00
Sanjiv Gupta
6f80ca34d4
Add directive to declare external globals.
...
llvm-svn: 70379
2009-04-29 08:23:18 +00:00
Evan Cheng
9cce299cc8
spillPhysRegAroundRegDefsUses() may have invalidated iterators stored in fixed_ IntervalPtrs. Reset them.
...
llvm-svn: 70378
2009-04-29 07:16:34 +00:00
Chris Lattner
e6d2e627da
testcase for PR4082
...
llvm-svn: 70375
2009-04-29 06:46:27 +00:00
Nate Begeman
5f829d896d
Implement review feedback for vector shuffle work.
...
llvm-svn: 70372
2009-04-29 05:20:52 +00:00
Sanjiv Gupta
ccd30945f9
Add a public method called getAddressSpace() to the GlobalAddressSDNode.
...
llvm-svn: 70366
2009-04-29 04:43:24 +00:00
Chris Lattner
7d10386113
Disable the load-shrinking optimization from looking at
...
anything larger than 64-bits, avoiding a crash. This should
really be fixed to use APInts, though type legalization happens
to help us out and we get good code on the attached testcase at
least.
This fixes rdar://6836460
llvm-svn: 70360
2009-04-29 03:45:07 +00:00
Dan Gohman
95c5b0e522
Update comments to reflect the current code.
...
llvm-svn: 70357
2009-04-29 01:54:20 +00:00
Dan Gohman
09ef9382da
Add some more doxygen comments to SCEVAddRec.
...
llvm-svn: 70354
2009-04-29 00:59:03 +00:00
Evan Cheng
cfb4cae201
Determine allocation 'preference' with right register class. I haven't seen this changing codegen so no test case.
...
llvm-svn: 70351
2009-04-29 00:42:27 +00:00
Bill Wendling
9f795134f3
The second part of the change from -fast to -O#. This changes the JIT to accept
...
an optimization level instead of a simple boolean telling it to generate code
"fast" or the other type of "fast".
llvm-svn: 70347
2009-04-29 00:32:19 +00:00
Bill Wendling
084669a1c9
Second attempt:
...
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.
Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'll change the JIT with a follow-up patch.
llvm-svn: 70343
2009-04-29 00:15:41 +00:00
Bill Wendling
d4eb842404
Correct comment.
...
llvm-svn: 70340
2009-04-29 00:09:22 +00:00
Dan Gohman
ed7f3a0eec
As with r70333, give the primary induction variable a use so
...
that it can't be trivially eliminated.
llvm-svn: 70334
2009-04-28 22:05:13 +00:00
Dan Gohman
2625f2cb80
Make this testcase slightly less trivial, so that it doesn't fail
...
if indvars happens to optimize away the unused primary induction
variable.
llvm-svn: 70333
2009-04-28 22:03:26 +00:00
Dan Gohman
807dff7486
Fix a grammaro in a comment.
...
llvm-svn: 70331
2009-04-28 21:54:23 +00:00
Anton Korobeynikov
dac88bae4f
Properly print 'P' modifier on inline asm memory operands.
...
This should fix PR3379 and PR4064.
Patch inspired by Edwin Török!
llvm-svn: 70328
2009-04-28 21:49:33 +00:00
Bob Wilson
3d948164f7
Fix trailing whitespace and 80-col. violations in recent TableGen changes.
...
llvm-svn: 70319
2009-04-28 19:41:44 +00:00
Evan Cheng
e0eb5483d1
Move getMatchingSuperReg() out of coalescer and into TargetRegisterInfo.
...
llvm-svn: 70309
2009-04-28 18:29:27 +00:00
Dale Johannesen
25148e11fb
Test for llvm-gcc bug fixed by 70301.
...
llvm-svn: 70302
2009-04-28 17:16:30 +00:00
Sanjiv Gupta
7bfed8a9f4
GlobalValue is always pointer type, so an assert isn't required.
...
llvm-svn: 70300
2009-04-28 16:39:45 +00:00
Stefanus Du Toit
d2b7be6e9b
Fix choice of version of Windows callback to use to consider not only the Visual Studio version, but also the Windows SDK version.
...
Patch by Tareq Siraj.
llvm-svn: 70299
2009-04-28 16:37:58 +00:00
Jakob Stoklund Olesen
fb9e23b217
Don't coalesce a physical register with an incompatible virtual register.
...
If the physical register does not belong to the virtual register's regclass,
don't coalesce. The physical register could be an invalid operand for an
instruction using the vreg.
The regclass matching is done after determining the actual subregisters being copied.
llvm-svn: 70298
2009-04-28 16:34:35 +00:00
Sanjiv Gupta
99b1b27dc2
Initialized arrays can be in any address space.
...
llvm-svn: 70297
2009-04-28 16:34:20 +00:00
Jakob Stoklund Olesen
604248e81f
Move getSubRegisterRegClass from ScheduleDagSDNodesEmit.cpp to a TargetRegisterClass method.
...
Also make the method non-asserting. It will return NULL when given an invalid subreg index.
The method is needed by an upcoming patch.
llvm-svn: 70296
2009-04-28 16:34:09 +00:00
Evan Cheng
7e09994cb8
Fix PR4034. Bug in LiveInterval::join when it's compacting new valno's.
...
llvm-svn: 70291
2009-04-28 06:24:09 +00:00
Jakob Stoklund Olesen
f4e74fe62f
Initial test commit
...
llvm-svn: 70290
2009-04-28 06:15:00 +00:00
Evan Cheng
c3884be983
Fix for PR4051. When 2address pass delete an instruction, update kill info when necessary.
...
llvm-svn: 70279
2009-04-28 02:12:36 +00:00
Bill Wendling
56f2987a87
r70270 isn't ready yet. Back this out. Sorry for the noise.
...
llvm-svn: 70275
2009-04-28 01:04:53 +00:00
Bill Wendling
d0ae15946c
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to
...
use the old behavior, the flag is -O0. This change allows for finer-grained
control over which optimizations are run at different -O levels.
Most of this work was pretty mechanical. The majority of the fixes came from
verifying that a "fast" variable wasn't used anymore. The JIT still uses a
"Fast" flag. I'm not 100% sure if it's necessary to change it there...
llvm-svn: 70270
2009-04-28 00:21:31 +00:00
Dan Gohman
3e6e188ee3
Remove an obsolete comment.
...
llvm-svn: 70262
2009-04-27 22:12:34 +00:00
Dale Johannesen
27b4f222cf
Fix PR 4086, a bug in FP IV elimination.
...
llvm-svn: 70247
2009-04-27 21:03:15 +00:00
Evan Cheng
093e4c578d
Fix PR4076. Correctly create live interval of physical register with two-address update.
...
llvm-svn: 70245
2009-04-27 20:42:46 +00:00
Dan Gohman
e99f98262c
Permit ChangeCompareStride to rewrite a comparison when the factor
...
between the comparison's iv stride and the candidate stride is
exactly -1.
llvm-svn: 70244
2009-04-27 20:35:32 +00:00
Jeffrey Yasskin
41f2477a50
Add tests for WeakVH and AssertingVH. These pointed out that the overloads for
...
the comparison operators were not only unnecessary in the presence of the
implicit conversion; they caused ambiguous overload errors. So I deleted them.
llvm-svn: 70243
2009-04-27 20:32:07 +00:00
Dan Gohman
7646637379
Teach getZeroExtendExpr and getSignExtendExpr to use trip-count
...
information to simplify [sz]ext({a,+,b}) to {zext(a),+,[zs]ext(b)},
as appropriate.
These functions and the trip count code each call into the other, so
this requires careful handling to avoid infinite recursion. During
the initial trip count computation, conservative SCEVs are used,
which are subsequently discarded once the trip count is actually
known.
Among other benefits, this change lets LSR automatically eliminate
some unnecessary zext-inreg and sext-inreg operation where the
operand is an induction variable.
llvm-svn: 70241
2009-04-27 20:16:15 +00:00
Chris Lattner
0e3f50d8cf
give bitstreamreader an API to ignore names for blocks/records,
...
only llvm-bcanalyzer wants this info.
llvm-svn: 70239
2009-04-27 20:04:08 +00:00
Owen Anderson
7ca3521d6a
Don't skip the CopyMI when removing kill markers.
...
This should have no effect on generated code, but makes the intermediate state
of the coalescer more sane.
llvm-svn: 70238
2009-04-27 19:55:47 +00:00
Duncan Sands
bfa037705e
Now that PR2957 is resolved, remove a bunch of
...
no-longer needed workarounds.
llvm-svn: 70234
2009-04-27 19:33:03 +00:00
Dale Johannesen
95743b2efd
Test for (llvm-gcc) 70231.
...
llvm-svn: 70233
2009-04-27 19:15:09 +00:00
Nate Begeman
c79f731531
Revert accidental testcase reduction
...
llvm-svn: 70226
2009-04-27 18:42:40 +00:00
Nate Begeman
8d6d4b9289
2nd attempt, fixing SSE4.1 issues and implementing feedback from duncan.
...
PR2957
ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle
mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes
as the shuffle mask. A value of -1 represents UNDEF.
In addition to eliminating the creation of illegal BUILD_VECTORS just to
represent shuffle masks, we are better about canonicalizing the shuffle mask,
resulting in substantially better code for some classes of shuffles.
llvm-svn: 70225
2009-04-27 18:41:29 +00:00
Chris Lattner
1cf8069c5f
Print statistics for each record kind saying the number of bits
...
and % abbreviated. For example:
Record Histogram:
Count # Bits % Abv Record Kind
25738 3424174 100.00 SM_SLOC_INSTANTIATION_ENTRY
814 562079 100.00 SM_SLOC_FILE_ENTRY
798 34110 SM_HEADER_FILE_INFO
3 91104 100.00 SM_SLOC_BUFFER_BLOB
3 498 100.00 SM_SLOC_BUFFER_ENTRY
1 465 SM_LINE_TABLE
llvm-svn: 70215
2009-04-27 18:15:27 +00:00
Chris Lattner
bf419a9328
clean up the output of llvm-bcanalyzer by using printf
...
instead of ostreams for formatting.
llvm-svn: 70214
2009-04-27 17:59:34 +00:00
Evan Cheng
0f85bd368c
Fix PR4056. It's possible a physical register def is dead if its implicit use is deleted by two-address pass.
...
llvm-svn: 70213
2009-04-27 17:36:47 +00:00
Evan Cheng
a630ce5fff
Also delete last unused val#.
...
llvm-svn: 70212
2009-04-27 17:35:19 +00:00