Teach the SDag type legalizer how to split up debug info for integer values that are split into a hi and lo part.
This is yet another a split-off from http://reviews.llvm.org/D2680
[I messed up the subsribers list previously. Reposting.]
Differential D4832
Debug info: Teach the SDag type legalizer how to split up debug info for integer values that are split into a hi and lo part.
aprantl on Aug 8 2014, 2:01 PM. Authored by
Details
Teach the SDag type legalizer how to split up debug info for integer values that are split into a hi and lo part. This is yet another a split-off from http://reviews.llvm.org/D2680 [I messed up the subsribers list previously. Reposting.]
Diff Detail Event Timeline
Comment Actions Thanks for the feedback, this is a all-around simplified revision of the previous patch! Particularly, I
Comment Actions As of now, for targets that do multiple-levels of splitting to legalise variables this patch isn't functional. [e.g. enable debug on MSP430 (patch available if you want it) and try something like] long lnot (long x) { return ~x; } c.f. long long qnot (long long x) { return ~x; } for the first case, the variable is correctly split into pieces. for the second it is not. PAIRA (p0, p1) / VAR => PAIR \ PAIRB (p2, p3) when p0,p1 are visited, the debug information is not present on the PAIRA - since that is only filled in when it is visited (subsequently, as we move from leaves leftwards). Function arguments are not handled at all by this process (they are split elsewhere, for the present I am assuming that this is intended to be handled by a separate patch?)
|
Not sure about your preference, but I usually avoid the temporary file and just pipe from one to the next:
; RUN: %llc_dwarf -filetype=obj < %s | FileCheck %s
Note also the use of %llc_dwarf (I keep forgetting why we need that, and why it's not done more consistently - but something to do with Windows support... Takumi knows more about this) and < %s, so that the output doesn't risk containing the filename of the input (which might vary depending on test configuration/directory hierarchy, and thus fail on some machines and pass on others).