[LLVMbugs] [Bug 14966] New: A debug info issue when passing a struct by value

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Jan 16 09:59:57 PST 2013


http://llvm.org/bugs/show_bug.cgi?id=14966

             Bug #: 14966
           Summary: A debug info issue when passing a struct by value
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: gribozavr at gmail.com
                CC: dblaikie at gmail.com, echristo at gmail.com,
                    llvmbugs at cs.uiuc.edu
    Classification: Unclassified


There's an issue with debug information when passing a particular struct by
value.

$ head -n 100 z.cc zz.cc
==> z.cc <==
enum A {A_1};
typedef struct { enum A a; int b; const void *c[3]; } S;

const void *f2(S s);

__attribute__((noinline)) const void *f1(S s) {
  return f2(s);
}

int main() {
  S s = { A_1, 1, {(const void*)10, (const void*)20, (const void*)30} };
  f1(s);
}

==> zz.cc <==
enum A {A_1};
typedef struct { enum A a; int b; const void *c[3]; } S;

const void *f2(S s) {
  return s.c[2];
}

$ gdb ./a.out
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/yyy/a.out...done.
(gdb) b main
Breakpoint 1 at 0x4005f4: file z.cc, line 11.
(gdb) r
Starting program: /tmp/yyy/a.out

Breakpoint 1, main () at z.cc:11
11        S s = { A_1, 1, {(const void*)10, (const void*)20, (const void*)30}
};
(gdb) n
12        f1(s);
(gdb) s
f1 (s=...) at z.cc:7
7         return f2(s);
(gdb) p s
$1 = {a = 4294959648, b = 32767, c = {0x7ffff7639320, 0x7ffff7deb310, 0x0}}  //
<--- what?
(gdb) s
f2 (s=...) at zz.cc:4
4       const void *f2(S s) {
(gdb) n
5         return s.c[2];
(gdb) p s
$2 = {a = A_1, b = 1, c = {0xa, 0x14, 0x1e}}

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list