[LLVMbugs] [Bug 9593] New: static dtors are invoked unconditionally with -fno-use-cxa-atexit
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed Mar 30 23:18:19 PDT 2011
http://llvm.org/bugs/show_bug.cgi?id=9593
Summary: static dtors are invoked unconditionally with
-fno-use-cxa-atexit
Product: clang
Version: 2.9
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P
Component: LLVM Codegen
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: geek4civic at gmail.com
CC: llvmbugs at cs.uiuc.edu
Blocks: 8390
Created an attachment (id=6383)
--> (http://llvm.org/bugs/attachment.cgi?id=6383)
foo.s generated by clang -fno-use-cxa-atexit
// testcase
extern "C" void ctor();
extern "C" void dtor();
class FOO {
public:
FOO() {ctor();}
~FOO() {dtor();}
};
FOO* get() {
static FOO instance;
return &instance;
}
$ clang++ -cc1 -fno-use-cxa-atexit -O3 -Wall foo.cc -S -emit-llvm -o foo.ll
(snip)
define %class.FOO* @_Z3getv() nounwind {
(check and set guard variable for get()::instance)
}
(snip)
@llvm.global_dtors = appending global [1 x %0] [%0 { i32 65535, void ()*
@_GLOBAL__D_a }]
(snip)
define internal void @_GLOBAL__D_a() nounwind {
entry:
tail call void @dtor() nounwind
ret void
}
////////
Cygming is affected by this issue.
FYI, with g++-4.4 on cygming, atexit(tcf_xxx) is used instead of cxa_atexit.
--
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