Simplify code and add comments, in code that generate debug info for constant integer globals, based on Chris's feedback.

llvm-svn: 110694
This commit is contained in:
Devang Patel 2010-08-10 17:53:33 +00:00
parent ce25f33e2a
commit dc866e119c
5 changed files with 15 additions and 18 deletions

View File

@ -1801,7 +1801,9 @@ void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *Var,
true/*definition*/, Var);
}
void CGDebugInfo::EmitGlobalVariable(llvm::Constant *C, const ValueDecl *VD,
/// EmitGlobalVariable - Emit global variable's debug info.
void CGDebugInfo::EmitGlobalVariable(const ValueDecl *VD,
llvm::ConstantInt *Init,
CGBuilderTy &Builder) {
// Create the descriptor for the variable.
llvm::DIFile Unit = getOrCreateFile(VD->getLocation());
@ -1809,7 +1811,7 @@ void CGDebugInfo::EmitGlobalVariable(llvm::Constant *C, const ValueDecl *VD,
DebugFactory.CreateGlobalVariable(Unit, Name, Name, Name, Unit,
getLineNumber(VD->getLocation()),
getOrCreateType(VD->getType(), Unit),
true, true, C);
true, true, Init);
}
/// getOrCreateNamesSpace - Return namespace descriptor for the given

View File

@ -181,8 +181,8 @@ public:
/// EmitGlobalVariable - Emit information about an objective-c interface.
void EmitGlobalVariable(llvm::GlobalVariable *GV, ObjCInterfaceDecl *Decl);
/// EmitGlobalVariable - Emit information about a constant.
void EmitGlobalVariable(llvm::Constant *C, const ValueDecl *VD,
/// EmitGlobalVariable - Emit global variable's debug info.
void EmitGlobalVariable(const ValueDecl *VD, llvm::ConstantInt *Init,
CGBuilderTy &Builder);
private:

View File

@ -149,8 +149,10 @@ public:
Expr::EvalResult Result;
if (E->Evaluate(Result, CGF.getContext()) && Result.Val.isInt()) {
assert(!Result.HasSideEffects && "Constant declref with side-effect?!");
CGF.EmitDeclRefExprDbgValue(E, Result.Val);
return llvm::ConstantInt::get(VMContext, Result.Val.getInt());
llvm::ConstantInt *CI
= llvm::ConstantInt::get(VMContext, Result.Val.getInt());
CGF.EmitDeclRefExprDbgValue(E, CI);
return CI;
}
return EmitLoadOfLValue(E);
}

View File

@ -1286,15 +1286,8 @@ llvm::Value *CodeGenFunction::getEHCleanupDestSlot() {
}
void CodeGenFunction::EmitDeclRefExprDbgValue(const DeclRefExpr *E,
const APValue &AV) {
CGDebugInfo *Dbg = getDebugInfo();
if (!Dbg) return;
llvm::Constant *C = NULL;
if (AV.isInt())
C = llvm::ConstantInt::get(getLLVMContext(), AV.getInt());
else if (AV.isFloat())
C = llvm::ConstantFP::get(getLLVMContext(), AV.getFloat());
if (C)
Dbg->EmitGlobalVariable(C, E->getDecl(), Builder);
llvm::ConstantInt *Init) {
assert (Init && "Invalid DeclRefExpr initializer!");
if (CGDebugInfo *Dbg = getDebugInfo())
Dbg->EmitGlobalVariable(E->getDecl(), Init, Builder);
}

View File

@ -1373,7 +1373,7 @@ public:
LValue EmitStmtExprLValue(const StmtExpr *E);
LValue EmitPointerToDataMemberBinaryExpr(const BinaryOperator *E);
LValue EmitObjCSelectorLValue(const ObjCSelectorExpr *E);
void EmitDeclRefExprDbgValue(const DeclRefExpr *E, const APValue &AV);
void EmitDeclRefExprDbgValue(const DeclRefExpr *E, llvm::ConstantInt *Init);
//===--------------------------------------------------------------------===//
// Scalar Expression Emission
//===--------------------------------------------------------------------===//