https://bugs.llvm.org/show_bug.cgi?id=39977

            Bug ID: 39977
           Summary: Constant folding incorrectly folds modifiable compound
                    literal
           Product: clang
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Keywords: miscompilation
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangb...@nondot.org
          Reporter: hst...@ca.ibm.com
                CC: blitzrak...@gmail.com, dgre...@apple.com,
                    erik.pilking...@gmail.com, llvm-bugs@lists.llvm.org,
                    richard-l...@metafoo.co.uk

In the following, Clang appears to ignore the modification of the array
element; this, in turn, leads to a call to `abort()`. The GCC-built executable
returns 0 as expected.


### SOURCE (<stdin>):
extern "C" void abort(void);
constexpr int *p0 = (int []){ 13 };
int main(void) {
  *p0 = 42;
  int x[*p0];
  if ((sizeof x)/sizeof(int) == 42) return 0;
  abort();
}


### COMPILER INVOCATION:
clang++ -xc++ -std=gnu++11 -o testit -


### INVOCATION OF RESULTING EXECUTABLE:
./testit


### ACTUAL EXECUTION OUTPUT:
Aborted
Return:  0x86:134


### EXPECTED EXECUTION OUTPUT:
Return:  0x00:0


### COMPILER VERSION INFO (clang++ -v):
clang version 8.0.0 (trunk)
Target: powerpc64le-unknown-linux-gnu
Thread model: posix
InstalledDir:
/gsa/tlbgsa/projects/x/xlcmpbld/run/clang/main_trunk/linux_leppc/daily/latest/bin
Found candidate GCC installation: /usr/lib/gcc/ppc64le-redhat-linux/4.8.2
Found candidate GCC installation: /usr/lib/gcc/ppc64le-redhat-linux/4.8.5
Selected GCC installation: /usr/lib/gcc/ppc64le-redhat-linux/4.8.5
Candidate multilib: .;@m64
Selected multilib: .;@m64

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to