[llvm-commits] [llvm] r169218 - in /llvm/trunk: include/llvm/ lib/CodeGen/AsmPrinter/ lib/VMCore/ test/CodeGen/ARM/ test/CodeGen/Thumb/ test/CodeGen/X86/ test/DebugInfo/ test/DebugInfo/X86/ test/JitListener/

Robinson, Paul Paul.Robinson at am.sony.com
Wed Dec 5 13:29:17 PST 2012


David Blaikie wrote:
>On Wed, Dec 5, 2012 at 11:29 AM, Eric Christopher <echristo at gmail.com> wrote:
>> On Wed, Dec 5, 2012 at 11:25 AM, Bill Wendling <isanbard at gmail.com> wrote:
>>> Okay. The fix is to emit the lower bound in all cases. I don't think this
>>> will be a problem for the debugger. It just adds extra information that
>>> it'll probably ignore in C/C++. :)
>>
>>
>> No, it's not. The correct is to omit it when the lower bound is the same as
>> the default lower bound which I just gave in this thread :)
>
> (I'm not sure I'm helping here, but I'm confused as to the degree of
> talking-past that's gone on with this issue... hopefully I'm doing
> more good than harm)

Even if the only good is to improve your understanding, that's more
good than harm and a worthwhile thing.

> Frontends (Clang, DragonEgg, etc) know which language they're emitting
> debug info for & what the default is. They emit lower bounds whenever
> the bound is not the language-specific default.
> Backend (LLVM) unconditionally emits whatever the frontend gave it.
>
> & thus we get the minimum required debug info: values when they're not
> the default, relying on the default when it matches.
>
> Unless I'm misunderstanding something,
> - David

Frontends clearly know the default for their own language.  However,
the debug-info metadata passed to the backend doesn't allow the frontend
to omit the lower bound; after Bill's recent hacking, a subrange's bounds
are passed as a (lowerbound, count) duple.

The backend then wants to emit DWARF as compactly as it reasonably can,
which in this case means omitting the explicit lower bound if that bound
matches the language-specific default specified by the DWARF standard.

The bug I pointed out is that LLVM was omitting the lower bound if that
bound was zero, which matches the language-specific default for some
languages (e.g. C/C++) but not others (e.g. FORTRAN, Ada).  Bill
has now been assigned to fix that (yay!).
--paulr




More information about the llvm-commits mailing list