Commit Graph

33164 Commits

Author SHA1 Message Date
Chris Lattner
665b9e2a3c Random updates to passes for indbr, I need blockaddress before I can do much more.
llvm-svn: 85316
2009-10-27 21:27:42 +00:00
Chris Lattner
34c90ce60d cppbackend support for indbr
llvm-svn: 85312
2009-10-27 21:24:48 +00:00
Chris Lattner
f21034d6c3 CBE support for indbr.
llvm-svn: 85311
2009-10-27 21:21:06 +00:00
Johnny Chen
b746e248cd Similar to r85280, do not clear the "S" bit for RSBri and RSBrs.
llvm-svn: 85299
2009-10-27 20:51:49 +00:00
Devang Patel
635c6192e6 Do not held on to DenseMap slot accross map insertion. The insertion may cause the map to grow rending the slot invalid.
Use this opportunity to use ValueMap instead of DenseMap.

llvm-svn: 85298
2009-10-27 20:47:17 +00:00
Johnny Chen
d63b06e0f6 Set condition code bits of BL and BLr9 to 0b1110 (ALways) to distinguish between
BL_pred and BLr9_pred.

llvm-svn: 85297
2009-10-27 20:45:15 +00:00
Chris Lattner
bac03ba22e don't use stdio
llvm-svn: 85296
2009-10-27 20:42:54 +00:00
Jeffrey Yasskin
2d123f7740 Change the JIT to compile eagerly by default as agreed in
http://llvm.org/PR5184, and beef up the comments to describe what both options
do and the risks of lazy compilation in the presence of threads.

llvm-svn: 85295
2009-10-27 20:30:28 +00:00
Victor Hernandez
0f662a7acf Rename MallocFreeHelper as MemoryBuiltins
llvm-svn: 85286
2009-10-27 20:05:49 +00:00
Evan Cheng
151726ad30 Do away with addLegalFPImmediate. Add a target hook isFPImmLegal which returns true if the fp immediate can be natively codegened by target.
llvm-svn: 85281
2009-10-27 19:56:55 +00:00
Bob Wilson
5ca76e601f Do not clear the "S" bit for RSCri and RSCrs. They inherit from the "sI"
instruction format that already takes care of setting this.

llvm-svn: 85280
2009-10-27 19:52:03 +00:00
Chris Lattner
fdda543cea add enough support for indirect branch for the feature test to pass
(assembler,asmprinter, bc reader+writer) and document it.  Codegen
currently aborts on it.

llvm-svn: 85274
2009-10-27 19:13:16 +00:00
Johnny Chen
528c66b30c Explicitly specify 0b00, i.e, zero rotation, as the rotate filed (Inst{11-10})
for the r/rr fragment of the multiclass AI_unary_rrot/AI_bin_rrot.

llvm-svn: 85271
2009-10-27 18:44:24 +00:00
Sanjiv Gupta
c690360ed5 Remove unnecessary gotos to fall-thru successors.
llvm-svn: 85257
2009-10-27 17:40:24 +00:00
Johnny Chen
37851c95e8 Test commit. Added '.' to the comment line.
llvm-svn: 85255
2009-10-27 17:25:15 +00:00
Chris Lattner
fa5b1df64a Type.h doesn't need to #include LLVMContext.h
llvm-svn: 85254
2009-10-27 17:08:31 +00:00
Chris Lattner
855341bf05 pseudosourcevalue is also still using getGlobalContext(), so it isn't
thread safe either.

llvm-svn: 85253
2009-10-27 17:02:08 +00:00
Chris Lattner
5596e0eb77 apparently the X86 JIT isn't fully contextized, it is still using getGlobalContext() :(
llvm-svn: 85252
2009-10-27 17:01:03 +00:00
Rafael Espindola
7eb2a8fb0b Correctly align double arguments in the stack.
llvm-svn: 85235
2009-10-27 14:09:44 +00:00
Chris Lattner
aecb9a4040 Fix a pretty serious misfeature of the inliner: if it inlines a function
with multiple return values it inserts a PHI to merge them all together.
However, if the return values are all the same, it ends up with a pointless
PHI and this pointless PHI happens to really block SRoA from happening in 
at least a silly C++ example written by Doug, but probably others.  This 
fixes rdar://7339069.

llvm-svn: 85206
2009-10-27 05:39:41 +00:00
Mike Stump
5b347d4e9d VS build fix, patch by Marius Wachtler.
llvm-svn: 85197
2009-10-27 02:14:13 +00:00
Jeffrey Yasskin
1f331552d6 Fix OProfileJITEventListener after r85182.
llvm-svn: 85192
2009-10-27 01:06:51 +00:00
Eric Christopher
89c2f934d6 Add objectsize intrinsic and hook it up through codegen. Doesn't
do anything than return "I don't know" at the moment.

llvm-svn: 85189
2009-10-27 00:52:25 +00:00
Evan Cheng
032eef9720 Now VFP instructions.
llvm-svn: 85186
2009-10-27 00:20:49 +00:00
Dan Gohman
44189252b9 Add braces to avoid ambiguous else.
llvm-svn: 85185
2009-10-27 00:11:02 +00:00
Evan Cheng
f30e5556ba Change Thumb1 and Thumb2 instructions to separate opcode from operands with a tab instead of a space.
llvm-svn: 85184
2009-10-27 00:08:59 +00:00
Jeffrey Yasskin
42aa2a2692 Automatically do the equivalent of freeMachineCodeForFunction(F) when F is
being destroyed. This allows users to run global optimizations like globaldce
even after some functions have been jitted.

This patch also removes the Function* parameter to
JITEventListener::NotifyFreeingMachineCode() since it can cause that to be
called when the Function is partially destroyed. This change will be even more
helpful later when I think we'll want to allow machine code to actually outlive
its Function.

llvm-svn: 85182
2009-10-27 00:03:05 +00:00
Victor Hernandez
6c86b93663 Rename MallocHelper as MallocFreeHelper, since it now also identifies calls to free()
llvm-svn: 85181
2009-10-26 23:58:56 +00:00
Owen Anderson
a8d6745830 Add a straight-forward implementation of SCCVN for aggressively eliminating scalar redundancies.
llvm-svn: 85179
2009-10-26 23:55:47 +00:00
Evan Cheng
a883c2ebb7 Change ARM asm strings to separate opcode from operands with a tab instead of a space.
llvm-svn: 85178
2009-10-26 23:45:59 +00:00
Victor Hernandez
673c036bc7 Remove FreeInst.
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.

llvm-svn: 85176
2009-10-26 23:43:48 +00:00
Bob Wilson
5a870f848e Try to get ahead of Johnny Chen and pro-actively add some more ARM encoding
bits.  Johnny, please review -- I do not have a good track record of getting
these right.

llvm-svn: 85173
2009-10-26 22:59:12 +00:00
Bob Wilson
ace97183c7 Fix ARM encoding typo: Opcod3 is not passed to ASuI parent class.
Patch by Johnny Chen.

llvm-svn: 85169
2009-10-26 22:42:13 +00:00
Bob Wilson
32ee4ee163 Add more ARM instruction encodings for 's' bit set and "rs" register encoding
bits.  Patch by Johnny Chen.

llvm-svn: 85167
2009-10-26 22:34:44 +00:00
David Goodwin
0b5b62bfcf Allow the aggressive anti-dep breaker to process the same region multiple times. This is necessary because new anti-dependencies are exposed when "current" ones are broken.
llvm-svn: 85166
2009-10-26 22:31:16 +00:00
Dan Gohman
3f14cd3282 Simplify this code. LoopDeletion doesn't need to explicit check that
the loop exiting block dominates the latch block; if ScalarEvolution
can prove that the trip-count is finite, that's sufficient.

llvm-svn: 85165
2009-10-26 22:18:58 +00:00
Dan Gohman
795e3db7ce Code that checks WillNotOverflowSignedAdd before creating an Add
can safely use the NSW bit on the Add.

llvm-svn: 85164
2009-10-26 22:14:22 +00:00
Ted Kremenek
acb9fe806e Update CMake files.
llvm-svn: 85161
2009-10-26 22:06:01 +00:00
Dan Gohman
c8468855a7 Teach BasicAA how to analyze Select instructions, and make it more
aggressive on PHI instructions.

llvm-svn: 85158
2009-10-26 21:55:43 +00:00
David Goodwin
35fab8a585 Define virtual destructor in *.cpp file.
llvm-svn: 85146
2009-10-26 19:41:00 +00:00
David Goodwin
62dc7a4d93 Add aggressive anti-dependence breaker. Currently it is not the default for any target. Enable with -break-anti-dependencies=all.
llvm-svn: 85145
2009-10-26 19:32:42 +00:00
Dan Gohman
05a91cc09f Check in the experimental GEP splitter pass. This pass splits complex
GEPs (more than one non-zero index) into simple GEPs (at most one
non-zero index).  In some simple experiments using this it's not
uncommon to see 3% overall code size wins, because it exposes
redundancies that can be eliminated, however it's tricky to use
because instcombine aggressively undoes the work that this pass does.

llvm-svn: 85144
2009-10-26 19:12:14 +00:00
Anton Korobeynikov
4f40949874 Revert r85134, it breaks mingw build
llvm-svn: 85138
2009-10-26 18:40:24 +00:00
Dan Gohman
97690f7a2a When checking whether a def of an aliased register is dead, ask the
machineinstr whether the aliased register is dead, rather than the original
register is dead. This allows it to get the correct answer when examining
an instruction like this:
  CALLpcrel32 <ga:foo>, %AL<imp-def>, %EAX<imp-def,dead>
where EAX is dead but a subregister of it is still live. This fixes PR5294.

llvm-svn: 85135
2009-10-26 18:26:18 +00:00
Sanjiv Gupta
7ea628e8db Make PIC16 overlay a loadable pass.
llvm-svn: 85134
2009-10-26 18:22:59 +00:00
Devang Patel
9027c8f10f Do not use expensive sort().
llvm-svn: 85130
2009-10-26 17:09:00 +00:00
David Goodwin
f6199e95b0 Break anti-dependence breaking out into its own class.
llvm-svn: 85127
2009-10-26 16:59:04 +00:00
Devang Patel
9eb437047b Add support to encode type info using llvm::Constant.
Patch by Talin!

llvm-svn: 85126
2009-10-26 16:54:35 +00:00
Dan Gohman
7e7f34ab55 Fix a typo in a comment.
llvm-svn: 85120
2009-10-26 15:55:24 +00:00
Chris Lattner
7f9ddaf7e3 reapply r85085 with a bugfix to avoid infinite looping.
All of the 'demorgan' related xforms need to use 
dyn_castNotVal, not m_Not.

llvm-svn: 85119
2009-10-26 15:40:07 +00:00