CodeGenPrepare: Null check pointers
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 76f2762..a191dce 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp
@@ -559,6 +559,7 @@ } bool CodeGenPrepare::run(Function &F, FunctionAnalysisManager &AM) { + assert(TM && "TargetMachine is required for CodeGenPrepare"); DL = &F.getDataLayout(); SubtargetInfo = TM->getSubtargetImpl(F); TLI = SubtargetInfo->getTargetLowering(); @@ -589,16 +590,16 @@ // counts based hotness overwrite the cold attribute. // This is a conservative behabvior. if (F.hasFnAttribute(Attribute::Hot) || - PSI->isFunctionHotInCallGraph(&F, *BFI)) + (PSI && PSI->isFunctionHotInCallGraph(&F, *BFI))) F.setSectionPrefix("hot"); // If PSI shows this function is not hot, we will placed the function // into unlikely section if (1) PSI shows this is a cold function, or // (2) the function has a attribute of cold. - else if (PSI->isFunctionColdInCallGraph(&F, *BFI) || + else if ((PSI && PSI->isFunctionColdInCallGraph(&F, *BFI)) || F.hasFnAttribute(Attribute::Cold)) F.setSectionPrefix("unlikely"); - else if (ProfileUnknownInSpecialSection && PSI->hasPartialSampleProfile() && - PSI->isFunctionHotnessUnknown(F)) + else if (ProfileUnknownInSpecialSection && PSI && + PSI->hasPartialSampleProfile() && PSI->isFunctionHotnessUnknown(F)) F.setSectionPrefix("unknown"); }