Nick Lewycky
d73806a9cc
Replace explicit loop with utility function.
...
llvm-svn: 58593
2008-11-03 03:49:14 +00:00
Nick Lewycky
7b14e20a5e
Don't crash analyzing certain quadratics (addrec of {X,+,Y,+,1}).
...
We're still waiting on code that actually analyzes them properly.
llvm-svn: 58592
2008-11-03 02:43:49 +00:00
Owen Anderson
b067843863
Revert my last patch until I consult with Evan about it.
...
llvm-svn: 58591
2008-11-03 02:33:28 +00:00
Nick Lewycky
3c6d34a7f0
Changes from Duncan's review:
...
* merge two weak functions by making them both alias a third non-weak fn
* don't reimplement CallSite::hasArgument
* whitelist the safe linkage types
llvm-svn: 58568
2008-11-02 16:46:26 +00:00
Anton Korobeynikov
c11b47911d
Testcase for PR2691
...
llvm-svn: 58567
2008-11-02 16:46:17 +00:00
Anton Korobeynikov
1db1b64e6e
Silence a warning
...
llvm-svn: 58563
2008-11-02 11:47:11 +00:00
Duncan Sands
cede1e035c
Get this building on 64 bit machines (error:
...
cast from ‘const llvm::PointerType*’ to ‘unsigned int’
loses precision).
llvm-svn: 58561
2008-11-02 09:00:33 +00:00
Owen Anderson
2bb2aaa775
Don't do pre-splitting if doing so would create a value join that did not
...
exist before. Updating the live intervals in that care is tricky in the general
case.
Evan, if you see a tighter guard condition for this, let me know.
llvm-svn: 58560
2008-11-02 08:08:18 +00:00
Oscar Fuentes
0433be6feb
CMake: added a source file.
...
llvm-svn: 58559
2008-11-02 06:01:39 +00:00
Nick Lewycky
d01d42e76c
Add a new MergeFunctions pass. It finds identical functions and merges them.
...
This triggers only 60 times in llvm-test (look at .llvm.bc, not .linked.rbc)
and so it probably wont be turned on by default. Also, may of those are likely
to go away when PR2973 is fixed.
llvm-svn: 58557
2008-11-02 05:52:50 +00:00
Nick Lewycky
8d8acf327b
Fix demanded bits analysis with srem by negative number. Based on a patch
...
by Richard Osborne.
llvm-svn: 58555
2008-11-02 02:41:50 +00:00
Dan Gohman
83eea0b17f
Fix this recently moved code to use the correct type. CI is now a
...
ConstantInt, and SI is the original cast instruction. This fixes
PR2996.
llvm-svn: 58549
2008-11-02 00:17:33 +00:00
Mon P Wang
769134be1e
Added interface to allow clients to create a MemIntrinsicNode for
...
target intrinsics that touches memory
llvm-svn: 58548
2008-11-01 20:24:53 +00:00
Sanjiv Gupta
20b9687450
Reverting back 58505. Will commit it once I have the bc reader/writer/docs
...
ready.
llvm-svn: 58547
2008-11-01 10:57:12 +00:00
Bill Wendling
03f5122c6c
Whitespace fixes. No functionality change.
...
llvm-svn: 58539
2008-10-31 21:26:08 +00:00
Anton Korobeynikov
a411e2a086
Testcase for PR2613
...
llvm-svn: 58537
2008-10-31 20:10:49 +00:00
Anton Korobeynikov
7c5a01f0ec
Invalidate debug/eh/gc labels when unreachable MBB is deleted.
...
Based on patch by Martin Nowack!
llvm-svn: 58536
2008-10-31 20:08:30 +00:00
Evan Cheng
83bf3de134
Add comment.
...
llvm-svn: 58533
2008-10-31 19:56:03 +00:00
Evan Cheng
20dbb3bcad
Use better data structure for ConstPoolId2AddrMap.
...
llvm-svn: 58532
2008-10-31 19:55:13 +00:00
Evan Cheng
44994e0c77
Actually make debug output understandable.
...
llvm-svn: 58529
2008-10-31 19:15:52 +00:00
Mon P Wang
ef89465c9f
x86_64 rip-relative and magic mode address
...
llvm-svn: 58528
2008-10-31 19:13:42 +00:00
Evan Cheng
8fce66a47c
Forgot this in last commit.
...
llvm-svn: 58527
2008-10-31 19:11:09 +00:00
Evan Cheng
467e6e8093
Encode PICADD; some code clean up.
...
llvm-svn: 58526
2008-10-31 19:10:44 +00:00
Dan Gohman
50c76beeb0
Remove some unused virtual function bodies.
...
llvm-svn: 58524
2008-10-31 19:06:33 +00:00
Bill Wendling
d2bc13380f
Revert r58489. It isn't correct for all cases.
...
llvm-svn: 58523
2008-10-31 18:30:19 +00:00
Anton Korobeynikov
21c9705264
Symbol visibility is unsupported on cygwin too.
...
Patch by Jay Foad!
llvm-svn: 58520
2008-10-31 18:05:01 +00:00
Torok Edwin
38cbc4ba20
Add an assert to catch user errors like:
...
MyFunctionPass() : FunctionPass(ID) {}
when the user actually meant to write:
MyFunctionPass() : FunctionPass(&ID) {}
llvm-svn: 58518
2008-10-31 17:27:41 +00:00
Evan Cheng
7e8202fce4
Change x86 register allocation ordering to match that of gcc. Otherwise some tools get confused by prologue generated by llvm.
...
llvm-svn: 58517
2008-10-31 16:52:57 +00:00
Evan Cheng
d1f8c9f4a2
Add a fixme.
...
llvm-svn: 58514
2008-10-31 16:41:59 +00:00
Dan Gohman
71d7e9b667
Totally disable the setSubgraphColor calls temporarily, as they're
...
currently troublesome even for #ifndef NDEBUG builds.
llvm-svn: 58512
2008-10-31 16:12:56 +00:00
Duncan Sands
8758851908
Add a bunch of libcalls for ppcf128 that were somehow
...
completely forgotten about when writing LegalizeTypes.
llvm-svn: 58508
2008-10-31 14:06:52 +00:00
Sanjiv Gupta
e3ba47b71b
For some targets pointer and int are 16-bits. Allow 16-bits as a valid index
...
in such cases.
llvm-svn: 58505
2008-10-31 10:26:20 +00:00
Bill Wendling
6d70df0b05
Don't skip over all "terminator" instructions when determining where to put the
...
callee-saved restore code. It could skip over conditional jumps
accidentally. Instead, just skip the "return" instructions.
llvm-svn: 58489
2008-10-31 04:00:23 +00:00
Daniel Dunbar
a1c4fcfc29
Fix warning.
...
llvm-svn: 58486
2008-10-31 01:50:01 +00:00
Oscar Fuentes
39304667af
CMake: Fix some unwanted commentary line wraps on the last change.
...
llvm-svn: 58485
2008-10-31 01:37:26 +00:00
Oscar Fuentes
c999dfadf1
CMake: Establish dependencies among executables and libraries, using
...
data manually extracted from llvm-config.
llvm-svn: 58484
2008-10-31 01:24:51 +00:00
Dan Gohman
99cdf8893e
Use MOVSSmr instead of EXTRACTPSmr in the case of extracting
...
vector element 0 for a store, as it's smaller and faster.
llvm-svn: 58483
2008-10-31 00:57:24 +00:00
Jim Grosbach
2589604d85
Revert errant deletion. The target needs to be able to specify that it doesn't want the generic constant pool to be emitted.
...
llvm-svn: 58475
2008-10-30 23:44:39 +00:00
Evan Cheng
c696ef9b11
I think we got non-machine specific constpool entries covered.
...
llvm-svn: 58474
2008-10-30 23:43:36 +00:00
Cedric Venet
6c9f3ec66c
Change the name of the generated solution file for a CMake build. (from 'project' to 'LLVM').
...
!!!!!!!!!! Warning !!!!!!!!!!!!!!!
If you already have created a solution with cmake, you will need to manually open to the new one.
llvm-svn: 58461
2008-10-30 21:22:00 +00:00
Duncan Sands
aa53c491b2
Testcase for PR2987.
...
llvm-svn: 58459
2008-10-30 21:13:11 +00:00
Dan Gohman
13cbcf1c18
Canonicalize sext(i1) to i1?-1:0, and update various instcombine
...
optimizations accordingly.
llvm-svn: 58457
2008-10-30 20:40:10 +00:00
Duncan Sands
8311657b98
Testcase for PR2986.
...
llvm-svn: 58456
2008-10-30 20:34:30 +00:00
Duncan Sands
e18295c258
Fix PR2986: do not use a potentially illegal
...
type for the shift amount type. Add a check
that shifts and rotates use the type returned
by getShiftAmountTy for the amount. This
exposed some problems in CellSPU and PPC,
which have already been fixed.
llvm-svn: 58455
2008-10-30 20:26:50 +00:00
Duncan Sands
1310574b0f
Shift amounts should have type getShiftAmountTy
...
(i32 for PPC, not i8). Correct this, and some
formatting while there.
llvm-svn: 58451
2008-10-30 19:28:32 +00:00
Daniel Dunbar
3933e66a89
Add InlineCost class for represent the estimated cost of inlining a
...
function.
- This explicitly models the costs for functions which should
"always" or "never" be inlined. This fixes bugs where such costs
were not previously respected.
llvm-svn: 58450
2008-10-30 19:26:59 +00:00
Duncan Sands
0852f48d1d
Shift amounts should have the type given by
...
getShiftAmountTy (i32 in the case of CellSPU).
llvm-svn: 58449
2008-10-30 19:24:28 +00:00
Mon P Wang
01b8a5a967
Add missing vsetcc expansion for widening
...
llvm-svn: 58443
2008-10-30 18:21:52 +00:00
Oscar Fuentes
50af02391b
CMake: Reverted some unintentional changes on the previous commit.
...
llvm-svn: 58435
2008-10-30 17:21:37 +00:00
Oscar Fuentes
876aa17142
CMake: Cygwin pretends to be Unix.
...
Patch by Jay Foad.
llvm-svn: 58434
2008-10-30 17:15:54 +00:00
Evan Cheng
66cff408ff
ARM JIT should observe -relocation-model command line option.
...
llvm-svn: 58433
2008-10-30 16:10:54 +00:00
Mon P Wang
58c3794c27
Add initial support for vector widening. Logic is set to widen for X86.
...
One will only see an effect if legalizetype is not active. Will move
support to LegalizeType soon.
llvm-svn: 58426
2008-10-30 08:01:45 +00:00
Chris Lattner
7292fb191f
mention fortran status.
...
llvm-svn: 58416
2008-10-30 03:58:13 +00:00
Scott Michel
487c43412d
Resolve bug 2947: vararg-marked functions must spill registers R3-R79 to stack
...
so that va_start/va_arg/et.al. will walk arguments correctly for Cell SPU.
N.B.: Because neither clang nor llvm-gcc-4.2 can be built for CellSPU, this is
still unexorcised code.
llvm-svn: 58415
2008-10-30 01:51:48 +00:00
Bill Wendling
af7059edbf
Revert r58411. The user needs to #define this when using the JITMemoryManager.h header.
...
llvm-svn: 58414
2008-10-30 01:22:58 +00:00
Dan Gohman
97acad13de
Spell DISABLE_ASSERTIONS correctly.
...
llvm-svn: 58413
2008-10-30 01:08:03 +00:00
Bill Wendling
f11b321b28
Revert part of r58048. It was breaking on SnowLeopard claiming that
...
"__STDC_CONSTANT_MACROS" needs to be #defined first.
llvm-svn: 58411
2008-10-30 00:11:55 +00:00
Evan Cheng
19d64ba8bf
Correct way to handle CONSTPOOL_ENTRY instructions.
...
llvm-svn: 58409
2008-10-29 23:55:43 +00:00
Evan Cheng
de9dbc5584
Add debugging support.
...
llvm-svn: 58408
2008-10-29 23:55:17 +00:00
Evan Cheng
4421a114bb
Let target resolve some relocation results.
...
llvm-svn: 58407
2008-10-29 23:54:46 +00:00
Evan Cheng
d520a5296a
This is not needed anymore.
...
llvm-svn: 58406
2008-10-29 23:54:10 +00:00
Evan Cheng
34bd7fbb13
Add a bit to MachineRelocation that tells JIT that target is responsible for resolving the address. e.g. ARM constpool.
...
llvm-svn: 58405
2008-10-29 23:53:42 +00:00
Nate Begeman
534ac08ebd
Fix PEXTRQ encoding
...
llvm-svn: 58403
2008-10-29 23:07:17 +00:00
Chris Lattner
7ee0012707
add testcase for PR2964
...
llvm-svn: 58393
2008-10-29 18:42:22 +00:00
Dale Johannesen
98aa9d3e49
Add a RM pseudoreg for the rounding mode, which
...
allows ppcf128->int conversion to work with
DeadInstructionElimination. This is now turned
off but RM is harmless. It does not do a complete
job of modeling the rounding mode.
Revert marking MFCR as using all 7 CR subregisters;
while correct, this caused the problem in PR 2964,
plus the local RA crash noted in the comments.
This was needed to make DeadInstructionElimination,
but as we are not running that, it is backed out
for now. Eventually it should go back in and the
other problems fixed where they're broken.
llvm-svn: 58391
2008-10-29 18:26:45 +00:00
Duncan Sands
57b754612c
Testcase for PR2917.
...
llvm-svn: 58389
2008-10-29 18:06:20 +00:00
Duncan Sands
ee273419f9
Uniformize capitalization of NodeId.
...
llvm-svn: 58386
2008-10-29 17:52:12 +00:00
Chris Lattner
0934c0f35b
Fix PR2967 by not deleting volatile load/stores that occur before unreachable.
...
I don't really see this as being needed, but there is little harm from doing
it.
llvm-svn: 58385
2008-10-29 17:46:26 +00:00
Torok Edwin
49c28e4599
fix typo
...
llvm-svn: 58384
2008-10-29 16:32:06 +00:00
Duncan Sands
f33c3bc51f
Make the declaration of bzero match size_t on
...
x86-64-linux.
llvm-svn: 58383
2008-10-29 15:57:37 +00:00
Duncan Sands
fbb10bbec4
Fix PR2977: LegalizeTypes support for expanding
...
VAARG.
llvm-svn: 58379
2008-10-29 14:25:28 +00:00
Duncan Sands
17e678be87
Add sanity checking for BUILD_PAIR (I noticed the
...
other day that PPC custom lowering could create
a BUILD_PAIR of two f64 with a result type of...
f64! - already fixed). Fix a place that triggers
the sanity check.
llvm-svn: 58378
2008-10-29 14:22:20 +00:00
Evan Cheng
ce3ccc1ea0
- More pre-split fixes: spill slot live interval computation bug; restore point bug.
...
- If a def is spilt, remember its spill index to allow its reuse.
llvm-svn: 58375
2008-10-29 08:39:34 +00:00
Duncan Sands
b964813b1f
Fix a FIXME: in ReplaceNodeWith, if the new node
...
is morphed by AnalyzeNewNode into a previously
processed node, and different result values of
that node are remapped to values with different
nodes, then we could end up using wrong values
here [we were assuming that all results remap
to values with the same underlying node]. This
seems theoretically possible, but I don't have
a testcase. The meat of the patch is in the
changes to AnalyzeNewNode/AnalyzeNewValue and
ReplaceNodeWith. While there, I changed names
like RemapNode to RemapValue, since it really
remaps values. To tell the truth, I would be
much happier if we were only remapping nodes
(it would simplify a bunch of logic, and allow
for some cute speedups) but I haven't yet worked
out how to do that.
llvm-svn: 58372
2008-10-29 06:42:19 +00:00
Duncan Sands
914745768e
Fix 80 column violations.
...
llvm-svn: 58371
2008-10-29 06:33:00 +00:00
Duncan Sands
d4ec020734
Fix 80 column violations.
...
llvm-svn: 58370
2008-10-29 06:31:03 +00:00
Evan Cheng
938e201528
- Rewrite code that update register live interval that's split.
...
- Create and update spill slot live intervals.
- Lots of bug fixes.
llvm-svn: 58367
2008-10-29 05:06:14 +00:00
Oscar Fuentes
2500aaebdd
CMake: Removed some cruft.
...
llvm-svn: 58358
2008-10-29 02:33:15 +00:00
Daniel Dunbar
e7fbf9f425
Factor shouldInline method out of Inliner.
...
- No functionality change.
llvm-svn: 58355
2008-10-29 01:02:02 +00:00
David Greene
125f96d369
Don't force things to be Value * when they're not.
...
llvm-svn: 58354
2008-10-29 00:30:54 +00:00
Daniel Dunbar
cc20455346
Assorted comment/naming fixes, 80-col violations, and reindentation.
...
- No functionality change.
llvm-svn: 58352
2008-10-28 23:24:26 +00:00
Dan Gohman
2c34c130bf
(A & sext(C)) | (B & ~sext(C) -> C ? A : B
...
llvm-svn: 58351
2008-10-28 22:38:57 +00:00
Dan Gohman
1e3c25ac2d
Take Chris' suggestion and define EnableFastISelVerbose and
...
EnableFastISelAbort variables for Release mode instead of
using ifdefs in the code.
llvm-svn: 58350
2008-10-28 20:35:31 +00:00
Chris Lattner
8f243a5dde
llvm-ld doesn't have a -march option. This fixes PR2961
...
llvm-svn: 58345
2008-10-28 20:05:06 +00:00
Daniel Dunbar
db0b70a937
Reuse PrintEscapedString for printing names in .ll
...
- One functionality change, '\\' in a name is now printed as a hex
escape instead of "\\\\". This is consistent with other users of
PrintEscapedString.
llvm-svn: 58343
2008-10-28 19:33:02 +00:00
Dan Gohman
e750bb67ee
Protect the code for fast-isel debugging with #ifndef NDEBUG.
...
llvm-svn: 58340
2008-10-28 19:08:46 +00:00
Dan Gohman
f15195d8a9
Add some more information to the top-level comment for this file.
...
llvm-svn: 58339
2008-10-28 18:47:37 +00:00
Jim Grosbach
ff2b4948ce
Support for constant islands in the ARM JIT.
...
Since the ARM constant pool handling supercedes the standard LLVM constant
pool entirely, the JIT emitter does not allocate space for the constants,
nor initialize the memory. The constant pool is considered part of the
instruction stream.
Likewise, when resolving relocations into the constant pool, a hook into
the target back end is used to resolve from the constant ID# to the
address where the constant is stored.
For now, the support in the ARM emitter is limited to 32-bit integer. Future
patches will expand this to the full range of constants necessary.
llvm-svn: 58338
2008-10-28 18:25:49 +00:00
Torok Edwin
df851ff94f
fix prototype of print, it is (llvm/Pass.h):
...
virtual void print(std::ostream &O, const Module *M) const;
instead of
virtual void print(llvm::OStream &O, const Module *M) const;
as the docs say
llvm-svn: 58337
2008-10-28 17:29:23 +00:00
Evan Cheng
c0468cf03c
Avoid calls to setSubgraphColor in release mode. They generate lots of error messages and slow down compilation.
...
llvm-svn: 58336
2008-10-28 17:23:13 +00:00
Tanya Lattner
e660fa88ee
Do not allow a user to set the operand for a constant.
...
llvm-svn: 58335
2008-10-28 17:22:40 +00:00
Torok Edwin
7b747ef017
fix duplicate anchor names, and broken anchor links from the TOC
...
llvm-svn: 58332
2008-10-28 16:54:34 +00:00
Duncan Sands
4068a7f31e
Fix darwin ppc llvm-gcc build breakage: intercept
...
ppcf128 to i32 conversion and expand it into a code
sequence like in LegalizeDAG. This needs custom
ppc lowering of FP_ROUND_INREG, so turn that on and
make it work with LegalizeTypes. Probably PPC should
simply custom lower the original conversion.
llvm-svn: 58329
2008-10-28 15:00:32 +00:00
Duncan Sands
b68694f17d
Turn off LegalizeTypes for this test for the
...
moment, while waiting for a proper solution.
llvm-svn: 58324
2008-10-28 09:55:04 +00:00
Duncan Sands
f3e5850f80
Fix a testcase provided by Bill in which the node
...
id could end up being wrong mostly because of
forgetting to remap new nodes that morphed into
processed nodes through CSE.
llvm-svn: 58323
2008-10-28 09:38:36 +00:00
Chris Lattner
5fa1040130
Don't produce invalid comparisons after legalize.
...
llvm-svn: 58320
2008-10-28 07:11:07 +00:00
Chris Lattner
56d016ab05
fix some whitespace stuff
...
llvm-svn: 58319
2008-10-28 07:10:51 +00:00
Chris Lattner
a2422d8f3e
fit in 80 cols
...
llvm-svn: 58318
2008-10-28 06:20:17 +00:00
Chris Lattner
38461f6b2f
Fix a nasty miscompilation of 176.gcc on linux/x86 where we synthesized
...
a memset using 16-byte XMM stores, but where the stack realignment code
didn't work. Until it does (PR2962) disable use of xmm regs in memcpy
and memset formation for linux and other targets with insufficiently
aligned stacks.
This is part of PR2888
llvm-svn: 58317
2008-10-28 05:49:35 +00:00
Chris Lattner
50bfa4306a
more comment cleanups.
...
llvm-svn: 58316
2008-10-28 05:32:08 +00:00
Chris Lattner
9356a868ef
comment cleanups.
...
llvm-svn: 58315
2008-10-28 05:31:31 +00:00
Evan Cheng
5e88d90379
If def is in the same mbb as the barrier, spilt the value after the last use before the barrier.
...
llvm-svn: 58314
2008-10-28 05:28:21 +00:00
Evan Cheng
9f854697e4
Add command line option to limit the number splits to help debugging.
...
llvm-svn: 58312
2008-10-28 01:48:24 +00:00
Dan Gohman
7634f6379f
Fix the name of the include guard to match the filename.
...
llvm-svn: 58310
2008-10-28 00:52:46 +00:00
Evan Cheng
fab31680e1
Avoid putting a split past the end of the live range; always shrink wrap live interval in the barrier mbb.
...
llvm-svn: 58309
2008-10-28 00:47:49 +00:00
Bill Wendling
6e4ffba212
- Fix SUBVERSION string to handle x.x.x version number formats.
...
- Add VERBOSE=1 flag.
- Specify the LLVM_SUBMIT_VERSION when doing the "make install".
The libLTO.dylib relies upon this flag during that time.
llvm-svn: 58298
2008-10-27 23:31:24 +00:00
Evan Cheng
e67ad47a00
Silence a bogus compile time warning.
...
llvm-svn: 58297
2008-10-27 23:29:28 +00:00
David Greene
aebd9e01d7
Re-apply 55137 with fixes.
...
llvm-svn: 58296
2008-10-27 23:24:03 +00:00
Evan Cheng
f46642ada6
Remove val# defined by a remat'ed def that is now dead.
...
llvm-svn: 58294
2008-10-27 23:21:01 +00:00
Ted Kremenek
8fcff4d87a
Fix bogus comparison of "const char *" with c-string literal. Use strcmp instead.
...
llvm-svn: 58290
2008-10-27 22:43:07 +00:00
David Greene
ce2a938186
Have TableGen emit setSubgraphColor calls under control of a -gen-debug
...
flag. Then in a debugger developers can set breakpoints at these calls
to see waht is about to be selected and what the resulting subgraph
looks like. This really helps when debugging instruction selection.
llvm-svn: 58278
2008-10-27 21:56:29 +00:00
Daniel Dunbar
e3aa50c280
Return bool (inserted) from StringSet::insert as for StringMap::insert.
...
llvm-svn: 58268
2008-10-27 20:50:02 +00:00
Cedric Venet
4e6ad3c12b
Remove tabs from my previous commit.
...
llvm-svn: 58263
2008-10-27 19:21:35 +00:00
Chris Lattner
b5cf101fa2
rename vec_spat -> vec_splat, pointed out by duncan
...
llvm-svn: 58260
2008-10-27 18:28:24 +00:00
David Greene
b04e7c36d3
Add setSubgraphColor to color an entire portion of a SelectionDAG. This
...
will be used to support debug features in TableGen.
llvm-svn: 58257
2008-10-27 18:17:03 +00:00
David Greene
f9812d8166
Add STL-style typedefs and default constructors to make it possible to
...
use DenseMap in more contexts.
llvm-svn: 58256
2008-10-27 18:15:15 +00:00
David Greene
b00b267bcc
Fix PR2634. Create new virtual registers from spills early so that we
...
can give it the same stack slot as the spilled interval if it is folded.
This prevents the fold/unfold code from pointing to the wrong register.
llvm-svn: 58255
2008-10-27 17:38:59 +00:00
Matthijs Kooijman
d470f73e2c
Remove redundant word in tblgen error message.
...
llvm-svn: 58250
2008-10-27 15:59:43 +00:00
Duncan Sands
835bdca590
Fix UpdateNodeOperands so that it does CSE of calls
...
(and a bunch of other node types). While there, I
added a doNotCSE predicate and used it to reduce code
duplication (some of the duplicated code was wrong...).
This fixes ARM/cse-libcalls.ll when using LegalizeTypes.
llvm-svn: 58249
2008-10-27 15:30:53 +00:00
Duncan Sands
75cf2e03ab
Fix a bug in which a node could be added to the
...
worklist twice: UpdateNodeOperands could morph
a new node into a node already on the worklist.
We would then recalculate the NodeId for this
existing node and add it to the worklist. The
testcase is ARM/cse-libcalls.ll, the problem
showing up once UpdateNodeOperands is taught to
do CSE for calls.
llvm-svn: 58246
2008-10-27 13:18:32 +00:00
Torok Edwin
450ffd2f3e
Avoid crashing if instruction is not part of a loop.
...
If it is not part of a loop it is obviously invariant wrt to all loops.
llvm-svn: 58240
2008-10-27 10:18:45 +00:00
Gabor Greif
bb026a0c63
formatting tweak for intrinsic
...
llvm-svn: 58239
2008-10-27 10:17:24 +00:00
Torok Edwin
ca97b42ef7
export an ID for the instructionNamer, allowing analysis/transformation passes
...
that need it to require it by ID.
llvm-svn: 58238
2008-10-27 10:16:27 +00:00
Bill Wendling
ef36246c6f
Some grammar fixes, and non-invasive format changes.
...
llvm-svn: 58237
2008-10-27 09:27:33 +00:00
Duncan Sands
8475d56794
Turn on LegalizeTypes, the new type legalization
...
codegen infrastructure, by default. Please report
any breakage to the mailing lists.
llvm-svn: 58232
2008-10-27 08:42:46 +00:00
Nick Lewycky
c5a68d26d9
Fix an obvious copy/pasto.
...
llvm-svn: 58231
2008-10-27 07:28:44 +00:00
Evan Cheng
f713722975
For now, don't split live intervals around x87 stack register barriers. FpGET_ST0_80 must be right after a call instruction (and ADJCALLSTACKUP) so we need to find a way to prevent reload of x87 registers between them.
...
llvm-svn: 58230
2008-10-27 07:14:50 +00:00
Chris Lattner
59b5691388
Rewrite all the 'PromoteLocallyUsedAlloca[s]' logic. With the power of
...
LargeBlockInfo, we can now dramatically simplify their implementation
and speed them up at the same time. Now the code has time proportional
to the number of uses of the alloca, not the size of the block.
This also eliminates code that tried to batch up different allocas which
are used in the same blocks, and eliminates the 'retry list' logic which
was baroque and no unneccesary. In addition to being a speedup for crazy
cases, this is also a nice cleanup:
PromoteMemoryToRegister.cpp | 270 +++++++++++++++-----------------------------
1 file changed, 96 insertions(+), 174 deletions(-)
llvm-svn: 58229
2008-10-27 07:05:53 +00:00
Chris Lattner
a9642ff459
no need to print output
...
llvm-svn: 58228
2008-10-27 06:56:35 +00:00
Chris Lattner
f594ecc453
Add a new LargeBlockInfo helper, which is just a wrapper around
...
a trivial dense map. Use this in RewriteSingleStoreAlloca to
avoid aggressively rescanning blocks over and over again. This
fixes PR2925, speeding up mem2reg on the testcase in that bug
from 4.56s to 0.02s in a debug build on my machine.
llvm-svn: 58227
2008-10-27 06:05:26 +00:00
Chris Lattner
bf2262270e
mention getresult -> extractvalue (PR2935)
...
llvm-svn: 58226
2008-10-27 04:39:23 +00:00
Dale Johannesen
1d7e42c8fe
Increase default setting of tail-merge-threshold to
...
150, based on llvm-test measurements.
llvm-svn: 58225
2008-10-27 02:10:21 +00:00
Nick Lewycky
f5ba827d41
Remove -check-exit-code from bugpoint. This is subsumed by -append-exit-code.
...
Note that -check-exit-code was on by default while -append-exit-code is not.
llvm-svn: 58221
2008-10-26 23:59:36 +00:00
Chris Lattner
2bfc72e65e
fix PR2953, an off-by-one error handling formatted i/o.
...
Thanks to Török Edwin for the awesome reduced testcase.
llvm-svn: 58199
2008-10-26 19:20:47 +00:00
Chris Lattner
a43f2b21e7
remove eh output from this test.
...
llvm-svn: 58196
2008-10-26 18:53:07 +00:00
Cedric Venet
10a11f033c
Add a default constructor to AsmWriterOperand to make VS2008sp1 happy. (AsmWriterOperand is used in a std::pair, and VS need to generate the default constructor of this pair).
...
llvm-svn: 58185
2008-10-26 15:40:44 +00:00
Evan Cheng
ed033ede22
Do not shrink wrap live interval in a mbb if it's livein any of its successor blocks. The mbb can be revisited again after all of the successors are processed.
...
llvm-svn: 58184
2008-10-26 07:49:03 +00:00
Oscar Fuentes
29a0da5f8e
Return something (i.e. NULL) from an unimplemented virtual function.
...
llvm-svn: 58183
2008-10-26 04:26:33 +00:00
Oscar Fuentes
e638f5d854
CMake: If we have `clang' under the `tools/' subdirectory, add it to
...
the build.
llvm-svn: 58179
2008-10-26 00:52:09 +00:00
Oscar Fuentes
20baf2fc3c
CMake: Support for LLVM_USED_LIBS variable, which is the cmake
...
counterpart of USED_LIBS.
llvm-svn: 58178
2008-10-26 00:51:05 +00:00
Oscar Fuentes
ca0b988a21
CMake: Removed unnecessary macro definitions. They are defined in
...
config.h
llvm-svn: 58177
2008-10-26 00:50:03 +00:00
Oscar Fuentes
bf81f792cd
CMake: GetTargetTriple: new module for determining the target
...
triple. Assign to LLVM_HOSTTRIPLE so it figures in config.h.
llvm-svn: 58176
2008-10-26 00:47:52 +00:00
Bill Wendling
97f7de8875
Fix type-o in ExprMapKeyType::operator ==(). The "&&" was missing.
...
Patch by Frits van Bommel!
llvm-svn: 58175
2008-10-26 00:19:56 +00:00
Evan Cheng
f48367b8e9
Handle cases where there aren't uses in the barrier mbb.
...
llvm-svn: 58174
2008-10-25 23:49:39 +00:00
Evan Cheng
6be78004a5
Add storeRegTo{StackSlot|Addr} and loadRegFrom{StackSlot|Addr} descriptions.
...
llvm-svn: 58164
2008-10-25 23:08:22 +00:00
Dan Gohman
f856f50463
Make comments and code for QuietWarnings and QuietErrors
...
actually correspond to what their names suggest.
llvm-svn: 58146
2008-10-25 17:57:20 +00:00
Dan Gohman
811eed81ab
SDNodes may have at most one Flag result. Update this comment
...
to reflect that.
llvm-svn: 58145
2008-10-25 17:51:24 +00:00
Dan Gohman
191453174d
Move the code that adds the DeadMachineInstructionElimPass from
...
target-independent code to target-specific code. This prevents it
from running on targets that aren't using fast-isel.
In addition to saving compile time, this addresses the problem
that not all targets are prepared for it. In order to use this
pass, all instructions must declare all their fixed uses and
defs of physical registers.
llvm-svn: 58144
2008-10-25 17:46:52 +00:00
Gordon Henriksen
bf40eee91a
Related to PR2911, reject as invalid non-pointer GC roots.
...
llvm-svn: 58143
2008-10-25 16:28:35 +00:00
Nicolas Geoffray
5457ce9ac3
Support for allocation of TLS variables in the JIT. Allocation of a global
...
variable is moved to the execution engine. The JIT calls the TargetJITInfo
to allocate thread local storage. Currently, only linux/x86 knows how to
allocate thread local global variables.
llvm-svn: 58142
2008-10-25 15:41:43 +00:00
Nicolas Geoffray
db30612fc4
Generate code for TLS instructions.
...
llvm-svn: 58141
2008-10-25 15:22:06 +00:00
Bruno Cardoso Lopes
24eb3de4c2
Added MIPS release notes.
...
llvm-svn: 58139
2008-10-25 14:56:26 +00:00
Oscar Fuentes
24617b7152
CMake: Directed bug reports to llvmbugs.
...
llvm-svn: 58134
2008-10-25 03:49:35 +00:00
Oscar Fuentes
9ba4650b76
CMake: lib/Target/ARM/AsmPrinter/CMakeLists.txt added.
...
llvm-svn: 58133
2008-10-25 03:40:32 +00:00
Oscar Fuentes
a9ac909248
CMake: MSVC++ no longer uses a special configuration method.
...
llvm-svn: 58132
2008-10-25 03:29:36 +00:00
Oscar Fuentes
593bb21ded
CMake: Sync'ed DataTypes.h.cmake with DataTypes.h.in.
...
llvm-svn: 58131
2008-10-25 03:25:11 +00:00
Oscar Fuentes
c4b5c8c1ed
CMake: Cross-platform support for using pre-generated llvmAsmParser.cpp and llvmAsmParser.h.
...
llvm-svn: 58130
2008-10-25 03:19:08 +00:00
Evan Cheng
85d71d4588
If val# def is ~0U, meaning it's defined by a PHI, and it's previously split, spill before the barrier because it's impossible to determine if all the defs are spilled in the same spill slot.
...
llvm-svn: 58129
2008-10-25 00:52:41 +00:00
Dale Johannesen
71f361e758
Mark MFCR as reading all condition code registers.
...
Prevents some more overzealous deletions (mostly
in AltiVec code).
llvm-svn: 58121
2008-10-24 22:08:01 +00:00
Dale Johannesen
3863f8e725
Rewrite logic to figure out whether LR needs to
...
be saved/restored in the prolog/epilog. We need
to do this iff something in the function stores
into it.
llvm-svn: 58116
2008-10-24 21:24:23 +00:00
Dale Johannesen
e45896fc4f
Be kind to non-x86 hosts.
...
llvm-svn: 58113
2008-10-24 21:20:25 +00:00
Torok Edwin
33986d8f17
move the note to the correct README
...
llvm-svn: 58104
2008-10-24 19:23:07 +00:00
Torok Edwin
fcaae54669
add note about va_arg code on x86 and x86-64
...
llvm-svn: 58103
2008-10-24 19:20:05 +00:00
Evan Cheng
cd160f9859
Fix a pasto.
...
llvm-svn: 58102
2008-10-24 18:46:44 +00:00
Duncan Sands
014f5bbaad
Fix translateX86CC: if SetCCOpcode is SETULE and
...
LHS is a foldable load, then LHS and RHS are swapped
and SetCCOpcode is changed to SETUGT. But the later
code is expecting operands to be the wrong way round
for SETUGT, but they are not in this case, resulting
in an inverted compare. The solution is to move the
load normalization before the correction for SETUGT.
This bug was tickled by LegalizeTypes which happened
to legalize the testcase slightly differently to
LegalizeDAG.
llvm-svn: 58092
2008-10-24 13:03:10 +00:00
Cedric Venet
a00d112486
Modify the cmake build system so that if it doesn't find bison, it will use the pregenerated file in from the svn (.cvs). Work only for windows for the moment. Tested on Vista64 with MSVC2008express.
...
llvm-svn: 58090
2008-10-24 11:24:33 +00:00
Steve Naroff
7fb14b0cd0
Add a file to VC++ proj.
...
llvm-svn: 58089
2008-10-24 10:38:57 +00:00
Nick Lewycky
730d5dade6
Don't try to create a mask when we don't need one. Fixes a crash.
...
llvm-svn: 58075
2008-10-24 06:14:27 +00:00
Evan Cheng
f8b09d424d
Fix a end() dereference; remove an abort() that wasn't meant to be left in.
...
llvm-svn: 58072
2008-10-24 05:53:44 +00:00
Nick Lewycky
f6e4dca67e
Add value range analyzing of Add and Sub.
...
Understand that mul %x, 1 = %x.
llvm-svn: 58069
2008-10-24 04:00:26 +00:00
Evan Cheng
4bac4d0a16
Avoid splitting an interval multiple times; avoid splitting re-materializable val# (for now).
...
llvm-svn: 58068
2008-10-24 02:05:00 +00:00
Dan Gohman
712886f561
Fix constant-offset emission for x86-64 absolute addresses. This
...
fixes a bunch of test-suite JIT failures on x86-64 in
-relocation-model=static mode.
llvm-svn: 58066
2008-10-24 01:57:54 +00:00
Steve Naroff
886b5193a7
Add file to VC++ project.
...
llvm-svn: 58060
2008-10-24 01:21:47 +00:00
Dale Johannesen
8b531d2754
Initialize uninitialized variable.
...
llvm-svn: 58057
2008-10-24 01:06:58 +00:00
Ted Kremenek
3c6de496b0
Added raw_fd_ostream::close().
...
llvm-svn: 58052
2008-10-23 23:49:09 +00:00
Steve Naroff
a6090204a1
Changes to make the Windows build work...
...
- Add a file to the VC++ project.
- Make sure the clang driver links against the Transforms library.
- Incorporate changes from patch by Dan Gohman.
llvm-svn: 58048
2008-10-23 23:28:23 +00:00
Evan Cheng
d0d0317b9a
Committing a good chunk of the pre-register allocation live interval splitting pass. It's handling simple cases and appear to do good things. Next: avoid splitting an interval multiple times; renumber registers when possible; record stack slot live intervals for coloring; rematerialize defs when possible.
...
llvm-svn: 58044
2008-10-23 20:43:13 +00:00
Dale Johannesen
e395d78657
Mark defs and uses of CTR and LR correctly.
...
Prevents DeadMachineInstructionElim from thinking
things like MTCTR are dead (fixes massive
testsuite breakage at -O0).
llvm-svn: 58043
2008-10-23 20:41:28 +00:00
Daniel Dunbar
f4be24686f
Make sure to set stdout to binary when writing bitcode files via
...
std::ostream API.
llvm-svn: 58042
2008-10-23 19:37:34 +00:00
Duncan Sands
62951678ee
Fix thinko - the operand number has nothing to do
...
with the result number.
llvm-svn: 58041
2008-10-23 19:34:23 +00:00
Argyrios Kyrtzidis
cdc89ad215
Introduce INT64_C macro and unbreak LLVM on MSVC.
...
llvm-svn: 58039
2008-10-23 17:20:39 +00:00
Chris Lattner
9246c2c8e1
make this test not depend on how the system header defines memset.
...
llvm-svn: 58016
2008-10-23 00:24:51 +00:00
Daniel Dunbar
7f39e2d85a
Change create*Pass factory functions to return Pass* instead of
...
LoopPass*.
- Although less precise, this means they can be used in clients
without RTTI (who would otherwise need to include LoopPass.h, which
eventually includes things using dynamic_cast). This was the
simplest solution that presented itself, but I am happy to use a
better one if available.
llvm-svn: 58010
2008-10-22 23:32:42 +00:00
Ted Kremenek
5902794c8c
Fix incorrect testing for the end of the both strings in CStrInCStrNoCase. This could cause a read-out-of-bounds error if s2 is smaller than s1.
...
llvm-svn: 58009
2008-10-22 23:16:52 +00:00
Jim Grosbach
1ecf1fd5c8
remove extraneous #ifdef's
...
llvm-svn: 58006
2008-10-22 22:27:51 +00:00
Daniel Dunbar
890d0deb74
Add raw_ostream versions of WriteBitcodeToFile and BitcodeWriterPass.
...
- The old versions are still hanging around, but should be migrated
away from.
llvm-svn: 57989
2008-10-22 17:39:14 +00:00
Dale Johannesen
f6655a9e79
Remove allocation of unused stack slot.
...
llvm-svn: 57987
2008-10-22 17:26:06 +00:00
Julien Lerouge
e9de15b88a
Fix for PR2881: fix a small leak exposed by valgrind, using a ManagedStatic.
...
llvm-svn: 57984
2008-10-22 16:30:41 +00:00
Gordon Henriksen
e38d542d89
[PR2886] Ignore stderr from ocamlc since it prints unresolvable warnings on some platforms.
...
llvm-svn: 57976
2008-10-22 12:41:54 +00:00
Gordon Henriksen
9b601a4df8
Regenerate.
...
llvm-svn: 57975
2008-10-22 12:40:55 +00:00
Gordon Henriksen
2289eb89fb
[PR2886] Don't look for ocaml's .opt executables; something in the autoconf/test machinery doesn't handle the period properly.
...
llvm-svn: 57974
2008-10-22 12:40:40 +00:00
Duncan Sands
8178141378
LegalizeTypes soft-float support for fpow.
...
llvm-svn: 57973
2008-10-22 11:49:09 +00:00
Duncan Sands
5ee1dde8fa
Get this working with LegalizeTypes: (1) don't
...
assume that i64 has been turned into a BUILD_PAIR
node (when called from LegalizeTypes this hasn't
happened yet) and don't use a vector shuffle mask
with an illegal element type.
llvm-svn: 57972
2008-10-22 11:24:12 +00:00
Torok Edwin
822dcee526
Regenerate configure
...
llvm-svn: 57971
2008-10-22 09:56:27 +00:00
Argyrios Kyrtzidis
9e50bff478
Unbreak LLVM on the MSVC compiler:
...
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h
-Define strtoull
llvm-svn: 57970
2008-10-22 09:54:13 +00:00
Duncan Sands
685dcdc896
Use spaces rather than tab.
...
llvm-svn: 57969
2008-10-22 09:42:14 +00:00
Duncan Sands
578a68a91a
Be nice to CellSPU: for this target getSetCCResultType
...
may return i8, which can result in SELECT nodes for
which the type of the condition is i8, but there are
no patterns for select with i8 condition. Tweak the
LegalizeTypes logic to avoid this as much as possible.
This isn't a real fix because it is still perfectly
possible to end up with such select nodes - CellSPU
needs to be fixed IMHO.
llvm-svn: 57968
2008-10-22 09:23:20 +00:00
Duncan Sands
01a1c11218
Port from LegalizeDAG the logic to only generate
...
ADDC/ADDE/SUBC/SUBE if the target supports it.
llvm-svn: 57967
2008-10-22 09:07:29 +00:00
Duncan Sands
a1a388cac3
Add some comments explaining the meaning of a boolean
...
that is not of type MVT::i1 in SELECT and SETCC nodes.
Relax the LegalizeTypes SELECT condition promotion
sanity checks to allow other condition types than i1.
llvm-svn: 57966
2008-10-22 09:06:24 +00:00
Duncan Sands
4b6b5fcd80
Temporarily allow the operands of a BUILD_VECTOR
...
to have a different type to the vector element
type. This should be fairly harmless because in
the past guys like this were being built all over
the place (and were cleaned up when I added this
check). The reason for relaxing this check is
that it helps LegalizeTypes legalize vector
shuffles: the mask is a BUILD_VECTOR that it is
*not always possible* to legalize while keeping it
a BUILD_VECTOR (vector_shuffle requires the mask
to be a BUILD_VECTOR, as opposed to a vector with
the right vector type). With this check it is even
harder to legalize the mask - turning the check off
means that LegalizeTypes manages to legalize almost
all vector shuffles encountered in practice. The
correct solution is to change vector_shuffle to be a
variadic node with the mask built into it as operands.
While waiting for that change, this hack stops the
problem with vector_shuffle from blocking the turning
on of LegalizeTypes.
llvm-svn: 57965
2008-10-22 09:00:33 +00:00
Chris Lattner
35b40f8c2f
Fix PR2907 by digging through constant expressions to find FP constants that
...
are their operands.
llvm-svn: 57956
2008-10-22 04:53:16 +00:00
Daniel Dunbar
81b5fa5620
Move Print*Pass to use raw_ostream.
...
llvm-svn: 57946
2008-10-22 03:25:22 +00:00
Oscar Fuentes
64c996271e
CMake: `make install' for libraries, executables and header files.
...
llvm-svn: 57945
2008-10-22 02:56:07 +00:00
Oscar Fuentes
cac467ef44
CMake: use add_llvm_example for HowToUseJIT.
...
llvm-svn: 57944
2008-10-22 02:52:59 +00:00
Oscar Fuentes
f3c03b02dc
CMake: Turned some libraries into partially linked objects. Corrected
...
names of LLVMCore and ARMCodeGen.
llvm-svn: 57943
2008-10-22 02:51:53 +00:00
Dale Johannesen
cf4607fcce
Adjust comments for pedantic satisfaction.
...
llvm-svn: 57940
2008-10-22 00:02:32 +00:00
Bill Wendling
8286026700
Fix comment to name "TokenFactor" instead of "Token factor".
...
llvm-svn: 57939
2008-10-21 23:57:52 +00:00
Oscar Fuentes
7089213eec
CMake: updated lib/VMCore/CMakeLists.txt
...
llvm-svn: 57937
2008-10-21 23:52:03 +00:00
Daniel Dunbar
54d5b9ea2c
Privatize PrintModulePass and PrintFunctionPass and add
...
createPrintModulePass and createPrintFunctionPass.
- So clients who compile w/o RTTI can use them.
llvm-svn: 57933
2008-10-21 23:33:38 +00:00
Dale Johannesen
3d7ece1acb
Add comments to explain uint64->f64 algorithm,
...
well, sort of. (Algorithm by Ian Ollmann.)
llvm-svn: 57932
2008-10-21 23:07:49 +00:00
Dale Johannesen
28929589e7
Add an SSE2 algorithm for uint64->f64 conversion.
...
The same one Apple gcc uses, faster. Also gets the
extreme case in gcc.c-torture/execute/ieee/rbug.c
correct which we weren't before; this is not
sufficient to get the test to pass though, there
is another bug.
llvm-svn: 57926
2008-10-21 20:50:01 +00:00
Dan Gohman
8b44b88eff
Fix SelectionDAGBuild lowering of Select instructions to
...
handle first-class aggregate values. Also, fix a bug in
the Ret handling for empty aggregates.
llvm-svn: 57925
2008-10-21 20:00:42 +00:00
Daniel Dunbar
1ca20df437
Clear raw_fd_ostream error string on success and explain behavior in
...
documentation.
Add C++ header marker.
llvm-svn: 57923
2008-10-21 19:53:10 +00:00
Dan Gohman
c7d4f28254
Updated email address.
...
llvm-svn: 57920
2008-10-21 19:50:00 +00:00
Dan Gohman
4ddf7a4c22
Implement the optimized FCMP_OEQ/FCMP_UNE code for x86 fast-isel.
...
llvm-svn: 57915
2008-10-21 18:24:51 +00:00
Torok Edwin
016fa4cd0d
Fix make check on Solaris 10/x86: the default grep is not GNU grep, same for as.
...
llvm-svn: 57912
2008-10-21 17:21:32 +00:00
Jim Grosbach
cfebc18d7c
use pre-UAL mnemonics for push/pop for compilaton callback function
...
llvm-svn: 57911
2008-10-21 16:54:12 +00:00
Nuno Lopes
94844e2054
fix a tricky bug in the JIT global variable emitter, that was triggered when JITing a variable independently of a function. This lead to sharing memory memory between functions and GVs thus changing the value of a GV could change the code in execution. more details on the ML.
...
llvm-svn: 57900
2008-10-21 11:42:16 +00:00
Ted Kremenek
cdef990677
constify some methods and variables in ImmutableList.
...
llvm-svn: 57894
2008-10-21 05:59:33 +00:00
Chris Lattner
192f27cb5c
really fix run line
...
llvm-svn: 57889
2008-10-21 03:55:19 +00:00
Chris Lattner
b4ee2aebb5
fix run line
...
llvm-svn: 57888
2008-10-21 03:54:49 +00:00
Chris Lattner
0b641e4718
remove some unneeded eh generation
...
llvm-svn: 57887
2008-10-21 03:49:19 +00:00
Dan Gohman
c14e5227f0
Disable constant-offset folding for PowerPC, as the PowerPC target
...
isn't yet prepared for it.
llvm-svn: 57886
2008-10-21 03:41:46 +00:00
Dan Gohman
269246b034
Don't create TargetGlobalAddress nodes with offsets that don't fit
...
in the 32-bit signed offset field of addresses. Even though this
may be intended, some linkers refuse to relocate code where the
relocated address computation overflows.
Also, fix the sign-extension of constant offsets to use the
actual pointer size, rather than the size of the GlobalAddress
node, which may be different, for example on x86-64 where MVT::i32
is used when the address is being fit into the 32-bit displacement
field.
llvm-svn: 57885
2008-10-21 03:38:42 +00:00
Dan Gohman
97d95d6d85
Optimized FCMP_OEQ and FCMP_UNE for x86.
...
Where previously LLVM might emit code like this:
ucomisd %xmm1, %xmm0
setne %al
setp %cl
orb %al, %cl
jne .LBB4_2
it now emits this:
ucomisd %xmm1, %xmm0
jne .LBB4_2
jp .LBB4_2
It has fewer instructions and uses fewer registers, but it does
have more branches. And in the case that this code is followed by
a non-fallthrough edge, it may be followed by a jmp instruction,
resulting in three branch instructions in sequence. Some effort
is made to avoid this situation.
To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
FCMP_UNE in lowered form, and replace them with code that emits
two branches, except in the case where it would require converting
a fall-through edge to an explicit branch.
Also, X86InstrInfo.cpp's branch analysis and transform code now
knows now to handle blocks with multiple conditional branches. It
uses loops instead of having fixed checks for up to two
instructions. It can now analyze and transform code generated
from FCMP_OEQ and FCMP_UNE.
llvm-svn: 57873
2008-10-21 03:29:32 +00:00
Dan Gohman
c835458da9
When the coalescer is doing rematerializing, have it remove
...
the copy instruction from the instruction list before asking the
target to create the new instruction. This gets the old instruction
out of the way so that it doesn't interfere with the target's
rematerialization code. In the case of x86, this helps it find
more cases where EFLAGS is not live.
Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
to see if it reached the end of the block after scanning each
instruction, instead of just before. This lets it notice when the
end of the block is only two instructions away, without doing any
additional scanning.
These changes allow rematerialization to clobber EFLAGS in more
cases, for example using xor instead of mov to set the return value
to zero in the included testcase.
llvm-svn: 57872
2008-10-21 03:24:31 +00:00
Dan Gohman
97d3f6cfe3
Make the NaN test come second, heuristically assuming
...
that NaNs are less common.
llvm-svn: 57871
2008-10-21 03:12:54 +00:00
Dan Gohman
72e66eedb8
Use Function::getEntryBlock() instead of Function::front(), for clarity.
...
llvm-svn: 57870
2008-10-21 03:10:28 +00:00
Oscar Fuentes
0e12e5b12c
CMake: updated lib/CodeGen/CMakeLists.txt
...
llvm-svn: 57869
2008-10-21 02:37:50 +00:00
Dan Gohman
fa29b67aee
Fix a bug that prevented llvm-extract -delete from working.
...
llvm-svn: 57864
2008-10-21 01:08:07 +00:00
Chris Lattner
4396e0d2c3
Fix gcc.c-torture/compile/920520-1.c by inserting bitconverts
...
for strange asm conditions earlier. In this case, we have a
double being passed in an integer reg class. Convert to like
sized integer register so that we allocate the right number
for the class (two i32's for the f64 in this case).
llvm-svn: 57862
2008-10-21 00:45:36 +00:00
Evan Cheng
7e721ecd21
Add skeleton for the pre-register allocation live interval splitting pass.
...
llvm-svn: 57847
2008-10-20 21:44:59 +00:00
Jim Grosbach
9396051e3d
Update the stub and callback code to handle lazy compilation. The stub
...
is re-written by the callback to branch directly to the compiled code
in future invocations.
Added back in range-based memory permission functions for the updating of
the stub on Darwin.
llvm-svn: 57846
2008-10-20 21:39:23 +00:00
Dan Gohman
1a59b3b9b8
Fast-isel no longer an experiment.
...
llvm-svn: 57845
2008-10-20 21:30:12 +00:00
Evan Cheng
bc623edaba
Add a register class -> virtual registers map.
...
llvm-svn: 57844
2008-10-20 20:03:28 +00:00
Evan Cheng
b660409c7d
This forward declaration is unnecessary.
...
llvm-svn: 57843
2008-10-20 20:02:17 +00:00
Duncan Sands
aac74a9055
Support operations like fp_to_uint with a vector
...
result type when the result type is legal but
not the operand type. Add additional support
for EXTRACT_SUBVECTOR and CONCAT_VECTORS,
needed to handle such cases.
llvm-svn: 57840
2008-10-20 16:31:21 +00:00
Duncan Sands
d28e8ff804
Teach getTypeToTransformTo to return something
...
sensible for vectors being scalarized. Note
that this method can't return anything very
sensible when splitting non-power-of-two vectors.
llvm-svn: 57839
2008-10-20 16:24:25 +00:00
Duncan Sands
e0fb87acf6
LegalizeTypes support for atomic operation promotion.
...
llvm-svn: 57838
2008-10-20 16:17:42 +00:00
Duncan Sands
840143fc6f
Use DAG.getIntPtrConstant rather than DAG.getConstant
...
with TLI.getPointerTy for a small simplification.
llvm-svn: 57837
2008-10-20 16:14:43 +00:00
Duncan Sands
5805334d5b
Always use either MVT::i1 or getSetCCResultType for
...
the condition of a SELECT node. Make sure that the
correct extension type (any-, sign- or zero-extend)
is used.
llvm-svn: 57836
2008-10-20 16:13:04 +00:00
Duncan Sands
fe9b5550de
Formatting - no functional change.
...
llvm-svn: 57834
2008-10-20 16:06:47 +00:00
Duncan Sands
3ed8b29ace
Don't use a random type for the select condition,
...
use an MVT::i1 and simplify the code while there.
llvm-svn: 57833
2008-10-20 16:04:57 +00:00
Dan Gohman
afed8590f0
Fix a typo in a comment.
...
llvm-svn: 57832
2008-10-20 15:58:02 +00:00
Duncan Sands
1d20ab5784
Have X86 custom lowering for LegalizeTypes use
...
LowerOperation if it doesn't know what else to do.
This methods should probably be factorized some,
but this is good enough for the moment. Have
LowerATOMIC_BINARY_64 use EXTRACT_ELEMENT rather
than assuming the operand is a BUILD_PAIR (if it
is then getNode will automagically simplify the
EXTRACT_ELEMENT). This way LowerATOMIC_BINARY_64
usable from LegalizeTypes.
llvm-svn: 57831
2008-10-20 15:56:33 +00:00
Matthijs Kooijman
2225299eec
Fix typo in a comment.
...
llvm-svn: 57829
2008-10-20 11:24:57 +00:00
Matthijs Kooijman
6d833160a5
Remove another stale comment.
...
llvm-svn: 57828
2008-10-20 11:23:18 +00:00
Matthijs Kooijman
f9b89bc030
Remove an inappropriate (probably outdated) comment.
...
llvm-svn: 57827
2008-10-20 11:21:12 +00:00
Matthijs Kooijman
3abb308878
Fix spelling error.
...
llvm-svn: 57820
2008-10-20 08:45:34 +00:00
Bill Wendling
8ec2a4a96c
Set N->OperandList to 0 after deletion. Otherwise, it's possible that it will
...
be either deleted or referenced afterwards.
llvm-svn: 57786
2008-10-19 20:51:12 +00:00
Bill Wendling
6c87bfc6fd
Fix comment. Other formatting changes. No functionality changes.
...
llvm-svn: 57785
2008-10-19 20:34:04 +00:00
Duncan Sands
8d11adca4c
Vector shuffle mask elements may be "undef". Handle
...
this everywhere in LegalizeTypes.
llvm-svn: 57783
2008-10-19 15:00:25 +00:00
Duncan Sands
c6d12bd665
Use a legal integer type for vector shuffle mask
...
elements. Otherwise LegalizeTypes will, reasonably
enough, legalize the mask, which may result in it
no longer being a BUILD_VECTOR node (LegalizeDAG
simply ignores the legality or not of vector masks).
llvm-svn: 57782
2008-10-19 14:58:05 +00:00
Chris Lattner
160e8abd77
Reapply r57699 with a fix to not crash on asms with multiple results. Unlike
...
the previous patch this one actually passes make check.
"Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand."
llvm-svn: 57771
2008-10-18 18:49:30 +00:00
Dan Gohman
727a94063c
Don't truncate GlobalAddress offsets to int in debug output.
...
llvm-svn: 57770
2008-10-18 18:22:42 +00:00
Evan Cheng
2dadd3bbc6
By min, I mean max.
...
llvm-svn: 57766
2008-10-18 05:21:37 +00:00
Evan Cheng
ac4e70d946
When creating intervals, leave min(1, numdefs) holes after each instruction.
...
llvm-svn: 57765
2008-10-18 05:18:55 +00:00
Mon P Wang
446218462b
Make llvm memory barrier available as an intrinsic
...
llvm-svn: 57750
2008-10-18 02:48:13 +00:00
Dan Gohman
2fe6bee5b6
Teach DAGCombine to fold constant offsets into GlobalAddress nodes,
...
and add a TargetLowering hook for it to use to determine when this
is legal (i.e. not in PIC mode, etc.)
This allows instruction selection to emit folded constant offsets
in more cases, such as the included testcase, eliminating the need
for explicit arithmetic instructions.
This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
that attempted to achieve the same effect, but wasn't as effective.
Also, fix handling of offsets in GlobalAddressSDNodes in several
places, including changing GlobalAddressSDNode's offset from
int to int64_t.
The Mips, Alpha, Sparc, and CellSPU targets appear to be
unaware of GlobalAddress offsets currently, so set the hook to
false on those targets.
llvm-svn: 57748
2008-10-18 02:06:02 +00:00
Dan Gohman
6de2556205
Revert r57699. It's causing regressions in
...
test/CodeGen/X86/2008-09-17-inline-asm-1.ll
and a few others, and it breaks the llvm-gcc build.
llvm-svn: 57747
2008-10-18 01:03:45 +00:00
Dan Gohman
83876cd9b0
Use the opcode predicates, instead of duplicating the code.
...
llvm-svn: 57735
2008-10-17 21:42:45 +00:00
Dan Gohman
209fc26462
This is now partly done.
...
llvm-svn: 57734
2008-10-17 21:39:27 +00:00
Dan Gohman
b1d8d6ecff
This is done.
...
llvm-svn: 57733
2008-10-17 21:38:40 +00:00
Dan Gohman
d01ddb51ee
Factor out the code for mapping LLVM IR condition opcodes to
...
ISD condition opcodes into helper functions.
llvm-svn: 57726
2008-10-17 21:16:08 +00:00
Evan Cheng
0fcc89b596
Add implicit defs of XMM8 to XMM15 on 32-bit call instructions. While this is not technically true, it tells tblgen that these instructions "clobber" the entire XMM register file.
...
llvm-svn: 57723
2008-10-17 21:02:22 +00:00
Evan Cheng
010e9b0760
Add RCBarriers to TargetInstrDesc. It's a list of register classes the given instruction can "clobber". For example, on x86 the call instruction can modify all of the XMM and fp stack registers.
...
TableGen has been taught to generate the lists from instruction definitions.
llvm-svn: 57722
2008-10-17 21:00:09 +00:00
Evan Cheng
94169f1021
Fix PR2898. Spiller delete a store for reuse before it knows for sure the reuse happened.
...
Patch by Lang Hames!
llvm-svn: 57720
2008-10-17 20:56:41 +00:00
Chris Lattner
aadf7414b2
add support for 128 bit aggregates.
...
llvm-svn: 57715
2008-10-17 19:59:51 +00:00
Bill Wendling
fe9e2c587d
The Dwarf writer was comparing mangled and unmangled names for C++ code when we
...
have an unreachable block in a function. This was triggering the assert. This is
a horrid hack to cover this up.
Oh! for a good debug info architecture!
llvm-svn: 57714
2008-10-17 18:48:57 +00:00
Mon P Wang
85f48ade9c
Added MemIntrinsicNode which is useful to represent target intrinsics that
...
touches memory and need an associated MemOperand
llvm-svn: 57712
2008-10-17 18:22:58 +00:00
Dan Gohman
293abcc91d
Factor out the code for mapping LLVM IR condition opcodes to
...
ISD condition opcodes into helper functions.
llvm-svn: 57710
2008-10-17 18:18:45 +00:00
Chris Lattner
8e2ef196ae
add support for 128 bit inputs on both x86-64 and x86-32.
...
llvm-svn: 57709
2008-10-17 18:15:05 +00:00
Chris Lattner
c7e65f4377
Fix a bug where the x86 backend would reject 64-bit r constraints when
...
in 32-bit mode instead of assigning a register pair. This has nothing to
do with PR2356, but I happened to notice it while working on it.
llvm-svn: 57704
2008-10-17 17:59:52 +00:00
Chris Lattner
052092bf9c
Fix PR2356 on PowerPC: if we have an input and output that are tied together
...
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand.
llvm-svn: 57699
2008-10-17 17:52:49 +00:00
Chris Lattner
00c5d69998
remove an xfailed test.
...
llvm-svn: 57695
2008-10-17 17:26:48 +00:00
Chris Lattner
e212b970cf
remove this test: it is xfailed anyway, and is failing for a reason
...
other than why it was xfailed.
llvm-svn: 57694
2008-10-17 17:26:19 +00:00
Evan Cheng
27c3702267
Fix lfence and mfence encoding. These look like MRM5r and MRM6r instructions except they do not have any operands. The RegModRM byte is encoded with register number 0.
...
llvm-svn: 57692
2008-10-17 17:14:20 +00:00
Evan Cheng
9e23d746bf
getX86RegNum has long been moved to X86RegisterInfo.
...
llvm-svn: 57691
2008-10-17 17:12:18 +00:00
Chris Lattner
3b1833c9b4
refactor some code into a helper method, no functionality change.
...
llvm-svn: 57690
2008-10-17 17:05:25 +00:00
Chris Lattner
860df6e84c
Keep track of *which* input constraint matches an output
...
constraint. Reject asms where an output has multiple
input constraints tied to it.
llvm-svn: 57687
2008-10-17 16:47:46 +00:00
Chris Lattner
ef8901722e
add an assert so that PR2356 explodes instead of running off an
...
array. Improve some minor comments, refactor some helpers in
AsmOperandInfo. No functionality change for valid code.
llvm-svn: 57686
2008-10-17 16:21:11 +00:00
Gabor Greif
ca01496e59
remove spurious space in link
...
llvm-svn: 57677
2008-10-17 14:43:58 +00:00
Gabor Greif
97966407d0
Add comment on how tagged pointers are
...
distinguished from normal (untagged) ones
as per review comment.
I am sufficiently unaquainted with doxygen to
defer the markup to someone with more experience.
llvm-svn: 57676
2008-10-17 08:31:36 +00:00
Evan Cheng
08acb24225
Fix a very subtle spiller bug: UpdateKills should not forget to track defs of aliases.
...
llvm-svn: 57673
2008-10-17 06:16:07 +00:00
Chris Lattner
7e9e3b3d4b
add some simple hacky long double support for the CBE. This
...
should work for intel long double, but ppc long double aborts
in convert.
llvm-svn: 57672
2008-10-17 06:11:48 +00:00
Dan Gohman
10549c29a8
Use INT64_C to emit constant values, to avoid problems with
...
constants that don't fit in an int. This fixes
"this decimal constant is unsigned only in ISO C90"
warnings.
llvm-svn: 57668
2008-10-17 04:40:39 +00:00
Dan Gohman
ca0546facc
Fun x86 encoding tricks: when adding an immediate value of 128,
...
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.
A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.
To support this, teach tablegen how to handle 64-bit constants.
llvm-svn: 57663
2008-10-17 01:33:43 +00:00
Dan Gohman
a39b0a1f05
Define patterns for shld and shrd that match immediate
...
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.
Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.
Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.
These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.
llvm-svn: 57662
2008-10-17 01:23:35 +00:00
Dan Gohman
215742a966
Use 0 instead of false to return a null pointer.
...
llvm-svn: 57660
2008-10-17 00:56:52 +00:00
Dan Gohman
016f16daf1
Fix this test so it actually runs the grep lines.
...
llvm-svn: 57653
2008-10-16 23:57:54 +00:00
Dan Gohman
e33afda4fa
Trim #includes.
...
llvm-svn: 57649
2008-10-16 20:18:31 +00:00
Chris Lattner
ba88d86a65
fix typo noticed by sdt
...
llvm-svn: 57644
2008-10-16 17:02:50 +00:00
Gabor Greif
0bd120e817
Introduce a typing refinenement on tagged data
...
using the 'volatile' qualifier. This should not have any operational consequences
on code, because tags should always be stripped off (giving a non-volatile pointer)
before dereferencing. The new qualification is there to catch some attempts to use
tagged pointers in a context where an untagged pointer is appropriate.
Notably this approach does not catch dereferencing of tagged pointers, but helps
in separating the two concepts a bit.
llvm-svn: 57641
2008-10-16 15:33:02 +00:00
Mikhail Glushenkov
35945b6af2
Re-apply Makefile changes. Fix build with srcdir != objdir.
...
llvm-svn: 57636
2008-10-16 14:02:29 +00:00
Duncan Sands
dc84511146
Fix warnings about mb/me being potentially used
...
uninitialized in these functions with gcc-4.3.
llvm-svn: 57635
2008-10-16 13:02:33 +00:00
Duncan Sands
1c7f8901c6
Fix "large integer implicitly truncated to unsigned type"
...
warning on x86-64 with gcc-4.3.
llvm-svn: 57634
2008-10-16 09:14:58 +00:00
Duncan Sands
7451f87273
Testcase for PR2762.
...
llvm-svn: 57633
2008-10-16 08:56:46 +00:00
Chris Lattner
305fb0a7ba
add some notes
...
llvm-svn: 57631
2008-10-16 07:04:06 +00:00
Chris Lattner
29628cc5da
add some notes and a file to collect unimplemented features in the
...
x86 backend. These will all be answered with "patches welcome", so
a PR doesn't help drive them along.
llvm-svn: 57630
2008-10-16 06:46:12 +00:00
Chris Lattner
122c9b1b22
mark some targets as experimental. Andrew, if you think that Alpha is
...
basically working, feel free to remove the tag. The other targets have
really basic things that break them.
llvm-svn: 57628
2008-10-16 06:16:50 +00:00
Chris Lattner
229f765dbe
Verify prefetch arguments, PR2576.
...
llvm-svn: 57626
2008-10-16 06:00:36 +00:00
Chris Lattner
1baace07c4
apply Eli's patch for PR2165 and provide a testcase.
...
llvm-svn: 57625
2008-10-16 05:26:51 +00:00
Dan Gohman
33332bce17
Const-ify several TargetInstrInfo methods.
...
llvm-svn: 57622
2008-10-16 01:49:15 +00:00
Dan Gohman
4a87660127
Remove an unused variable.
...
llvm-svn: 57621
2008-10-16 01:47:47 +00:00
Dan Gohman
fc27e25a6e
Fix Instruction::isIdenticalTo and isSameOperationAs to recognize
...
additional information in Loads, Stores, Calls, Invokes,
InsertValueInsts, and ExtractValueInsts.
llvm-svn: 57620
2008-10-16 01:24:45 +00:00
Zhongxing Xu
20c1b60178
Fix a calculation error in comments.
...
llvm-svn: 57619
2008-10-16 01:21:44 +00:00
Dan Gohman
0b3bcee284
Rename AliasSet to SubRegs, to reflect changes in the surrounding code.
...
llvm-svn: 57618
2008-10-16 01:06:18 +00:00
Dan Gohman
6613991eae
Move the include of MachineLocation.h into MachineModuleInfo.h
...
because it declares a std::vector<MachineMove>, and strict
concept checking requires the definition of MachineMove to be
available.
llvm-svn: 57617
2008-10-16 00:20:14 +00:00
Dan Gohman
986c9bbe59
Implement a SmallVector insert method that can insert multiple
...
copies of a value, and add several additional utilities to make
SmallVector better conform to the Container concept.
llvm-svn: 57616
2008-10-16 00:15:24 +00:00
Dan Gohman
d6ebff8761
Fix several places that called mapped_iterator's constructor without
...
passing in a function object.
llvm-svn: 57615
2008-10-16 00:12:39 +00:00
Dan Gohman
bf293c48db
Fix a subtle bug in DeadMachineInstructionElim's liveness
...
computation. A def of a register doesn't necessarily kill
live super-registers.
llvm-svn: 57614
2008-10-16 00:11:23 +00:00
Dan Gohman
6bae5268a7
Fix the predicate for memop64 to be a regular load, not just
...
an unindexed load.
llvm-svn: 57612
2008-10-16 00:03:00 +00:00
Dan Gohman
bc0278400c
Teach instcombine's visitLoad to scan back several instructions
...
to find opportunities for store-to-load forwarding or load CSE,
in the same way that visitStore scans back to do DSE. Also, define
a new helper function for testing whether the addresses of two
memory accesses are known to have the same value, and use it in
both visitStore and visitLoad.
These two changes allow instcombine to eliminate loads in code
produced by front-ends that frequently emit obviously redundant
addressing for memory references.
llvm-svn: 57608
2008-10-15 23:19:35 +00:00
Dan Gohman
7847142f26
Correct the name of isTrapping in comments.
...
llvm-svn: 57606
2008-10-15 22:56:21 +00:00
Dan Gohman
8a97a9a7e8
Fix whitespace in a comment.
...
llvm-svn: 57605
2008-10-15 22:55:03 +00:00
Duncan Sands
5e39031007
Testcase for PR2894.
...
llvm-svn: 57604
2008-10-15 22:34:34 +00:00
Nicolas Geoffray
54efd496bc
Remove naming Tilmann for generics.
...
llvm-svn: 57599
2008-10-15 20:25:04 +00:00
Anton Korobeynikov
ba13e8db17
Add global variable to test for consistency
...
llvm-svn: 57597
2008-10-15 20:22:44 +00:00
Anton Korobeynikov
99ed98ab40
This is not failing anymore
...
llvm-svn: 57596
2008-10-15 20:13:10 +00:00
Anton Korobeynikov
006659f08d
Also properly handle linking of strong alias and weak global
...
llvm-svn: 57595
2008-10-15 20:10:50 +00:00
Anton Korobeynikov
82dd61114d
Properly handle linking of strong alias with weak function, this fixes PR2883
...
llvm-svn: 57594
2008-10-15 20:10:08 +00:00
Bill Wendling
f998a65980
Testcase for PR1638.
...
llvm-svn: 57590
2008-10-15 18:27:15 +00:00
Dan Gohman
c7e00ba60f
Fix a missing space after the return type in invoke statements.
...
This fixes PR2894.
llvm-svn: 57589
2008-10-15 18:02:08 +00:00
Chris Lattner
e0230f4646
Fix PR2115 by doxygenating Use more, and make some more methods private.
...
llvm-svn: 57587
2008-10-15 16:56:14 +00:00
Chris Lattner
9b83197b76
move PR1941 here.
...
llvm-svn: 57586
2008-10-15 16:33:52 +00:00
Bill Wendling
2d362a77c8
Unbreak the build. Please test out the proper fix for this by compiling LLVM
...
with the build directory different from the source directory.
llvm-svn: 57583
2008-10-15 16:20:13 +00:00
Chris Lattner
6d275fd6e1
move PR1604 here.
...
llvm-svn: 57582
2008-10-15 16:06:03 +00:00
Chris Lattner
843dacc937
move PR1488 into this file.
...
llvm-svn: 57579
2008-10-15 16:02:15 +00:00
Anton Korobeynikov
185c72103b
Temporary revert r57567 and unbreak the build.
...
llvm-svn: 57578
2008-10-15 14:22:06 +00:00
Nuno Lopes
6cbd4430cc
regenerate
...
llvm-svn: 57577
2008-10-15 12:05:02 +00:00
Nuno Lopes
99f3dc6798
fix memleak in GetForwardRefForGlobal()
...
llvm-svn: 57576
2008-10-15 12:04:36 +00:00
Nuno Lopes
6f6e4e94be
regenerate
...
llvm-svn: 57575
2008-10-15 11:20:21 +00:00
Nuno Lopes
a4a546cb40
fix memleak in getTypeVal()
...
llvm-svn: 57574
2008-10-15 11:19:34 +00:00
Nuno Lopes
bb683f953e
regenerate
...
llvm-svn: 57573
2008-10-15 11:11:12 +00:00
Nuno Lopes
48e9028000
fix memleak in ResolveTypeTo()
...
llvm-svn: 57572
2008-10-15 11:10:21 +00:00
Gabor Greif
e4544f7f91
catch one more typo, canonicalize LLVMdev
...
llvm-svn: 57571
2008-10-15 10:47:24 +00:00
Gabor Greif
3b33cb1667
fix some validation errors, improve formatting, squash a strange plural
...
llvm-svn: 57570
2008-10-15 10:29:51 +00:00
Gabor Greif
57bb5aec25
remove legacy interfaces
...
llvm-svn: 57569
2008-10-15 09:52:56 +00:00
Mikhail Glushenkov
fe292356a2
llvmc2: Documentation update. Describe recent work on plugins.
...
llvm-svn: 57568
2008-10-15 09:29:13 +00:00
Mikhail Glushenkov
98757b24ec
llvmc2: Some Makefile fixes and renames.
...
llvm-svn: 57567
2008-10-15 09:28:50 +00:00
Mikhail Glushenkov
13095977c5
Use (a slightly modified) llvm.css for llvmc2 docs.
...
llvm-svn: 57566
2008-10-15 09:27:44 +00:00
Dan Gohman
29ad439782
Now that predicates can be composed, simplify several of
...
the predicates by extending simple predicates to create
more complex predicates instead of duplicating the logic
for the simple predicates.
This doesn't reduce much redundancy in DAGISelEmitter.cpp's
generated source yet; that will require improvements to
DAGISelEmitter.cpp's instruction sorting, to make it more
effectively group nodes with similar predicates together.
llvm-svn: 57565
2008-10-15 06:50:19 +00:00
Mon P Wang
1f71a69cb9
Removed pinsrd and pinsrq intrinsics because the code generator does not support
...
them since they map to insert element
llvm-svn: 57564
2008-10-15 06:27:16 +00:00
Dan Gohman
6e979020cd
Add support for having multiple predicates on a TreePatternNode.
...
This will allow predicates to be composed, which will allow the
predicate definitions to become less redundant, and eventually
will allow DAGISelEmitter.cpp to emit less redundant code.
llvm-svn: 57562
2008-10-15 06:17:21 +00:00
Chris Lattner
3f399451cd
regenerate
...
llvm-svn: 57561
2008-10-15 06:16:57 +00:00
Chris Lattner
25f74dc574
Fix the .ll grammar rules to allow any type before an 'i32', not just an
...
integer type. Invalid things like 'float 42' are now rejected by the
semantic analysis in the productions not the parser. This fixes PR2733.
llvm-svn: 57560
2008-10-15 06:16:45 +00:00
Chris Lattner
9535c94015
regenerate
...
llvm-svn: 57559
2008-10-15 06:03:48 +00:00
Chris Lattner
d253878724
Eliminate the "IntType ::= INTTYPE" production, just use
...
INTTYPE everywhere.
llvm-svn: 57558
2008-10-15 06:03:37 +00:00
Chris Lattner
117792afec
add a note
...
llvm-svn: 57557
2008-10-15 05:53:25 +00:00
Chris Lattner
ddb17ce4be
add support for folding immediates into stores when they
...
are due to argument passing in calls. This is significant because
it hits all immediate arguments to calls on x86-32.
llvm-svn: 57556
2008-10-15 05:38:32 +00:00
Chris Lattner
3ba293564a
fold immediates into stores in simple cases, this produces diffs like
...
this:
- movl $0, %eax
- movl %eax, _yy_n_chars
+ movl $0, _yy_n_chars
llvm-svn: 57555
2008-10-15 05:30:52 +00:00
Chris Lattner
e388725aef
fold compare of null pointer into compare with 0.
...
llvm-svn: 57553
2008-10-15 05:18:04 +00:00
Chris Lattner
a0f9d4972f
Some minor cleanups:
...
1. Compute action in X86SelectSelect based on MVT instead of type.
2. Use TLI.getValueType(..) instead of MVT::getVT(..) because the former
handles pointers and the later doesn't.
3. Don't pass TLI into isTypeLegal, since it already has access to it as
an ivar.
#2 gives fast isel some minor new functionality: handling load/stores of
pointers.
llvm-svn: 57552
2008-10-15 05:07:36 +00:00
Chris Lattner
74e012839d
Use switch on VT instead of Type* comparisons.
...
llvm-svn: 57551
2008-10-15 04:32:45 +00:00
Chris Lattner
dc1c380f23
Use X86FastEmitCompare for FCMP_OEQ and FCMP_UNE: it doesn't
...
change the generated code, but makes the code simpler.
llvm-svn: 57550
2008-10-15 04:29:23 +00:00
Chris Lattner
d46b9510b6
refactor compare emission out into a new X86FastEmitCompare method,
...
which makes it easy to share the compare/imm folding logic with 'setcc'.
This shaves a bunch of instructions off the common select case, which
happens a lot in llvm-gcc.
llvm-svn: 57549
2008-10-15 04:26:38 +00:00
Chris Lattner
88f4754f8f
Fold immediates into compares when possible, producing "cmp $4, %eax" instead of
...
loading 4 into a register and then doing the compare.
llvm-svn: 57548
2008-10-15 04:13:29 +00:00
Chris Lattner
47bef25c01
more minor refactoring of X86SelectBranch, no functionality change.
...
llvm-svn: 57547
2008-10-15 04:02:26 +00:00
Chris Lattner
0ce717ac6b
factor buildmi calls in X86SelectBranch
...
llvm-svn: 57546
2008-10-15 03:58:05 +00:00
Chris Lattner
f32ce221e4
factor some more BuildMI's in X86SelectCmp
...
llvm-svn: 57545
2008-10-15 03:52:54 +00:00
Chris Lattner
a3596db462
factor some BuildMI calls, no functionality change.
...
llvm-svn: 57544
2008-10-15 03:47:17 +00:00
Dan Gohman
4459c4250d
Adjust whitespace in debug messages to be more consistent
...
with other debug messages.
llvm-svn: 57543
2008-10-15 02:57:38 +00:00
Evan Cheng
3b0f5e4d61
- Add target lowering hooks that specify which setcc conditions are illegal,
...
i.e. conditions that cannot be checked with a single instruction. For example,
SETONE and SETUEQ on x86.
- Teach legalizer to implement *illegal* setcc as a and / or of a number of
legal setcc nodes. For now, only implement FP conditions. e.g. SETONE is
implemented as SETO & SETNE, SETUEQ is SETUO | SETEQ.
- Move x86 target over.
llvm-svn: 57542
2008-10-15 02:05:31 +00:00
Dan Gohman
e7ced74558
FastISel support for exception-handling constructs.
...
- Move the EH landing-pad code and adjust it so that it works
with FastISel as well as with SDISel.
- Add FastISel support for @llvm.eh.exception and
@llvm.eh.selector.
llvm-svn: 57539
2008-10-14 23:54:11 +00:00
Daniel Dunbar
0f8155ae4e
Prevent assert when using '"' in names (via hexadecimal).
...
Update LangRef to mention \xx quoting in names.
llvm-svn: 57538
2008-10-14 23:51:43 +00:00
Daniel Dunbar
389529a7df
Change getLLVMName to use raw_ostream & PrintLLVMName.
...
- Avoids duplicated quotification code.
- Remove QuoteNameIfNeeded.
- No functionality change.
llvm-svn: 57537
2008-10-14 23:28:09 +00:00
Daniel Dunbar
6cba0ebe6b
Add llvm::hexdigit to StringExtras (number -> hexadecimal char)
...
llvm-svn: 57536
2008-10-14 23:26:20 +00:00
Daniel Dunbar
c11b40f6e1
Add some ReleaseNotes on clang codegen.
...
llvm-svn: 57535
2008-10-14 23:25:09 +00:00
Daniel Dunbar
22ba9eb9f3
Remove Stacker.html from Xcode project.
...
llvm-svn: 57534
2008-10-14 23:23:59 +00:00
Dale Johannesen
28106756af
Accept -march=i586, because gcc does (a synonym
...
for pentium). Fixes
gcc.target/i386/20000720-1.c
gcc.target/i386/pr26826.c
llvm-svn: 57528
2008-10-14 22:06:33 +00:00
Evan Cheng
07d53b1d33
Rename LoadX to LoadExt.
...
llvm-svn: 57526
2008-10-14 21:26:46 +00:00
Jim Grosbach
b7c01f5f48
Update ARM Insn encoding to get endian-ness to match the documentation (31-0 left to right)
...
llvm-svn: 57524
2008-10-14 20:36:24 +00:00
Devang Patel
81537206e1
Remove dead code.
...
llvm-svn: 57522
2008-10-14 20:30:54 +00:00
Dan Gohman
9c4b7d5c4f
Fix command-line option printing to print two spaces where needed,
...
instead of requiring all "short description" strings to begin with
two spaces. This makes these strings less mysterious, and it fixes
some cases where short description strings mistakenly did not
begin with two spaces.
llvm-svn: 57521
2008-10-14 20:25:08 +00:00
Devang Patel
dbf83835fc
Document attributes changes.
...
llvm-svn: 57518
2008-10-14 20:03:43 +00:00
Nicolas Geoffray
e5ec932baf
Add VMKit notes.
...
llvm-svn: 57517
2008-10-14 19:23:04 +00:00
Evan Cheng
d885f6e139
Combine (fcmp cc0 x, y) | (fcmp cc1 x, y) into a single fcmp when possible.
...
llvm-svn: 57515
2008-10-14 18:44:08 +00:00
Evan Cheng
ce70752b11
- Somehow I forgot about one / une.
...
- Renumber fcmp predicates to match their icmp counterparts.
- Try swapping operands to expose more optimization opportunities.
llvm-svn: 57513
2008-10-14 18:13:38 +00:00
Evan Cheng
c36231b95e
Fix indentation.
...
llvm-svn: 57508
2008-10-14 17:15:39 +00:00
Evan Cheng
67786cce66
Optimize anding of two fcmp into a single fcmp if the operands are the same. e.g. uno && ueq -> ueq
...
ord && olt -> olt
ord && ueq -> oeq
llvm-svn: 57507
2008-10-14 17:15:11 +00:00
Dan Gohman
0ccb5b4435
Mention a few methods in ConstantSDNode that were renamed.
...
llvm-svn: 57505
2008-10-14 17:06:44 +00:00
Dan Gohman
2ed2753007
HTML syntax fixes.
...
llvm-svn: 57503
2008-10-14 17:00:38 +00:00
Dan Gohman
ef9462f67c
Fix missing end tags and invalid HTML entity syntax.
...
llvm-svn: 57500
2008-10-14 16:51:45 +00:00
Dan Gohman
93bf60d4cb
Add a missing close-tag.
...
llvm-svn: 57497
2008-10-14 16:32:04 +00:00
Dan Gohman
ad888911c0
Fix a few close tags.
...
llvm-svn: 57496
2008-10-14 16:23:02 +00:00
Dan Gohman
f4a169f201
Fix a typo.
...
llvm-svn: 57495
2008-10-14 16:13:59 +00:00
Dan Gohman
765edbc4e4
Add a brief mention of the new free-list management code.
...
llvm-svn: 57490
2008-10-14 15:14:55 +00:00
Gabor Greif
20564a05b9
minor corrections, improved formatting
...
llvm-svn: 57486
2008-10-14 11:31:14 +00:00
Gabor Greif
355f81cd16
typo and formatting tweaks
...
llvm-svn: 57485
2008-10-14 11:00:32 +00:00
Nuno Lopes
a67f06b9c7
little optimization: reuse getPointerToGlobalIfAvailable(CGV) value in emitGlobals()
...
llvm-svn: 57484
2008-10-14 10:04:52 +00:00
Duncan Sands
6e9c3cbe30
Mention the different constant folders that IRBuilder
...
can use.
llvm-svn: 57483
2008-10-14 07:06:37 +00:00
Chris Lattner
acc2eb484b
new testcase for PR2797
...
llvm-svn: 57481
2008-10-14 06:56:04 +00:00
Chris Lattner
6f21daaec1
add some upgrading notes from Pekka.
...
llvm-svn: 57480
2008-10-14 06:37:11 +00:00
Chris Lattner
0597229d3e
add LSR and frameaddress info.
...
llvm-svn: 57478
2008-10-14 06:02:29 +00:00
Ted Kremenek
3db01846db
Add static analyzer notes.
...
llvm-svn: 57475
2008-10-14 05:14:21 +00:00
Chris Lattner
bcffa5af89
more minor updates
...
llvm-svn: 57472
2008-10-14 00:52:49 +00:00
Chris Lattner
934e2d4939
more changes.
...
llvm-svn: 57470
2008-10-13 22:06:31 +00:00
Chris Lattner
25879d7d82
optimizer and codegen
...
llvm-svn: 57468
2008-10-13 21:50:36 +00:00
Chris Lattner
0327f0bc91
more updates.
...
llvm-svn: 57466
2008-10-13 20:59:32 +00:00
Dan Gohman
56b6885104
When doing the very-late shift-and address-mode optimization,
...
create a new DAG node to represent the new shift to keep the
DAG consistent, even though it'll almost always be folded into
the address.
If a user of the resulting address has multiple uses, the
nodes may get revisited by a later MatchAddress call, in which
case DAG inconsistencies do matter.
This fixes PR2849.
llvm-svn: 57465
2008-10-13 20:52:04 +00:00