]> granicus.if.org Git - clang/commit
Revert r153723, and its follow-ups r153728 and r153733.
authorChandler Carruth <chandlerc@gmail.com>
Fri, 30 Mar 2012 19:44:53 +0000 (19:44 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 30 Mar 2012 19:44:53 +0000 (19:44 +0000)
commit0f30a12ce7b3d4d86c9ca9072f587da77c8eef34
tree7065652fa4ad45d8dce3c6cb377f1c8c0f904cab
parent40afb7d4f3840e5b9dcdf77086d9e4843fd5463a
Revert r153723, and its follow-ups r153728 and r153733.

These patches cause us to miscompile and/or reject code with static
function-local variables in an extern-C context. Previously, we were
papering over this as long as the variables are within the same
translation unit, and had not seen any failures in the wild. We still
need a proper fix, which involves mangling static locals inside of an
extern-C block (as GCC already does), but this patch causes pretty
widespread regressions. Firefox, and many other applications no longer
build.

Lots of test cases have been posted to the list in response to this
commit, so there should be no problem reproducing the issues.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153768 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGCXXABI.cpp
lib/CodeGen/CGCXXABI.h
lib/CodeGen/CGDecl.cpp
lib/CodeGen/CGDeclCXX.cpp
lib/CodeGen/CodeGenFunction.h
lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/CodeGenModule.h
lib/CodeGen/ItaniumCXXABI.cpp
test/CodeGenCXX/static-init.cpp