Chris Lattner
5367b4a5bd
reduce nesting by rearranging branches.
...
llvm-svn: 75110
2009-07-09 05:55:04 +00:00
Chris Lattner
f6ad5e86c4
make isel use MO_PIC_BASE_OFFSET when lowering globalvalues on darwin in pic
...
mode, instead of having asmprinter just "know" to print them.
llvm-svn: 75109
2009-07-09 05:47:33 +00:00
Chris Lattner
c58c66f250
various minor cleanups, no functionality change.
...
llvm-svn: 75108
2009-07-09 05:42:07 +00:00
Chris Lattner
f42a8c82d9
make isel decide whether to emit $stub's on darwin instead of asmprinter.
...
llvm-svn: 75107
2009-07-09 05:27:35 +00:00
Chris Lattner
e144356fba
pc-relative references are *always* to functions, never to globals. ISel
...
is incapable of lowering direct references to globals like this, zap the code.
llvm-svn: 75106
2009-07-09 05:19:23 +00:00
Chris Lattner
ec30d37e60
make cygwin use its own stubs set, instead of overloading a darwin one.
...
llvm-svn: 75105
2009-07-09 05:09:24 +00:00
Chris Lattner
06266970b0
Make isel determine where to emit PLT-relative calls instead of having
...
asmprinter do it.
llvm-svn: 75104
2009-07-09 05:02:21 +00:00
Chris Lattner
2e128cac89
isPICStyleStub() is now never true in -static mode, so simplify code.
...
llvm-svn: 75102
2009-07-09 04:43:12 +00:00
Chris Lattner
af31be8192
one more added assert.
...
llvm-svn: 75088
2009-07-09 02:43:55 +00:00
Chris Lattner
5cdf9d71f5
move handling of dllimport linkage in isel, not in asmprinter.
...
llvm-svn: 75086
2009-07-09 00:58:53 +00:00
Chris Lattner
428267bc11
one more assertion!
...
llvm-svn: 75083
2009-07-09 00:49:29 +00:00
Chris Lattner
49def58ec8
add some more assertions. Remove code to handle dllimport on darwin.
...
llvm-svn: 75082
2009-07-09 00:47:59 +00:00
Chris Lattner
904ac2e074
remove "asmcall", using print_pcrel_imm instead of printOperand.
...
llvm-svn: 75080
2009-07-09 00:39:19 +00:00
Chris Lattner
c513c000af
simplify some logic
...
llvm-svn: 75079
2009-07-09 00:32:12 +00:00
Chris Lattner
f321f1f93f
* add some assertions for sanity checking.
...
* remove some old code that was needed when we'd put ESP in the scale instead of
the base of some instructions.
* Fix a bug with the P modifier in inline asm that caused us to drop it.
llvm-svn: 75077
2009-07-09 00:27:29 +00:00
Chris Lattner
b6e82dd20c
* manually concatenate two string literals
...
* remove some dead code: darwin doesn't support dllimport linkage.
llvm-svn: 75066
2009-07-08 23:09:14 +00:00
Dale Johannesen
7a31324b42
Commit the file I actually changed as part of last
...
patch, instead of one I didn't.
llvm-svn: 74968
2009-07-07 23:28:22 +00:00
Bill Wendling
c0fb316bd3
Add an "alignment" field to the MachineFunction object. It makes more sense to
...
have the alignment be calculated up front, and have the back-ends obey whatever
alignment is decided upon.
This allows for future work that would allow for precise no-op placement and the
like.
llvm-svn: 74564
2009-06-30 22:38:32 +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
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
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
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
a56bff5e36
minor cleanup/framework changes.
...
llvm-svn: 74316
2009-06-26 20:00:05 +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
45946d9021
use jump table operand flags in asm printer instead of "magic predicates"
...
llvm-svn: 74310
2009-06-26 18:55:01 +00:00
Devang Patel
a7a5664fbb
Let's ignore MDStrings also!
...
llvm-svn: 74255
2009-06-26 02:26:12 +00:00
Chris Lattner
2aaaf51beb
simplify shouldPrintPLT
...
llvm-svn: 74186
2009-06-25 17:58:52 +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
ec41c5f7ac
fix comments to be correct.
...
llvm-svn: 74154
2009-06-25 01:15:47 +00:00
Devang Patel
d98b076409
No need to code gen MDNodes
...
llvm-svn: 74150
2009-06-25 00:47:42 +00:00
Chris Lattner
1417c35242
move some functions, add a FIXME, use PrintPICBaseSymbol to print the
...
picbase instead of inlining it.
llvm-svn: 74111
2009-06-24 19:44:36 +00:00
Chris Lattner
fda56cf68a
reimplement getPICLabelString as PrintPICBaseSymbol to eliminate std::string heap thrashing.
...
llvm-svn: 74105
2009-06-24 19:19:16 +00:00
Chris Lattner
ee30c14d3b
sink management of DwarfWriter & MachineModuleInfo into the AsmPrinter base class.
...
llvm-svn: 74101
2009-06-24 19:09:55 +00:00
Chris Lattner
d59a5b9f8b
sink dwarf finalization out of each target into AsmPrinter::doFinalization
...
llvm-svn: 74097
2009-06-24 18:54:37 +00:00
Chris Lattner
0690755320
eliminate the ExtWeakSymbols set from AsmPrinter. This eliminates
...
a bunch of code from all the targets, and eliminates nondeterministic
ordering of directives being emitted in the output.
llvm-svn: 74096
2009-06-24 18:52:01 +00:00
Chris Lattner
afabad6552
only emit one .align for all the hidden gv stubs instead of one for each.
...
llvm-svn: 74094
2009-06-24 18:24:42 +00:00
Chris Lattner
0cb01a746f
inline print*Stub and rearrange function stub printing to more closely match
...
gv and hiddengv stub printing.
llvm-svn: 74093
2009-06-24 18:24:09 +00:00
Chris Lattner
ce2854f097
remove dead code now that personality functions don't print stubs directly.
...
llvm-svn: 74092
2009-06-24 18:19:01 +00:00
Chris Lattner
7bc5373357
remove now-dead argument.
...
llvm-svn: 74091
2009-06-24 18:17:56 +00:00
Chris Lattner
3dc8c13453
simplify personality function stub printing to use the mangler and
...
decorateName like other stuff instead of special casing _. Also, stick
it into GVStubs and let the normal stub printer print the stub instead
of doing it manually.
llvm-svn: 74090
2009-06-24 18:17:00 +00:00
Chris Lattner
03ce0b9410
remove dead argument
...
llvm-svn: 74089
2009-06-24 18:00:11 +00:00
Chris Lattner
7eb17b387d
factor some code better.
...
llvm-svn: 74067
2009-06-24 05:47:59 +00:00
Chris Lattner
9bce404faa
wire up support for MCContext/MCStreamer in -experimental-asm-printer mode.
...
llvm-svn: 74066
2009-06-24 05:46:28 +00:00
Chris Lattner
06e180b758
simplify closing paren and (rip) printing.
...
llvm-svn: 73841
2009-06-21 02:22:53 +00:00
Chris Lattner
481746a193
remove #if 0 code
...
llvm-svn: 73837
2009-06-21 01:48:49 +00:00
Chris Lattner
5ef06d833d
cosmetic changes.
...
llvm-svn: 73836
2009-06-21 01:27:55 +00:00
Chris Lattner
f1510099c3
remove dead code, the main codepath never has to deal
...
with MBB's.
llvm-svn: 73830
2009-06-20 19:34:47 +00:00