From 5866fe306d541fe04ec9c62376f4092b499f341b Mon Sep 17 00:00:00 2001 From: Eli Friedman Date: Fri, 8 Jan 2010 00:50:11 +0000 Subject: Fix for PR5967: Make const-marking for LLVM globals correct for cases requiring run-time initialization, and emit run-time initializers aggresively to avoid ordering issues with deferred globals. llvm-svn: 92976 --- clang/test/CodeGenCXX/deferred-global-init.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 clang/test/CodeGenCXX/deferred-global-init.cpp (limited to 'clang/test/CodeGenCXX/deferred-global-init.cpp') diff --git a/clang/test/CodeGenCXX/deferred-global-init.cpp b/clang/test/CodeGenCXX/deferred-global-init.cpp new file mode 100644 index 00000000000..57014790554 --- /dev/null +++ b/clang/test/CodeGenCXX/deferred-global-init.cpp @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s +// PR5967 + +extern void* foo; +static void* const a = foo; +void* bar() { return a; } + +// CHECK: @a = internal global i8* null + +// CHECK: define internal void @__cxx_global_var_init +// CHECK: load i8** @foo +// CHECK: ret void + +// CHECK: define internal void @__cxx_global_initialization +// CHECK: call void @__cxx_global_var_init() +// CHECK: ret void -- cgit v1.2.3