https://llvm.org/bugs/show_bug.cgi?id=28662
Bug ID: 28662 Summary: Type with no linkage in signature: symbols for unique entities link together Product: clang Version: trunk Hardware: All OS: All Status: NEW Keywords: miscompilation Severity: normal Priority: P Component: C++11 Assignee: unassignedclangb...@nondot.org Reporter: hst...@ca.ibm.com CC: dgre...@apple.com, llvm-bugs@lists.llvm.org Classification: Unclassified Clang produces symbols for entities which cannot possibly be referenced from another translation unit in such a way that distinct entities link together. In the following program, the templates in question are neither equivalent nor functionally equivalent. Online compiler: http://melpon.org/wandbox/permlink/okS5TiGDAVgd8tb0 ### SOURCE (a.cc): extern "C" void abort(); void bar(); namespace { template <typename T> struct A { A(int); char sizer[1]; }; } template <typename T> void foo(char (*)[sizeof A<T>(T(0))]) { static unsigned cnt = 0; if (cnt++) abort(); } int main(void) { bar(); foo<int>(0); } ### SOURCE (b.cc): extern "C" void abort(); namespace { template <typename T> struct A { A(int); char sizer[2]; }; } template <typename T> void foo(char (*)[sizeof A<T>(T(0))]) { static unsigned cnt = 0; if (cnt++) abort(); } void bar() { foo<int>(0); } ### COMMANDS: clang++ -c -o a.o -std=c++11 a.cc clang++ -c -o b.o -std=c++11 b.cc clang++ -o a.out a.o b.o ./a.out ### EXPECTED OUTPUT: rc=0 ### ACTUAL OUTPUT: (aborts) ### COMPILER VERSION INFO (clang++ -v): clang version 4.0.0 (trunk 276290) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/local/llvm-head/bin Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.3 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 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