reject codegen of __thread variables as unimplemented, rdar://6775265

llvm-svn: 68755
This commit is contained in:
Chris Lattner 2009-04-10 00:35:59 +00:00
parent 428f71623b
commit 5286e774ee
3 changed files with 11 additions and 4 deletions

View File

@ -63,6 +63,10 @@ void CodeGenFunction::EmitBlockVarDecl(const VarDecl &D) {
if (D.getAttr<AsmLabelAttr>())
CGM.ErrorUnsupported(&D, "__asm__");
// We don't support __thread yet.
if (D.isThreadSpecified())
CGM.ErrorUnsupported(&D, "__thread variable", true);
switch (D.getStorageClass()) {
case VarDecl::Static:
return EmitStaticBlockVarDecl(D);

View File

@ -231,11 +231,10 @@ void CodeGenFunction::GenerateCode(const FunctionDecl *FD,
EmitStmt(FD->getBody());
const CompoundStmt *S = dyn_cast<CompoundStmt>(FD->getBody());
if (S) {
if (S)
FinishFunction(S->getRBracLoc());
} else {
else
FinishFunction();
}
// Destroy the 'this' declaration.
if (CXXThisDecl)

View File

@ -614,6 +614,10 @@ llvm::Constant *CodeGenModule::GetOrCreateLLVMGlobal(const char *MangledName,
return llvm::ConstantExpr::getBitCast(Entry, Ty);
}
// We don't support __thread yet.
if (D && D->isThreadSpecified())
ErrorUnsupported(D, "thread local ('__thread') variable", true);
// This is the first use or definition of a mangled name. If there is a
// deferred decl with this name, remember that we need to emit it at the end
// of the file.
@ -680,7 +684,7 @@ CodeGenModule::CreateRuntimeVariable(const llvm::Type *Ty,
void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D) {
llvm::Constant *Init = 0;
QualType ASTTy = D->getType();
if (D->getInit() == 0) {
// This is a tentative definition; tentative definitions are
// implicitly initialized with { 0 }