1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-28 14:32:51 +01:00
Commit Graph

125 Commits

Author SHA1 Message Date
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