Bug ID: 36493
           Summary: clang windows is emitting column information
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: DebugInfo

In theory, CodeView supports column information.  However, most windows
debuggers don't recognize it and -- worse -- behave incorrectly in the presence
of column information.  If you compile this program with clang on Windows:

  int f(int, int);
# 1 "F:\\git\\fastbuild\\Code\\Tools\\FBuild\\FBuildApp\\Main.cpp"
int g;
int i() {
  # 83
  return f(g, g);

it will generate LLVM assembly that looks like this:

        .cv_loc 0 1 83 15               #
        movl    "?g@@3HA", %eax
        .cv_loc 0 1 83 12               #
        movl    "?g@@3HA", %ecx
        .cv_loc 0 1 83 10               #
        movl    %ecx, (%esp)

What this is trying to say is that there are 3 different addresses for line 83,
corresponding to columns 10, 12, and 15 respectively.  But the debugger simply
interprets this as "there are 3 addresses for line 83", and as a result you
have to hit the step button 3 times to get to the next statement.

This seems like a regression, as I don't recall us emitting this before.  At
the very least, the debugger was working on step over before as far as I

We will need to stop emitting cv_loc directives at column granularity.  Note
that -dwarf-column-info was not passed on the command line here.  The arguments
used were:


You are receiving this mail because:
You are on the CC list for the bug.
llvm-bugs mailing list

Reply via email to