Commit Graph

161 Commits

Author SHA1 Message Date
Bill Wendling 95f6ebcb37 Rename "HasCalls" in MachineFrameInfo to "AdjustsStack" to better describe what
the variable actually tracks.

N.B., several back-ends are using "HasCalls" as being synonymous for something
that adjusts the stack. This isn't 100% correct and should be looked into.

llvm-svn: 103802
2010-05-14 21:14:32 +00:00
Chris Lattner 9e06e53fc6 remove some default arguments to EmitAlignment.
llvm-svn: 102482
2010-04-28 01:05:45 +00:00
Dan Gohman bcaf681cde Add const qualifiers to CodeGen's use of LLVM IR constructs.
llvm-svn: 101334
2010-04-15 01:51:59 +00:00
Torok Edwin f8dba24a9b Workaround the breakage in r100616 by guarding all timers with
TimePassesIsEnabled. This should allow make check to pass.

llvm-svn: 100618
2010-04-07 10:44:46 +00:00
Bill Wendling fcc14141c7 Use the "NamedGroupTimer" class to categorize DWARF emission better.
llvm-svn: 100616
2010-04-07 09:28:04 +00:00
Chris Lattner da790ea006 prune #includes, MMI can never be null
llvm-svn: 100408
2010-04-05 05:28:23 +00:00
Chris Lattner fd79502e08 make DwarfException not inherit from DwarfPrinter.
llvm-svn: 100374
2010-04-05 00:26:50 +00:00
Chris Lattner aabc6041de Move EmitFrameMoves into AsmPrinter.
llvm-svn: 100371
2010-04-04 23:41:46 +00:00
Chris Lattner c7cc815522 eliminate the "isEH" argument to EmitSectionOffset.
llvm-svn: 100355
2010-04-04 21:31:54 +00:00
Chris Lattner e619c0d3e9 move some more stuff to asmprinter.
llvm-svn: 100351
2010-04-04 20:20:50 +00:00
Chris Lattner 07c1b94faa simplify some code.
llvm-svn: 100350
2010-04-04 20:10:41 +00:00
Chris Lattner b75af3c5a9 move EmitEncodingByte to AsmPrinter.
llvm-svn: 100349
2010-04-04 20:04:21 +00:00
Chris Lattner f1429f1fe3 inline EmitDifference away.
llvm-svn: 100347
2010-04-04 19:58:12 +00:00
Chris Lattner a179b52361 move gettemplabel and getdwlabel to AsmPrinter and rename
them for consistency.

llvm-svn: 100345
2010-04-04 19:25:43 +00:00
Chris Lattner 9efd118938 move uleb/sleb printing into AsmPrinter from DwarfPrinter.
llvm-svn: 100344
2010-04-04 19:09:29 +00:00
Chris Lattner 21dc46e256 remove TargetMachine.h #include, also, TRI isn't used frequently
enough to warrant caching in AsmPrinter, so remove it.

llvm-svn: 100336
2010-04-04 18:06:11 +00:00
Chris Lattner 1198002c81 remove the raw_ostream from various dwarf printing things.
The only thing left is LEB printing, which uses EmitRawText
for now.

llvm-svn: 100325
2010-04-04 07:48:20 +00:00
Chris Lattner 17d38594fe reduce indentation
llvm-svn: 99999
2010-03-31 06:09:04 +00:00
Chris Lattner 6efa201f7f use RAII for ExceptionTimer too
llvm-svn: 99833
2010-03-29 20:39:38 +00:00
Chris Lattner 6e52e9db31 get MMI out of the label uniquing business, just go to MCContext
to get unique assembler temporary labels.

llvm-svn: 98489
2010-03-14 08:36:50 +00:00
Chris Lattner ff1fdd6787 remove now-dead code, all labels use MCSymbols.
llvm-svn: 98484
2010-03-14 08:17:53 +00:00
Chris Lattner 04857fab70 fix a bug I introduced in r98459, causing some NNT failures.
llvm-svn: 98470
2010-03-14 06:50:56 +00:00
Chris Lattner ee2fbbc978 change the LabelSDNode to be EHLabelSDNode and make it hold
an MCSymbol.  Make the EH_LABEL MachineInstr hold its label
with an MCSymbol instead of ID.  Fix a bug in MMI.cpp which
would return labels named "Label4" instead of "label4".

llvm-svn: 98463
2010-03-14 02:33:54 +00:00
Chris Lattner 34adc8d225 change EH related stuff (other than EH_LABEL) to use MCSymbol
instead of label ID's.  This cleans up and regularizes a bunch 
of code and makes way for future progress.

Unfortunately, this pointed out to me that JITDwarfEmitter.cpp
is largely copy and paste from DwarfException/MachineModuleInfo
and other places.  This is very sad and disturbing. :(

One major change here is that TidyLandingPads moved from being
called in DwarfException::BeginFunction to being called in
DwarfException::EndFunction.  There should not be any 
functionality change from doing this, but I'm not an EH expert.

llvm-svn: 98459
2010-03-14 01:41:15 +00:00
Chris Lattner 41e275dc8e simplify EmitFrameMoves to take BaseLabel in as a symbol
instead of as a stem+idx pair, simplify the "is a new 
location" check to use symbol comparison.

llvm-svn: 98432
2010-03-13 08:05:25 +00:00
Chris Lattner 8811e12314 factor some labels, simplify some code.
llvm-svn: 98429
2010-03-13 07:40:56 +00:00
Chris Lattner 45ec3f8944 remove dead code.
llvm-svn: 98365
2010-03-12 18:49:32 +00:00
Chris Lattner 71c30c164f move three lowering hooks from MAI to TLOF and make one of them
semantic instead of syntactic.  This completes MCization of
darwin/x86[-64]!

llvm-svn: 98145
2010-03-10 07:20:42 +00:00
Chris Lattner eec9bf1198 mcize the rest of EH emission, only one more directive missing
for darwin/x86 to be completely mcized.

llvm-svn: 98130
2010-03-10 02:48:06 +00:00
Chris Lattner ac2361a9b0 set the temporary bit on MCSymbols correctly.
llvm-svn: 98124
2010-03-10 02:25:11 +00:00
Chris Lattner 7e998b7363 add some fixme's for MCizing. EH still has a few things that
need to be MCized, but the last debug info thing are LEB and
cygwin specific (which the MC api doesn't support yet) and
one specific form of EmitReference which I'll tackle next.

llvm-svn: 98116
2010-03-10 01:04:13 +00:00
Chris Lattner caea64b098 mcize uses of PrintRelDirective and eliminate it.
llvm-svn: 98107
2010-03-10 00:09:21 +00:00
Chris Lattner 566cae9086 eliminate EOL, adding all comments with the OutStreamer.AddComment
method.  With this, comments should end up on the same lines as the .byte
directives (for example) and we now get no output with:

$ llc CodeGen/X86/2009-02-12-DebugInfoVLA.ll -o - -filetype=null -asm-verbose

woot.

llvm-svn: 98105
2010-03-09 23:52:58 +00:00
Chris Lattner 4d728127fb now that the debug and eh emitters use a common .set counter,
we can eliminate "flavor".

llvm-svn: 98011
2010-03-09 00:00:15 +00:00
Chris Lattner 27a9732450 simplify EmitSectionOffset to always use .set if it is
available, the only thing this affects is that we produce
.set in one case we didn't before, which shouldn't harm
anything.  Make EmitSectionOffset call EmitDifference
instead of duplicating it.

llvm-svn: 98005
2010-03-08 23:23:25 +00:00
Chris Lattner 449a9ff14b Remove a version of EmitDifference.
llvm-svn: 98002
2010-03-08 23:02:59 +00:00
Chris Lattner 3c081995f6 remove another form of EmitReference.
llvm-svn: 97998
2010-03-08 22:50:36 +00:00
Chris Lattner 722714dde2 mc'ize EmitLabel.
llvm-svn: 97996
2010-03-08 22:44:40 +00:00
Chris Lattner bc9210cb70 elimiante the DWLabel class, using MCSymbol instead. Start
switching some stuff over to passing around MCSymbol* instead
of stem+ID.

llvm-svn: 97993
2010-03-08 22:23:36 +00:00
Bill Wendling c3a9376215 A much cleaner (and less code!) way of inserting the correct amount of padding
for alignment into the LSDA. If the TType base offset is emitted, then put the
padding there. Otherwise, put it in the call site table length. There will be no
conflict between the two sites when placing the padding in one place.

llvm-svn: 97277
2010-02-26 22:17:52 +00:00
Bill Wendling fea6c4efc7 Comment typo.
llvm-svn: 97269
2010-02-26 21:31:01 +00:00
Bill Wendling 098c91e95b Fix comments.
llvm-svn: 97200
2010-02-26 01:12:52 +00:00
Bill Wendling 6394521a2b Add another (and hopefully the last) exception case, where once we recalculate
the alignment requirement, if it no longer makes the TType base offset overflow
into extra bytes, then we need to pad to those bytes ourselves.

llvm-svn: 97196
2010-02-26 00:43:54 +00:00
Bill Wendling 6f14f6a962 And should use the correct variable.
llvm-svn: 97193
2010-02-26 00:24:25 +00:00
Bill Wendling 47c3269236 Got assertion check backwards.
llvm-svn: 97192
2010-02-26 00:22:42 +00:00
Bill Wendling 24c74f1d9c Catch a corner case where adding the padding to the "TType base offset" field
will eliminate the need for padding in the "Call site table length". E.g., if
we have this:

    GCC_except_table1:
    Lexception1:
        .byte   0xff  ## @LPStart Encoding = omit
        .byte   0x9b  ## @TType Encoding = indirect pcrel sdata4
        .byte   0x7f  ## @TType base offset
        .byte   0x03  ## Call site Encoding = udata4
        .byte   0x89  ## Call site table length

with padding of 1. We want to emit the padding like this:
 
    GCC_except_table1:
    Lexception1:
        .byte   0xff  ## @LPStart Encoding = omit
        .byte   0x9b  ## @TType Encoding = indirect pcrel sdata4
        .byte   0xff  ## @TType base offset
        .space  1,0   ## Padding
        .byte   0x03  ## Call site Encoding = udata4
        .byte   0x89  ## Call site table length

and not with padding on the "Call site table length" entry.

llvm-svn: 97183
2010-02-25 23:52:44 +00:00
Bill Wendling 60aa4dfb53 Make comment more meaningful.
llvm-svn: 97169
2010-02-25 21:19:47 +00:00
Bill Wendling 88fdcd323d LLVM puts padding bytes in the __gcc_except_tab section after the
GCC_except_table label but before the Lexception, which the FDE references.
This causes problems as the FDE does not point to the start of an LSDA chunk.

Use an unnormalized uleb128 for the call-site table length that includes the
padding.

llvm-svn: 97078
2010-02-24 23:34:35 +00:00
Anton Korobeynikov 5d438e4ad2 Use ttype encoding consistently
llvm-svn: 96290
2010-02-15 22:38:25 +00:00
Anton Korobeynikov ec2ba08d16 It turns out that we emitted completely wrong common EH frame since the early beginning! The "z" CIE augmentation mark indicates that there is an extra word containing the size of augmentation section. However, even for frames w/o any augmentation data we emitted size uleb! (this is the case of "unwinding through C code"). Thus frame moves information was emitterd completely wrong.
llvm-svn: 96287
2010-02-15 22:36:41 +00:00