nickdesaulniers updated this revision to Diff 544909. nickdesaulniers added a comment.
- update Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D156482/new/ https://reviews.llvm.org/D156482 Files: clang/lib/CodeGen/CGExprConstant.cpp Index: clang/lib/CodeGen/CGExprConstant.cpp =================================================================== --- clang/lib/CodeGen/CGExprConstant.cpp +++ clang/lib/CodeGen/CGExprConstant.cpp @@ -1122,9 +1122,10 @@ } case CK_AtomicToNonAtomic: - case CK_NonAtomicToAtomic: - case CK_NoOp: case CK_ConstructorConversion: + case CK_FunctionToPointerDecay: + case CK_NoOp: + case CK_NonAtomicToAtomic: return Visit(subExpr, destType); case CK_ArrayToPointerDecay: @@ -1189,7 +1190,6 @@ case CK_CPointerToObjCPointerCast: case CK_BlockPointerToObjCPointerCast: case CK_AnyPointerToBlockPointerCast: - case CK_FunctionToPointerDecay: case CK_BaseToDerived: case CK_DerivedToBase: case CK_UncheckedDerivedToBase: @@ -1241,6 +1241,13 @@ return llvm::ConstantInt::get(CGM.getLLVMContext(), I->getValue()); } + llvm::Constant *VisitDeclRefExpr(DeclRefExpr *D, QualType T) { + ValueDecl *VD = D->getDecl(); + if (isa<FunctionDecl>(VD)) + return CGM.getModule().getNamedValue(VD->getName()); + return nullptr; + } + llvm::Constant *EmitArrayInitialization(InitListExpr *ILE, QualType T) { auto *CAT = CGM.getContext().getAsConstantArrayType(ILE->getType()); assert(CAT && "can't emit array init for non-constant-bound array");
Index: clang/lib/CodeGen/CGExprConstant.cpp =================================================================== --- clang/lib/CodeGen/CGExprConstant.cpp +++ clang/lib/CodeGen/CGExprConstant.cpp @@ -1122,9 +1122,10 @@ } case CK_AtomicToNonAtomic: - case CK_NonAtomicToAtomic: - case CK_NoOp: case CK_ConstructorConversion: + case CK_FunctionToPointerDecay: + case CK_NoOp: + case CK_NonAtomicToAtomic: return Visit(subExpr, destType); case CK_ArrayToPointerDecay: @@ -1189,7 +1190,6 @@ case CK_CPointerToObjCPointerCast: case CK_BlockPointerToObjCPointerCast: case CK_AnyPointerToBlockPointerCast: - case CK_FunctionToPointerDecay: case CK_BaseToDerived: case CK_DerivedToBase: case CK_UncheckedDerivedToBase: @@ -1241,6 +1241,13 @@ return llvm::ConstantInt::get(CGM.getLLVMContext(), I->getValue()); } + llvm::Constant *VisitDeclRefExpr(DeclRefExpr *D, QualType T) { + ValueDecl *VD = D->getDecl(); + if (isa<FunctionDecl>(VD)) + return CGM.getModule().getNamedValue(VD->getName()); + return nullptr; + } + llvm::Constant *EmitArrayInitialization(InitListExpr *ILE, QualType T) { auto *CAT = CGM.getContext().getAsConstantArrayType(ILE->getType()); assert(CAT && "can't emit array init for non-constant-bound array");
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits