[LLVMbugs] [Bug 9801] New: clang zero-initializing what it should be value-initializing

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Apr 27 14:22:35 PDT 2011


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

           Summary: clang zero-initializing what it should be
                    value-initializing
           Product: clang
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: nlewycky at google.com
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


Consider this simple testcase:

  extern "C" { int printf(const char *format, ...); };

  struct Test {
    Test() : i(10) {}
    Test(int i) : i(i) {}
    int i;
  private:
    int j;
  };

  int main() {
    Test partial[3] = { 1 };
    printf("%d %d %d\n", partial[0].i, partial[1].i, partial[2].i);

    Test empty[3] = {};
    printf("%d %d %d\n", empty[0].i, empty[1].i, empty[2].i);
  }

This is a regression; as of r129729 it worked. The program should print "1 10
10" "10 10 10". It currently prints "1 10 10" "0 0 0".

If you shrink the array down to 2 members, the bug goes away. If you remove
private members, the bug goes away.

-- 
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