llvm-project/clang/test/CodeGen/2008-07-30-redef-of-bitcasted-decl.c
Daniel Dunbar 8fbe78f6fc Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.
- This is designed to make it obvious that %clang_cc1 is a "test variable"
   which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
   can be useful to redefine what gets run as 'clang -cc1' (for example, to set
   a default target).

llvm-svn: 91446
2009-12-15 20:14:24 +00:00

29 lines
761 B
C

// RUN: %clang_cc1 -emit-llvm -o - %s
// <rdar://problem/6108358>
/* For posterity, the issue here begins initial "char []" decl for
* s. This is a tentative definition and so a global was being
* emitted, however the mapping in GlobalDeclMap referred to a bitcast
* of this global.
*
* The problem was that later when the correct definition for s is
* emitted we were doing a RAUW on the old global which was destroying
* the bitcast in the GlobalDeclMap (since it cannot be replaced
* properly), leaving a dangling pointer.
*
* The purpose of bar is just to trigger a use of the old decl
* sometime after the dangling pointer has been introduced.
*/
char s[];
static void bar(void *db) {
eek(s);
}
char s[5] = "hi";
int foo() {
bar(0);
}