Stefanus Du Toit
a1923eed8c
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
9956976b76
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
ad07acf07a
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
7263dc71e2
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
17d292db73
Join cross class copies using getCommonSubClass()
...
llvm-svn: 70513
2009-04-30 21:24:03 +00:00
Jakob Stoklund Olesen
bcb5d651a3
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
fddd4c600b
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
6d5f693ede
Add some comments, and tidy up some whitespace.
...
llvm-svn: 70510
2009-04-30 20:48:53 +00:00
Dan Gohman
3c9f4f765c
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
a4c868f1d4
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
42101a805b
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
e762abe486
Remove unnecessary "class" keywords.
...
llvm-svn: 70499
2009-04-30 17:46:20 +00:00
Bob Wilson
dd9b184c19
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
1400b41bf1
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
25d21786d3
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
9219a96e13
Oops! Missed a file in my last commit.
...
llvm-svn: 70491
2009-04-30 15:29:26 +00:00
Nick Lewycky
503cfd4ace
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
9768cabf4a
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
8a0e27efb2
Set mayLoad on MOVZX32_NOREXrm8 too.
...
llvm-svn: 70466
2009-04-30 03:11:48 +00:00
Dan Gohman
fac9c52fd8
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
b7d41a6680
Mark MOV8mr_NOREX and MOV8rm_NOREX as mayStore / mayLoad respectively.
...
llvm-svn: 70461
2009-04-30 00:58:57 +00:00
Bill Wendling
9a6ed80b64
Remove unused flags.
...
llvm-svn: 70459
2009-04-30 00:57:51 +00:00
Chris Lattner
794fb5b4b3
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
68ac27094d
Fix the JIT bindings for ocaml.
...
llvm-svn: 70454
2009-04-30 00:43:39 +00:00
Chris Lattner
25991c4e7d
remove progname which is never set. PR4085
...
llvm-svn: 70453
2009-04-30 00:24:33 +00:00
Bill Wendling
4df71cd268
Error out with bad optimization level specified.
...
llvm-svn: 70449
2009-04-29 23:46:43 +00:00
Bill Wendling
6e33661382
Remove LTO optimization level.
...
llvm-svn: 70445
2009-04-29 23:40:42 +00:00
Bill Wendling
40a162f75f
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
3f4c6171d1
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
be38eaf1d4
Print correct instruction in dump.
...
llvm-svn: 70427
2009-04-29 22:57:20 +00:00
Nate Begeman
b407809122
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
63bab48951
Implement getSCEVAtScope for SCEV cast expressions.
...
llvm-svn: 70422
2009-04-29 22:29:01 +00:00
Dan Gohman
06aff30f01
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
8b1b8d5891
Reword and tidy up some comments.
...
llvm-svn: 70416
2009-04-29 22:01:05 +00:00
Bill Wendling
e02f6210ab
Don't use 'false' for 'fast isel' here.
...
llvm-svn: 70411
2009-04-29 21:22:00 +00:00
Dan Gohman
9fa631c81a
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
0bfaaea2a4
MachineInstr::isRegTiedTo{Use,Def}Operand can safely be made const.
...
llvm-svn: 70408
2009-04-29 20:57:16 +00:00
Dan Gohman
55befacc69
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
e4dd5a96ba
Update comment, replace theoretically impossible check with an assert.
...
llvm-svn: 70391
2009-04-29 18:13:31 +00:00
Dale Johannesen
15486ddd95
Fix recent regression in gcc.dg/pr26719.c (6835035).
...
llvm-svn: 70386
2009-04-29 16:38:47 +00:00
Sanjiv Gupta
20d1683822
Add directive to declare external globals.
...
llvm-svn: 70379
2009-04-29 08:23:18 +00:00
Evan Cheng
62fdc300dd
spillPhysRegAroundRegDefsUses() may have invalidated iterators stored in fixed_ IntervalPtrs. Reset them.
...
llvm-svn: 70378
2009-04-29 07:16:34 +00:00
Chris Lattner
e0b97f682d
testcase for PR4082
...
llvm-svn: 70375
2009-04-29 06:46:27 +00:00
Nate Begeman
414534b3eb
Implement review feedback for vector shuffle work.
...
llvm-svn: 70372
2009-04-29 05:20:52 +00:00
Sanjiv Gupta
b1c777e865
Add a public method called getAddressSpace() to the GlobalAddressSDNode.
...
llvm-svn: 70366
2009-04-29 04:43:24 +00:00
Chris Lattner
e1eefefdc3
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
4f8ccd5bc8
Update comments to reflect the current code.
...
llvm-svn: 70357
2009-04-29 01:54:20 +00:00
Dan Gohman
ed64cdeaa2
Add some more doxygen comments to SCEVAddRec.
...
llvm-svn: 70354
2009-04-29 00:59:03 +00:00
Evan Cheng
51727d25b2
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
50971fd69c
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