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());
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
/// 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:
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);
}
}
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);
}
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
//===--------------------------------------------------------------------===//