IRgen: Eliminate EmitPredefinedFunctionName(), it doesn't need to be factored out.
llvm-svn: 111715
This commit is contained in:
parent
93b00a98a3
commit
b1d94a98dd
|
@ -1275,47 +1275,46 @@ LValue CodeGenFunction::EmitObjCEncodeExprLValue(const ObjCEncodeExpr *E) {
|
|||
}
|
||||
|
||||
|
||||
LValue CodeGenFunction::EmitPredefinedFunctionName(unsigned Type) {
|
||||
std::string GlobalVarName;
|
||||
|
||||
switch (Type) {
|
||||
default: assert(0 && "Invalid type");
|
||||
case PredefinedExpr::Func:
|
||||
GlobalVarName = "__func__.";
|
||||
break;
|
||||
case PredefinedExpr::Function:
|
||||
GlobalVarName = "__FUNCTION__.";
|
||||
break;
|
||||
case PredefinedExpr::PrettyFunction:
|
||||
GlobalVarName = "__PRETTY_FUNCTION__.";
|
||||
break;
|
||||
}
|
||||
|
||||
llvm::StringRef FnName = CurFn->getName();
|
||||
if (FnName.startswith("\01"))
|
||||
FnName = FnName.substr(1);
|
||||
GlobalVarName += FnName;
|
||||
|
||||
const Decl *CurDecl = CurCodeDecl;
|
||||
if (CurDecl == 0)
|
||||
CurDecl = getContext().getTranslationUnitDecl();
|
||||
|
||||
std::string FunctionName =
|
||||
PredefinedExpr::ComputeName((PredefinedExpr::IdentType)Type, CurDecl);
|
||||
|
||||
llvm::Constant *C =
|
||||
CGM.GetAddrOfConstantCString(FunctionName, GlobalVarName.c_str());
|
||||
return LValue::MakeAddr(C, Qualifiers());
|
||||
}
|
||||
|
||||
LValue CodeGenFunction::EmitPredefinedLValue(const PredefinedExpr *E) {
|
||||
switch (E->getIdentType()) {
|
||||
default:
|
||||
return EmitUnsupportedLValue(E, "predefined expression");
|
||||
|
||||
case PredefinedExpr::Func:
|
||||
case PredefinedExpr::Function:
|
||||
case PredefinedExpr::PrettyFunction:
|
||||
return EmitPredefinedFunctionName(E->getIdentType());
|
||||
case PredefinedExpr::PrettyFunction: {
|
||||
unsigned Type = E->getIdentType();
|
||||
std::string GlobalVarName;
|
||||
|
||||
switch (Type) {
|
||||
default: assert(0 && "Invalid type");
|
||||
case PredefinedExpr::Func:
|
||||
GlobalVarName = "__func__.";
|
||||
break;
|
||||
case PredefinedExpr::Function:
|
||||
GlobalVarName = "__FUNCTION__.";
|
||||
break;
|
||||
case PredefinedExpr::PrettyFunction:
|
||||
GlobalVarName = "__PRETTY_FUNCTION__.";
|
||||
break;
|
||||
}
|
||||
|
||||
llvm::StringRef FnName = CurFn->getName();
|
||||
if (FnName.startswith("\01"))
|
||||
FnName = FnName.substr(1);
|
||||
GlobalVarName += FnName;
|
||||
|
||||
const Decl *CurDecl = CurCodeDecl;
|
||||
if (CurDecl == 0)
|
||||
CurDecl = getContext().getTranslationUnitDecl();
|
||||
|
||||
std::string FunctionName =
|
||||
PredefinedExpr::ComputeName((PredefinedExpr::IdentType)Type, CurDecl);
|
||||
|
||||
llvm::Constant *C =
|
||||
CGM.GetAddrOfConstantCString(FunctionName, GlobalVarName.c_str());
|
||||
return LValue::MakeAddr(C, Qualifiers());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -822,7 +822,7 @@ public:
|
|||
case Expr::PredefinedExprClass: {
|
||||
unsigned Type = cast<PredefinedExpr>(E)->getIdentType();
|
||||
if (CGF) {
|
||||
LValue Res = CGF->EmitPredefinedFunctionName(Type);
|
||||
LValue Res = CGF->EmitPredefinedLValue(cast<PredefinedExpr>(E));
|
||||
return cast<llvm::Constant>(Res.getAddress());
|
||||
} else if (Type == PredefinedExpr::PrettyFunction) {
|
||||
return CGM.GetAddrOfConstantCString("top level", ".tmp");
|
||||
|
|
|
@ -1349,7 +1349,6 @@ public:
|
|||
LValue EmitDeclRefLValue(const DeclRefExpr *E);
|
||||
LValue EmitStringLiteralLValue(const StringLiteral *E);
|
||||
LValue EmitObjCEncodeExprLValue(const ObjCEncodeExpr *E);
|
||||
LValue EmitPredefinedFunctionName(unsigned Type);
|
||||
LValue EmitPredefinedLValue(const PredefinedExpr *E);
|
||||
LValue EmitUnaryOpLValue(const UnaryOperator *E);
|
||||
LValue EmitArraySubscriptExpr(const ArraySubscriptExpr *E);
|
||||
|
|
Loading…
Reference in New Issue