[LLVMdev] llvm-gcc: missing dbg.declare/dbg.stoppoint at optimization level > O0

Devang Patel devang.patel at gmail.com
Mon Nov 16 14:16:53 PST 2009


Hi Martijn

On Fri, Nov 13, 2009 at 4:52 AM, Martijn <martijn at martijnrutten.com> wrote:
> Hello,
>
> I use llvm and llvm-gcc as a C-to-C transformation tool using a
> modified version of the c backend, and rely on llvm debug instructions
> to link back to the original source code.
>
> Does anyone know how to get detailed line number and variable debug
> information at optimization levels beyond O0?
>
> Currently, I extract this debug information by compiling with -g.
> This works fine with "llvm-gcc -g -O0 --emit-llvm", i.e. no
> optimizations, but when I enable optimizations, e.g. "llvm-gcc -g -O2
> --emit-llvm",
> most of the dbg.stoppoint and dbg.declare instructions dissapear.
>
> I tried to enable at least debug.declare instructions by removing the
> "if(optimize) return" statement in gcc/llvm-debug.cpp,
> DebugInfo::EmitDeclare(), but I still do not get any dbg.declare
> instructions.

This will enable dbg.declare, but they'll be removed by mem2reg pass
immediately.

> Is there a way to keep all debug information with optimizations
> enabled in llvm-gcc?
> If I have to disable some specific optimizations to keep the debug
> info correct that is fine.

Without mem2reg pass, you're unlikely to get much optimization done on your IR.

We're working on the required support to enable variable debug info at -O1+.
http://nondot.org/~sabre/LLVMNotes/DebugInfoVariableInfo.txt
Let us know if you'd like to contribute in this area!

-
Devang



More information about the llvm-dev mailing list