Dan Gohman
592d4b6ee0
Convert ScalarEvolution to use BumpPtrAllocator and FoldingSet, instead
...
of a team of individual allocations and a team of std::maps.
llvm-svn: 74393
2009-06-27 21:21:31 +00:00
Dan Gohman
36f9ee7670
Change SCEVExpander to use an IRBuilder to emit instructions.
...
llvm-svn: 74391
2009-06-27 21:18:18 +00:00
Anton Korobeynikov
7231e149ef
Simplify a bit
...
llvm-svn: 74385
2009-06-27 12:59:03 +00:00
Anton Korobeynikov
1db77899c1
ARM refactoring. Step 2: split RegisterInfo
...
llvm-svn: 74384
2009-06-27 12:16:40 +00:00
Douglas Gregor
6ee152cc94
Add ThumbInstrInfo.cpp to the CMake makefiles
...
llvm-svn: 74382
2009-06-27 07:44:59 +00:00
Chris Lattner
4d88bfc0d6
remove a bunch of fixmes (old checking code) and commonize all the
...
target-specific operand printing functionality. Yay.
llvm-svn: 74379
2009-06-27 05:46:24 +00:00
Chris Lattner
9571347ce0
pull @GOT, @GOTOFF, @GOTPCREL handling into isel from the asmprinter.
...
llvm-svn: 74378
2009-06-27 05:39:56 +00:00
Chris Lattner
2dcba29672
simplify some code and eliminate the symbolicAddressesAreRIPRel() predicate.
...
llvm-svn: 74377
2009-06-27 05:24:12 +00:00
Dan Gohman
4acfd5098d
When a value is used multiple times within a single PHI, instructions
...
inserted to replace that value must dominate all of of the basic
blocks associated with the uses of the value in the PHI, not just
one of them.
llvm-svn: 74376
2009-06-27 05:16:57 +00:00
Chris Lattner
bab7dd08d2
fix clang/test/CodeGenObjC/try.m, a basereg doesn't mean no global anymore.
...
llvm-svn: 74375
2009-06-27 04:50:14 +00:00
Chris Lattner
82058e92a0
fix a bunch of failures in the X86-64 JIT by tolerating RIP as
...
a base register. We just ignore it for now.
llvm-svn: 74374
2009-06-27 04:46:33 +00:00
Chris Lattner
e711b85035
factor some logic out into a helper function, allow remat of loads from constant
...
globals. This implements remat-constant.ll even without aggressive-remat.
llvm-svn: 74373
2009-06-27 04:38:55 +00:00
Chris Lattner
19eb0dad26
Reimplement rip-relative addressing in the X86-64 backend. The new
...
implementation primarily differs from the former in that the asmprinter
doesn't make a zillion decisions about whether or not something will be
RIP relative or not. Instead, those decisions are made by isel lowering
and propagated through to the asm printer. To achieve this, we:
1. Represent RIP relative addresses by setting the base of the X86 addr
mode to X86::RIP.
2. When ISel Lowering decides that it is safe to use RIP, it lowers to
X86ISD::WrapperRIP. When it is unsafe to use RIP, it lowers to
X86ISD::Wrapper as before.
3. This removes isRIPRel from X86ISelAddressMode, representing it with
a basereg of RIP instead.
4. The addressing mode matching logic in isel is greatly simplified.
5. The asmprinter is greatly simplified, notably the "NotRIPRel" predicate
passed through various printoperand routines is gone now.
6. The various symbol printing routines in asmprinter now no longer infer
when to emit (%rip), they just print the symbol.
I think this is a big improvement over the previous situation. It does have
two small caveats though: 1. I implemented a horrible "no-rip" modifier for
the inline asm "P" constraint modifier. This is a short term hack, there is
a much better, but more involved, solution. 2. I had to xfail an
-aggressive-remat testcase because it isn't handling the use of RIP in the
constant-pool reading instruction. This specific test is easy to fix without
-aggressive-remat, which I intend to do next.
llvm-svn: 74372
2009-06-27 04:16:01 +00:00
Chris Lattner
0ce83b0e95
When doing remat, don't consider uses of non-allocatable physregs. Patch
...
by Evan.
llvm-svn: 74370
2009-06-27 04:06:41 +00:00
Evan Cheng
817712377a
Renaming for consistency.
...
llvm-svn: 74368
2009-06-27 02:26:13 +00:00
Chris Lattner
2f690cb2dd
Fix PR4466 by making fastisel set operand flags correctly.
...
llvm-svn: 74366
2009-06-27 01:31:51 +00:00
Chris Lattner
ce7f3c052e
fix a typo that GCC should have caught that causes crashes with -view-*-dags
...
llvm-svn: 74364
2009-06-27 00:57:02 +00:00
David Goodwin
e1979dfbf5
Remove outdated comment.
...
llvm-svn: 74357
2009-06-26 23:39:02 +00:00
David Goodwin
90fc344e41
When possible, use "mvn ra, rb" instead of "eor ra, rb, -1" because mvn has a narrow version and eor(i) does not.
...
llvm-svn: 74355
2009-06-26 23:13:13 +00:00
Dan Gohman
4f74e815f1
Incorporate the insertion point into the key of SCEVExpander's CSE map.
...
This helps it avoid reusing an instruction that doesn't dominate all
of the users, in cases where the original instruction was inserted
before all of the users were known. This may result in redundant
expansions of sub-expressions that depend on loop-unpredictable values
in some cases, however this isn't very common, and it primarily impacts
IndVarSimplify, so GVN can be expected to clean these up.
This eliminates the need for IndVarSimplify's FixUsesBeforeDefs,
which fixes several bugs.
llvm-svn: 74352
2009-06-26 22:53:46 +00:00
Devang Patel
4f5d296df0
Remove unused routines.
...
llvm-svn: 74351
2009-06-26 22:53:22 +00:00
David Greene
d33e8e7d83
Add feature flags for AVX and FMA and fix some SSE4A feature flag
...
initialization problems.
llvm-svn: 74350
2009-06-26 22:46:54 +00:00
Dan Gohman
9e78d55440
Fix ScalarEvolution::getAddRecExpr's code which canonicalized the
...
nesting order of nested AddRec expressions to skip the transformation
if it would introduce an AddRec with operands not loop-invariant
with respect to its loop.
llvm-svn: 74343
2009-06-26 22:36:20 +00:00
Dan Gohman
e8b1947a18
Fix SCEVAddRecExpr::isLoopInvariant to test if all of its operands
...
are loop invariant, not just the start operand.
llvm-svn: 74338
2009-06-26 22:17:21 +00:00
Evan Cheng
016ed65455
Add x86 support for 'n' inline asm modifier. This will be handled target independently as part of MC work.
...
llvm-svn: 74336
2009-06-26 22:00:19 +00:00
Chris Lattner
3a48623aef
simplify printing of MO_ExternalSymbol in a non-pcrel context.
...
llvm-svn: 74334
2009-06-26 21:47:27 +00:00
Owen Anderson
7fdfd4be66
Privatize some data.
...
llvm-svn: 74332
2009-06-26 21:45:04 +00:00
Owen Anderson
2bcd131128
Constify this value.
...
llvm-svn: 74330
2009-06-26 21:39:56 +00:00
Anton Korobeynikov
aab56476b2
Split thumb-related stuff into separate classes.
...
Step 1: ARMInstructionInfo => {ARM,Thumb}InstructionInfo
llvm-svn: 74329
2009-06-26 21:28:53 +00:00
Chris Lattner
a8ee785cef
add %rip to the GR64 register class. Lets avoid allocating it to anything though! :)
...
llvm-svn: 74328
2009-06-26 21:25:00 +00:00
Chris Lattner
1f3d17f45d
Move all the TLS processing logic into isel, don't do it in asmprinter at all.
...
llvm-svn: 74327
2009-06-26 21:20:29 +00:00
Chris Lattner
ae824fc834
make sure to propagate operand flags in SelectTLSADDRAddr properly.
...
llvm-svn: 74326
2009-06-26 21:18:37 +00:00
Chris Lattner
ca9aefcc93
fix a really subtle bug in the cross section of aliases and TLS:
...
the SelectionDAG::getGlobalAddress function properly looks through
aliases to determine thread-localness, but then passes the GV* down
to GlobalAddressSDNode::GlobalAddressSDNode which does not. Instead
of passing down isTarget, just pass down the predetermined node
opcode. This fixes some assertions with out of tree changes I'm
working on.
llvm-svn: 74325
2009-06-26 21:14:05 +00:00
David Goodwin
921faa64cd
Thumb-2 has CLZ.
...
llvm-svn: 74322
2009-06-26 20:47:43 +00:00
David Goodwin
9da977f216
Use "adcs/sbcs" only when the carry-out is live, otherwise use "adc/sbc".
...
llvm-svn: 74321
2009-06-26 20:45:56 +00:00
Owen Anderson
0cf6b34d5d
Get rid of these cache variables, which are a holdover from the days when
...
we had multiple type planes and these lookups were expensive.
llvm-svn: 74319
2009-06-26 20:33:47 +00:00
Owen Anderson
633060240c
Make this const.
...
llvm-svn: 74317
2009-06-26 20:21:18 +00:00
Chris Lattner
a56bff5e36
minor cleanup/framework changes.
...
llvm-svn: 74316
2009-06-26 20:00:05 +00:00
Owen Anderson
333c8af1b1
Privatize some variables.
...
llvm-svn: 74315
2009-06-26 19:48:37 +00:00
Chris Lattner
0a0494b4f9
move magic for PIC constantpool references from asmprinter to isel.
...
llvm-svn: 74313
2009-06-26 19:22:52 +00:00
Chris Lattner
0fee902c2d
implement DOTGraphTraits<SelectionDAG*>::getNodeLabel in terms of
...
SDNode::print_details to eliminate a ton of near-duplicate code.
llvm-svn: 74311
2009-06-26 19:06:10 +00:00
Chris Lattner
45946d9021
use jump table operand flags in asm printer instead of "magic predicates"
...
llvm-svn: 74310
2009-06-26 18:55:01 +00:00
Owen Anderson
1069071612
Use atomic operations for accessing this global counter.
...
llvm-svn: 74294
2009-06-26 18:09:03 +00:00
David Goodwin
46eb5a7a2d
ADC used to implement adde should use "adcs" opcode instead of "adc".
...
llvm-svn: 74293
2009-06-26 18:07:25 +00:00
Owen Anderson
6448beadc8
Get rid of unnecessary global variables.
...
llvm-svn: 74291
2009-06-26 16:46:15 +00:00
David Goodwin
877790aa5f
Currently there is a pattern for the thumb-2 MOV 16-bit immediate instruction. That instruction cannot write the flags so it should use T2I instead of T2sI.
...
Also, added a pattern for the thumb-2 MOV of shifted immediate since that can encode immediates not encodable by the 16-bit immediate.
llvm-svn: 74288
2009-06-26 16:10:07 +00:00
Douglas Gregor
6d9b0e8c19
Fix linking of llvm-ld and lli with CMake, from Xerxes Rånby
...
llvm-svn: 74285
2009-06-26 15:37:00 +00:00
Owen Anderson
77f965d8b2
Fix compilation without pthreads.
...
Patch by Xerxes Ranby.
llvm-svn: 74283
2009-06-26 08:48:03 +00:00
Evan Cheng
b93625f89e
Simplify predicate CarryDefIsUsed.
...
llvm-svn: 74277
2009-06-26 06:10:18 +00:00
Chris Lattner
497d0ec530
fix a pasto.
...
llvm-svn: 74275
2009-06-26 05:56:49 +00:00
Chris Lattner
05eabf4f95
dot graph viewing is apparently not using SDNode::print_details, this is bad,
...
but in the meantime lets print targetflags on node labels.
llvm-svn: 74274
2009-06-26 05:55:43 +00:00
Chris Lattner
3aef0c897e
propagate target operand flags from dag nodes into MachineOperands.
...
llvm-svn: 74273
2009-06-26 05:52:14 +00:00
Chris Lattner
93af5249a1
propagate target operand flags through addressing mode selection.
...
llvm-svn: 74272
2009-06-26 05:51:45 +00:00
Chris Lattner
181d139bc3
fit in 80 cols
...
llvm-svn: 74270
2009-06-26 05:39:02 +00:00
Nick Lewycky
ce25b7e7e6
Escape the name of the module since it comes from the file name and may include
...
invalid characters like backslashes on Windows. Patch by James Abbatiello!
llvm-svn: 74265
2009-06-26 04:33:37 +00:00
Devang Patel
a7a5664fbb
Let's ignore MDStrings also!
...
llvm-svn: 74255
2009-06-26 02:26:12 +00:00
Daniel Dunbar
f7c439154f
Fix may-be-used-uninitialized warning.
...
llvm-svn: 74253
2009-06-26 02:03:52 +00:00
Devang Patel
84a8914a4a
Remove debug info anchors - llvm.dbg.compile_units, llvm.dbg.subprograms
...
and llvm.dbg.global_variables.
llvm-svn: 74251
2009-06-26 01:49:18 +00:00
Daniel Dunbar
0d9b275e55
Fix unused variable warnings.
...
llvm-svn: 74250
2009-06-26 01:34:35 +00:00
Owen Anderson
ba05ead9db
Fix error in the Win32 implementation pointed out by Howard Su.
...
llvm-svn: 74248
2009-06-26 00:51:20 +00:00
Chris Lattner
05eb63598b
start adding logic in isel to determine asm printer semantics, step N of M.
...
llvm-svn: 74246
2009-06-26 00:43:52 +00:00
Dan Gohman
71b1c43d91
Change this code to a form about which VC++ reportedly isn't unhappy.
...
llvm-svn: 74243
2009-06-26 00:35:12 +00:00
Dan Gohman
ba8760719f
Fix LCSSA to avoid emitting a PHI node for the unwind destination of
...
an invoke instruction, since the value isn't really live across that
edge.
llvm-svn: 74242
2009-06-26 00:31:13 +00:00
Evan Cheng
2eb1525e2a
Add a note about commuting conditional move.
...
llvm-svn: 74241
2009-06-26 00:28:48 +00:00
Dan Gohman
3983d5070b
Minor code simplification.
...
llvm-svn: 74240
2009-06-26 00:26:03 +00:00
Evan Cheng
f23c8a5c8a
These are done / no longer applicable.
...
llvm-svn: 74239
2009-06-26 00:25:27 +00:00
Evan Cheng
4f0e461e97
Mark a bunch of instructions commutable.
...
llvm-svn: 74237
2009-06-26 00:19:44 +00:00
Evan Cheng
e45355b804
tst is also commutable.
...
llvm-svn: 74236
2009-06-26 00:19:07 +00:00
Owen Anderson
4aee97b0e3
Committed the wrong version in my last commit.
...
llvm-svn: 74235
2009-06-26 00:17:05 +00:00
Owen Anderson
22fb1f445e
Privatize a static variable.
...
llvm-svn: 74234
2009-06-26 00:15:27 +00:00
Owen Anderson
40fd8971d3
Guards for the compiler driver plugin list.
...
llvm-svn: 74230
2009-06-26 00:06:28 +00:00
Evan Cheng
4ac765118d
Select ADC, SBC, and RSC instead of the ADCS, SBCS, and RSCS when the carry bit def is not used.
...
llvm-svn: 74228
2009-06-25 23:34:10 +00:00
Owen Anderson
5417ad7e3b
Support thread-local pretty stack traces.
...
llvm-svn: 74227
2009-06-25 23:31:33 +00:00
Owen Anderson
3a892a63b7
Add support for const thread locals.
...
llvm-svn: 74226
2009-06-25 23:31:18 +00:00
Owen Anderson
8d5f9675c7
Fix typo in assertion.
...
llvm-svn: 74225
2009-06-25 23:28:28 +00:00
David Goodwin
74414108e9
Use MVN for ~t2_so_imm immediates.
...
llvm-svn: 74223
2009-06-25 23:11:21 +00:00
Owen Anderson
59ffd85020
Add a configure test for pthread_getspecific, and use it when building ThreadLocal.
...
llvm-svn: 74222
2009-06-25 23:10:26 +00:00
David Goodwin
a0ed5f6847
Add Def/Use of CPSR for Thumb-1 instructions.
...
llvm-svn: 74219
2009-06-25 22:49:55 +00:00
Devang Patel
32bbebe82f
Simplify.
...
llvm-svn: 74215
2009-06-25 22:36:02 +00:00
Evan Cheng
331e7cc684
Unbreak mingw build. Patch by Viktor Kutuzov.
...
llvm-svn: 74212
2009-06-25 22:04:44 +00:00
Owen Anderson
aef431f9cb
Update cmake build files.
...
llvm-svn: 74210
2009-06-25 21:58:34 +00:00
Owen Anderson
e716e57779
Add a class for supporting platform independent thread-local storage.
...
Windows people, please double-check/patch this.
llvm-svn: 74209
2009-06-25 21:58:01 +00:00
Chris Lattner
6a77e841e8
add targetflags to jump tables and constant pool entries.
...
llvm-svn: 74204
2009-06-25 21:35:31 +00:00
Chris Lattner
f94959f1a3
allow setting target operand flags on TargetGlobalAddress nodes.
...
llvm-svn: 74203
2009-06-25 21:21:14 +00:00
Daniel Dunbar
3d3f776dc9
MC: Truncate values when printing, to keep 'as' happy.
...
llvm-svn: 74201
2009-06-25 21:03:18 +00:00
Evan Cheng
0cced3daa8
ISD::ADDE / ISD::SUBE updates the carry bit so they should isle to ADCS and SBCS / RSCS.
...
llvm-svn: 74200
2009-06-25 20:59:23 +00:00
Chris Lattner
55fdaaf6e7
start bringing targetoperand flags into isel, first up, ExternalSymbol.
...
llvm-svn: 74199
2009-06-25 18:45:50 +00:00
Mikhail Glushenkov
e665ff7b38
Make -save-temps behave like in GCC 4.5.
...
The -save-temps option now behaves like described in GCC 4.5 release notes
(you can specify output directory for temporary files with -save-temps=obj
-o $DIRNAME). I do not have GCC 4.5 installed, so if there are any
inconsistencies between llvmc and GCC in the implementation of this
feature, please let me know.
llvm-svn: 74190
2009-06-25 18:20:10 +00:00
Owen Anderson
7e0ff6ab63
Privatize this map.
...
llvm-svn: 74189
2009-06-25 18:13:04 +00:00
Owen Anderson
d1598408ce
Guard dynamic library loading.
...
I did my best at implementing this for Win32, but I don't have a way to test it.
Can someone with access to a Win32 machine test/fix this?
llvm-svn: 74188
2009-06-25 18:12:44 +00:00
Sanjiv Gupta
a68f1e8cbf
Added floating point conditional operations support via libcalls.
...
llvm-svn: 74187
2009-06-25 18:12:06 +00:00
Chris Lattner
2aaaf51beb
simplify shouldPrintPLT
...
llvm-svn: 74186
2009-06-25 17:58:52 +00:00
David Goodwin
c72bad36d7
Test commit
...
llvm-svn: 74185
2009-06-25 17:52:32 +00:00
Chris Lattner
8c562c2f76
Use target-specific machine operand flags to eliminate a gross hack
...
from the asmprinter.
llvm-svn: 74184
2009-06-25 17:38:33 +00:00
Chris Lattner
f70f8cc399
just eliminate the code entirely!
...
llvm-svn: 74183
2009-06-25 17:28:07 +00:00
Owen Anderson
76d92148a7
Provide guards for this shared structure. I'm not sure this actually needs
...
to be shared, but how/where to privatize it is not immediately clear to me.
If any SelectionDAG experts see a better solution, please share!
llvm-svn: 74180
2009-06-25 17:09:00 +00:00
Owen Anderson
7bc2987c5c
Privatize some more debug-related static data.
...
llvm-svn: 74179
2009-06-25 16:55:32 +00:00
Owen Anderson
e52105541d
Use a more correct atomic increment style. This isn't really necessary in
...
this case, but it should help avoid issues in the future.
llvm-svn: 74178
2009-06-25 16:32:45 +00:00
Bob Wilson
38779c951a
Revert 74164. We'll want to use this method later.
...
llvm-svn: 74176
2009-06-25 16:03:07 +00:00
Sanjiv Gupta
f81b920608
Identify unconditional gotos and generate a page sel instructions before them.
...
llvm-svn: 74172
2009-06-25 11:03:14 +00:00