On May 16, 2009, at 2:02 PM, Anders Carlsson wrote: > Author: andersca > Date: Sat May 16 16:02:39 2009 > New Revision: 71957 > > URL: http://llvm.org/viewvc/llvm-project?rev=71957&view=rev > Log: > extern "C" should preserve the 'extern' qualifier for VarDecls. > Fixes 6853728. > > > Added: > cfe/trunk/test/CodeGenCXX/extern-c.cpp > Modified: > cfe/trunk/lib/CodeGen/CodeGenModule.cpp > cfe/trunk/test/CodeGenCXX/mangle.cpp > > Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=71957&r1=71956&r2=71957&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) > +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Sat May 16 16:02:39 2009 > @@ -538,8 +538,9 @@ > assert(VD->isFileVarDecl() && "Cannot emit local var decl as > global."); > > // In C++, if this is marked "extern", defer code generation. > - if (getLangOptions().CPlusPlus && > - VD->getStorageClass() == VarDecl::Extern && !VD->getInit()) > + if (getLangOptions().CPlusPlus && !VD->getInit() && > + (VD->getStorageClass() == VarDecl::Extern || > + VD->isExternC(getContext()))) > return; > > // In C, if this isn't a definition, defer code generation.
Hmmm... does this work properly for extern "C++" int var1; ? - Doug _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits