diff options
Diffstat (limited to 'clang/lib/CodeGen/CGExprConstant.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGExprConstant.cpp | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGExprConstant.cpp b/clang/lib/CodeGen/CGExprConstant.cpp index ff900ed077e6..cf1f2e0eab92 100644 --- a/clang/lib/CodeGen/CGExprConstant.cpp +++ b/clang/lib/CodeGen/CGExprConstant.cpp @@ -899,7 +899,7 @@ static ConstantAddress tryEmitGlobalCompoundLiteral(CodeGenModule &CGM,    CharUnits Align = CGM.getContext().getTypeAlignInChars(E->getType());    if (llvm::GlobalVariable *Addr =            CGM.getAddrOfConstantCompoundLiteralIfEmitted(E)) -    return ConstantAddress(Addr, Align); +    return ConstantAddress(Addr, Addr->getValueType(), Align);    LangAS addressSpace = E->getType().getAddressSpace(); @@ -921,7 +921,7 @@ static ConstantAddress tryEmitGlobalCompoundLiteral(CodeGenModule &CGM,    emitter.finalize(GV);    GV->setAlignment(Align.getAsAlign());    CGM.setAddrOfConstantCompoundLiteral(E, GV); -  return ConstantAddress(GV, Align); +  return ConstantAddress(GV, GV->getValueType(), Align);  }  static llvm::Constant * @@ -1988,6 +1988,9 @@ ConstantLValueEmitter::VisitAddrLabelExpr(const AddrLabelExpr *E) {  ConstantLValue  ConstantLValueEmitter::VisitCallExpr(const CallExpr *E) {    unsigned builtin = E->getBuiltinCallee(); +  if (builtin == Builtin::BI__builtin_function_start) +    return CGM.GetFunctionStart( +        E->getArg(0)->getAsBuiltinConstantDeclRef(CGM.getContext()));    if (builtin != Builtin::BI__builtin___CFStringMakeConstantString &&        builtin != Builtin::BI__builtin___NSStringMakeConstantString)      return nullptr;  | 
