[llvm] [polly] Slightly improve the getenv("bar") linking problem (PR #150020)

via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 22 06:24:08 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp -- llvm/include/llvm/CodeGen/LinkAllAsmWriterComponents.h llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h llvm/include/llvm/ExecutionEngine/MCJIT.h llvm/include/llvm/LinkAllIR.h llvm/include/llvm/LinkAllPasses.h llvm/tools/bugpoint/bugpoint.cpp polly/include/polly/LinkAllPasses.h
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/include/llvm/LinkAllPasses.h b/llvm/include/llvm/LinkAllPasses.h
index 200b2ae2c..1c800b71e 100644
--- a/llvm/include/llvm/LinkAllPasses.h
+++ b/llvm/include/llvm/LinkAllPasses.h
@@ -58,199 +58,200 @@
 #include <cstdlib>
 
 namespace llvm {
-  inline bool getNonFoldableAlwaysTrue() {
-    // Some parts of the codebase require a "constant true value" used as a
-    // predicate. These cases require that even with LTO and static linking,
-    // it's not possible to for the compiler to fold the value. As compilers
-    // aren't smart enough to know that getenv() never returns -1, this will do
-    // the job.
-    return std::getenv("LLVM_IGNORED_ENV_VAR") != (char *)-1;
-  }
+inline bool getNonFoldableAlwaysTrue() {
+  // Some parts of the codebase require a "constant true value" used as a
+  // predicate. These cases require that even with LTO and static linking,
+  // it's not possible to for the compiler to fold the value. As compilers
+  // aren't smart enough to know that getenv() never returns -1, this will do
+  // the job.
+  return std::getenv("LLVM_IGNORED_ENV_VAR") != (char *)-1;
 }
+} // namespace llvm
 namespace {
-  struct ForcePassLinking {
-    ForcePassLinking() {
-      // We must reference the passes in such a way that compilers will not
-      // delete it all as dead code, even with whole program optimization,
-      // yet is effectively a NO-OP. As the compiler isn't smart enough
-      // to know that getenv() never returns -1, this will do the job.
-      // This is so that globals in the translation units where these functions
-      // are defined are forced to be initialized, populating various
-      // registries.
-      if (llvm::getNonFoldableAlwaysTrue())
-        return;
+struct ForcePassLinking {
+  ForcePassLinking() {
+    // We must reference the passes in such a way that compilers will not
+    // delete it all as dead code, even with whole program optimization,
+    // yet is effectively a NO-OP. As the compiler isn't smart enough
+    // to know that getenv() never returns -1, this will do the job.
+    // This is so that globals in the translation units where these functions
+    // are defined are forced to be initialized, populating various
+    // registries.
+    if (llvm::getNonFoldableAlwaysTrue())
+      return;
 
-      (void) llvm::createAAEvalPass();
-      (void) llvm::createAggressiveDCEPass();
-      (void) llvm::createAggressiveInstCombinerPass();
-      (void) llvm::createBitTrackingDCEPass();
-      (void)llvm::createOpenMPOptCGSCCLegacyPass();
-      (void) llvm::createAlignmentFromAssumptionsPass();
-      (void) llvm::createBasicAAWrapperPass();
-      (void) llvm::createSCEVAAWrapperPass();
-      (void) llvm::createTypeBasedAAWrapperPass();
-      (void) llvm::createScopedNoAliasAAWrapperPass();
-      (void) llvm::createBoundsCheckingLegacyPass();
-      (void) llvm::createBreakCriticalEdgesPass();
-      (void) llvm::createCallGraphDOTPrinterPass();
-      (void) llvm::createCallGraphViewerPass();
-      (void) llvm::createCFGSimplificationPass();
-      (void) llvm::createCFLAndersAAWrapperPass();
-      (void) llvm::createCFLSteensAAWrapperPass();
-      (void) llvm::createStructurizeCFGPass();
-      (void) llvm::createLibCallsShrinkWrapPass();
-      (void) llvm::createCalledValuePropagationPass();
-      (void) llvm::createConstantMergePass();
-      (void) llvm::createCostModelAnalysisPass();
-      (void) llvm::createDeadArgEliminationPass();
-      (void) llvm::createDeadCodeEliminationPass();
-      (void) llvm::createDeadStoreEliminationPass();
-      (void) llvm::createDependenceAnalysisWrapperPass();
-      (void) llvm::createDomOnlyPrinterWrapperPassPass();
-      (void) llvm::createDomPrinterWrapperPassPass();
-      (void) llvm::createDomOnlyViewerWrapperPassPass();
-      (void) llvm::createDomViewerWrapperPassPass();
-      (void) llvm::createFunctionInliningPass();
-      (void) llvm::createAlwaysInlinerLegacyPass();
-      (void) llvm::createGlobalDCEPass();
-      (void) llvm::createGlobalOptimizerPass();
-      (void) llvm::createGlobalsAAWrapperPass();
-      (void) llvm::createGuardWideningPass();
-      (void) llvm::createLoopGuardWideningPass();
-      (void) llvm::createIPSCCPPass();
-      (void) llvm::createInductiveRangeCheckEliminationPass();
-      (void) llvm::createIndVarSimplifyPass();
-      (void) llvm::createInstSimplifyLegacyPass();
-      (void) llvm::createInstructionCombiningPass();
-      (void) llvm::createInternalizePass();
-      (void) llvm::createJMCInstrumenterPass();
-      (void) llvm::createLCSSAPass();
-      (void) llvm::createLegacyDivergenceAnalysisPass();
-      (void) llvm::createLICMPass();
-      (void) llvm::createLoopSinkPass();
-      (void) llvm::createLazyValueInfoPass();
-      (void) llvm::createLoopExtractorPass();
-      (void) llvm::createLoopInterchangePass();
-      (void) llvm::createLoopFlattenPass();
-      (void) llvm::createLoopPredicationPass();
-      (void) llvm::createLoopSimplifyPass();
-      (void) llvm::createLoopSimplifyCFGPass();
-      (void) llvm::createLoopStrengthReducePass();
-      (void) llvm::createLoopRerollPass();
-      (void) llvm::createLoopUnrollPass();
-      (void) llvm::createLoopUnrollAndJamPass();
-      (void) llvm::createLoopVersioningLICMPass();
-      (void) llvm::createLoopIdiomPass();
-      (void) llvm::createLoopRotatePass();
-      (void) llvm::createLowerConstantIntrinsicsPass();
-      (void) llvm::createLowerExpectIntrinsicPass();
-      (void) llvm::createLowerGlobalDtorsLegacyPass();
-      (void) llvm::createLowerInvokePass();
-      (void) llvm::createLowerSwitchPass();
-      (void) llvm::createNaryReassociatePass();
-      (void) llvm::createObjCARCAAWrapperPass();
-      (void) llvm::createObjCARCAPElimPass();
-      (void) llvm::createObjCARCExpandPass();
-      (void) llvm::createObjCARCContractPass();
-      (void) llvm::createObjCARCOptPass();
-      (void) llvm::createPromoteMemoryToRegisterPass();
-      (void) llvm::createDemoteRegisterToMemoryPass();
-      (void)llvm::createPostDomOnlyPrinterWrapperPassPass();
-      (void)llvm::createPostDomPrinterWrapperPassPass();
-      (void)llvm::createPostDomOnlyViewerWrapperPassPass();
-      (void)llvm::createPostDomViewerWrapperPassPass();
-      (void) llvm::createReassociatePass();
-      (void) llvm::createRedundantDbgInstEliminationPass();
-      (void) llvm::createRegionInfoPass();
-      (void) llvm::createRegionOnlyPrinterPass();
-      (void) llvm::createRegionOnlyViewerPass();
-      (void) llvm::createRegionPrinterPass();
-      (void) llvm::createRegionViewerPass();
-      (void) llvm::createSCCPPass();
-      (void) llvm::createSafeStackPass();
-      (void) llvm::createSROAPass();
-      (void) llvm::createSingleLoopExtractorPass();
-      (void) llvm::createStripSymbolsPass();
-      (void) llvm::createStripNonDebugSymbolsPass();
-      (void) llvm::createStripDeadDebugInfoPass();
-      (void) llvm::createStripDeadPrototypesPass();
-      (void) llvm::createTailCallEliminationPass();
-      (void)llvm::createTLSVariableHoistPass();
-      (void) llvm::createJumpThreadingPass();
-      (void) llvm::createDFAJumpThreadingPass();
-      (void) llvm::createUnifyFunctionExitNodesPass();
-      (void) llvm::createInstCountPass();
-      (void) llvm::createConstantHoistingPass();
-      (void) llvm::createCodeGenPreparePass();
-      (void) llvm::createEarlyCSEPass();
-      (void) llvm::createGVNHoistPass();
-      (void) llvm::createMergedLoadStoreMotionPass();
-      (void) llvm::createGVNPass();
-      (void) llvm::createNewGVNPass();
-      (void) llvm::createMemCpyOptPass();
-      (void) llvm::createLoopDeletionPass();
-      (void) llvm::createPostDomTree();
-      (void) llvm::createInstructionNamerPass();
-      (void) llvm::createMetaRenamerPass();
-      (void) llvm::createAttributorLegacyPass();
-      (void) llvm::createAttributorCGSCCLegacyPass();
-      (void) llvm::createPostOrderFunctionAttrsLegacyPass();
-      (void) llvm::createReversePostOrderFunctionAttrsPass();
-      (void) llvm::createMergeFunctionsPass();
-      (void) llvm::createMergeICmpsLegacyPass();
-      (void) llvm::createExpandLargeDivRemPass();
-      (void) llvm::createExpandMemCmpPass();
-      (void) llvm::createExpandVectorPredicationPass();
-      std::string buf;
-      llvm::raw_string_ostream os(buf);
-      (void) llvm::createPrintModulePass(os);
-      (void) llvm::createPrintFunctionPass(os);
-      (void) llvm::createModuleDebugInfoPrinterPass();
-      (void) llvm::createPartialInliningPass();
-      (void) llvm::createLintLegacyPassPass();
-      (void) llvm::createSinkingPass();
-      (void) llvm::createLowerAtomicPass();
-      (void) llvm::createCorrelatedValuePropagationPass();
-      (void) llvm::createMemDepPrinter();
-      (void) llvm::createLoopVectorizePass();
-      (void) llvm::createSLPVectorizerPass();
-      (void) llvm::createLoadStoreVectorizerPass();
-      (void) llvm::createVectorCombinePass();
-      (void) llvm::createPartiallyInlineLibCallsPass();
-      (void) llvm::createScalarizerPass();
-      (void) llvm::createSeparateConstOffsetFromGEPPass();
-      (void) llvm::createSpeculativeExecutionPass();
-      (void) llvm::createSpeculativeExecutionIfHasBranchDivergencePass();
-      (void) llvm::createRewriteSymbolsPass();
-      (void) llvm::createStraightLineStrengthReducePass();
-      (void) llvm::createMemDerefPrinter();
-      (void) llvm::createMustExecutePrinter();
-      (void) llvm::createMustBeExecutedContextPrinter();
-      (void) llvm::createFloat2IntPass();
-      (void) llvm::createEliminateAvailableExternallyPass();
-      (void)llvm::createScalarizeMaskedMemIntrinLegacyPass();
-      (void) llvm::createWarnMissedTransformationsPass();
-      (void) llvm::createHardwareLoopsPass();
-      (void) llvm::createInjectTLIMappingsLegacyPass();
-      (void) llvm::createUnifyLoopExitsPass();
-      (void) llvm::createFixIrreduciblePass();
-      (void)llvm::createFunctionSpecializationPass();
-      (void)llvm::createSelectOptimizePass();
+    (void)llvm::createAAEvalPass();
+    (void)llvm::createAggressiveDCEPass();
+    (void)llvm::createAggressiveInstCombinerPass();
+    (void)llvm::createBitTrackingDCEPass();
+    (void)llvm::createOpenMPOptCGSCCLegacyPass();
+    (void)llvm::createAlignmentFromAssumptionsPass();
+    (void)llvm::createBasicAAWrapperPass();
+    (void)llvm::createSCEVAAWrapperPass();
+    (void)llvm::createTypeBasedAAWrapperPass();
+    (void)llvm::createScopedNoAliasAAWrapperPass();
+    (void)llvm::createBoundsCheckingLegacyPass();
+    (void)llvm::createBreakCriticalEdgesPass();
+    (void)llvm::createCallGraphDOTPrinterPass();
+    (void)llvm::createCallGraphViewerPass();
+    (void)llvm::createCFGSimplificationPass();
+    (void)llvm::createCFLAndersAAWrapperPass();
+    (void)llvm::createCFLSteensAAWrapperPass();
+    (void)llvm::createStructurizeCFGPass();
+    (void)llvm::createLibCallsShrinkWrapPass();
+    (void)llvm::createCalledValuePropagationPass();
+    (void)llvm::createConstantMergePass();
+    (void)llvm::createCostModelAnalysisPass();
+    (void)llvm::createDeadArgEliminationPass();
+    (void)llvm::createDeadCodeEliminationPass();
+    (void)llvm::createDeadStoreEliminationPass();
+    (void)llvm::createDependenceAnalysisWrapperPass();
+    (void)llvm::createDomOnlyPrinterWrapperPassPass();
+    (void)llvm::createDomPrinterWrapperPassPass();
+    (void)llvm::createDomOnlyViewerWrapperPassPass();
+    (void)llvm::createDomViewerWrapperPassPass();
+    (void)llvm::createFunctionInliningPass();
+    (void)llvm::createAlwaysInlinerLegacyPass();
+    (void)llvm::createGlobalDCEPass();
+    (void)llvm::createGlobalOptimizerPass();
+    (void)llvm::createGlobalsAAWrapperPass();
+    (void)llvm::createGuardWideningPass();
+    (void)llvm::createLoopGuardWideningPass();
+    (void)llvm::createIPSCCPPass();
+    (void)llvm::createInductiveRangeCheckEliminationPass();
+    (void)llvm::createIndVarSimplifyPass();
+    (void)llvm::createInstSimplifyLegacyPass();
+    (void)llvm::createInstructionCombiningPass();
+    (void)llvm::createInternalizePass();
+    (void)llvm::createJMCInstrumenterPass();
+    (void)llvm::createLCSSAPass();
+    (void)llvm::createLegacyDivergenceAnalysisPass();
+    (void)llvm::createLICMPass();
+    (void)llvm::createLoopSinkPass();
+    (void)llvm::createLazyValueInfoPass();
+    (void)llvm::createLoopExtractorPass();
+    (void)llvm::createLoopInterchangePass();
+    (void)llvm::createLoopFlattenPass();
+    (void)llvm::createLoopPredicationPass();
+    (void)llvm::createLoopSimplifyPass();
+    (void)llvm::createLoopSimplifyCFGPass();
+    (void)llvm::createLoopStrengthReducePass();
+    (void)llvm::createLoopRerollPass();
+    (void)llvm::createLoopUnrollPass();
+    (void)llvm::createLoopUnrollAndJamPass();
+    (void)llvm::createLoopVersioningLICMPass();
+    (void)llvm::createLoopIdiomPass();
+    (void)llvm::createLoopRotatePass();
+    (void)llvm::createLowerConstantIntrinsicsPass();
+    (void)llvm::createLowerExpectIntrinsicPass();
+    (void)llvm::createLowerGlobalDtorsLegacyPass();
+    (void)llvm::createLowerInvokePass();
+    (void)llvm::createLowerSwitchPass();
+    (void)llvm::createNaryReassociatePass();
+    (void)llvm::createObjCARCAAWrapperPass();
+    (void)llvm::createObjCARCAPElimPass();
+    (void)llvm::createObjCARCExpandPass();
+    (void)llvm::createObjCARCContractPass();
+    (void)llvm::createObjCARCOptPass();
+    (void)llvm::createPromoteMemoryToRegisterPass();
+    (void)llvm::createDemoteRegisterToMemoryPass();
+    (void)llvm::createPostDomOnlyPrinterWrapperPassPass();
+    (void)llvm::createPostDomPrinterWrapperPassPass();
+    (void)llvm::createPostDomOnlyViewerWrapperPassPass();
+    (void)llvm::createPostDomViewerWrapperPassPass();
+    (void)llvm::createReassociatePass();
+    (void)llvm::createRedundantDbgInstEliminationPass();
+    (void)llvm::createRegionInfoPass();
+    (void)llvm::createRegionOnlyPrinterPass();
+    (void)llvm::createRegionOnlyViewerPass();
+    (void)llvm::createRegionPrinterPass();
+    (void)llvm::createRegionViewerPass();
+    (void)llvm::createSCCPPass();
+    (void)llvm::createSafeStackPass();
+    (void)llvm::createSROAPass();
+    (void)llvm::createSingleLoopExtractorPass();
+    (void)llvm::createStripSymbolsPass();
+    (void)llvm::createStripNonDebugSymbolsPass();
+    (void)llvm::createStripDeadDebugInfoPass();
+    (void)llvm::createStripDeadPrototypesPass();
+    (void)llvm::createTailCallEliminationPass();
+    (void)llvm::createTLSVariableHoistPass();
+    (void)llvm::createJumpThreadingPass();
+    (void)llvm::createDFAJumpThreadingPass();
+    (void)llvm::createUnifyFunctionExitNodesPass();
+    (void)llvm::createInstCountPass();
+    (void)llvm::createConstantHoistingPass();
+    (void)llvm::createCodeGenPreparePass();
+    (void)llvm::createEarlyCSEPass();
+    (void)llvm::createGVNHoistPass();
+    (void)llvm::createMergedLoadStoreMotionPass();
+    (void)llvm::createGVNPass();
+    (void)llvm::createNewGVNPass();
+    (void)llvm::createMemCpyOptPass();
+    (void)llvm::createLoopDeletionPass();
+    (void)llvm::createPostDomTree();
+    (void)llvm::createInstructionNamerPass();
+    (void)llvm::createMetaRenamerPass();
+    (void)llvm::createAttributorLegacyPass();
+    (void)llvm::createAttributorCGSCCLegacyPass();
+    (void)llvm::createPostOrderFunctionAttrsLegacyPass();
+    (void)llvm::createReversePostOrderFunctionAttrsPass();
+    (void)llvm::createMergeFunctionsPass();
+    (void)llvm::createMergeICmpsLegacyPass();
+    (void)llvm::createExpandLargeDivRemPass();
+    (void)llvm::createExpandMemCmpPass();
+    (void)llvm::createExpandVectorPredicationPass();
+    std::string buf;
+    llvm::raw_string_ostream os(buf);
+    (void)llvm::createPrintModulePass(os);
+    (void)llvm::createPrintFunctionPass(os);
+    (void)llvm::createModuleDebugInfoPrinterPass();
+    (void)llvm::createPartialInliningPass();
+    (void)llvm::createLintLegacyPassPass();
+    (void)llvm::createSinkingPass();
+    (void)llvm::createLowerAtomicPass();
+    (void)llvm::createCorrelatedValuePropagationPass();
+    (void)llvm::createMemDepPrinter();
+    (void)llvm::createLoopVectorizePass();
+    (void)llvm::createSLPVectorizerPass();
+    (void)llvm::createLoadStoreVectorizerPass();
+    (void)llvm::createVectorCombinePass();
+    (void)llvm::createPartiallyInlineLibCallsPass();
+    (void)llvm::createScalarizerPass();
+    (void)llvm::createSeparateConstOffsetFromGEPPass();
+    (void)llvm::createSpeculativeExecutionPass();
+    (void)llvm::createSpeculativeExecutionIfHasBranchDivergencePass();
+    (void)llvm::createRewriteSymbolsPass();
+    (void)llvm::createStraightLineStrengthReducePass();
+    (void)llvm::createMemDerefPrinter();
+    (void)llvm::createMustExecutePrinter();
+    (void)llvm::createMustBeExecutedContextPrinter();
+    (void)llvm::createFloat2IntPass();
+    (void)llvm::createEliminateAvailableExternallyPass();
+    (void)llvm::createScalarizeMaskedMemIntrinLegacyPass();
+    (void)llvm::createWarnMissedTransformationsPass();
+    (void)llvm::createHardwareLoopsPass();
+    (void)llvm::createInjectTLIMappingsLegacyPass();
+    (void)llvm::createUnifyLoopExitsPass();
+    (void)llvm::createFixIrreduciblePass();
+    (void)llvm::createFunctionSpecializationPass();
+    (void)llvm::createSelectOptimizePass();
 
-      (void)new llvm::IntervalPartition();
-      (void)new llvm::ScalarEvolutionWrapperPass();
-      llvm::Function::Create(nullptr, llvm::GlobalValue::ExternalLinkage)->viewCFGOnly();
-      llvm::RGPassManager RGM;
-      llvm::TargetLibraryInfoImpl TLII;
-      llvm::TargetLibraryInfo TLI(TLII);
-      llvm::AliasAnalysis AA(TLI);
-      llvm::AliasSetTracker X(AA);
-      X.add(nullptr, llvm::LocationSize::beforeOrAfterPointer(),
-            llvm::AAMDNodes()); // for -print-alias-sets
-      (void) llvm::AreStatisticsEnabled();
-      (void) llvm::sys::RunningOnValgrind();
-    }
-  } ForcePassLinking; // Force link by creating a global definition.
-}
+    (void)new llvm::IntervalPartition();
+    (void)new llvm::ScalarEvolutionWrapperPass();
+    llvm::Function::Create(nullptr, llvm::GlobalValue::ExternalLinkage)
+        ->viewCFGOnly();
+    llvm::RGPassManager RGM;
+    llvm::TargetLibraryInfoImpl TLII;
+    llvm::TargetLibraryInfo TLI(TLII);
+    llvm::AliasAnalysis AA(TLI);
+    llvm::AliasSetTracker X(AA);
+    X.add(nullptr, llvm::LocationSize::beforeOrAfterPointer(),
+          llvm::AAMDNodes()); // for -print-alias-sets
+    (void)llvm::AreStatisticsEnabled();
+    (void)llvm::sys::RunningOnValgrind();
+  }
+} ForcePassLinking; // Force link by creating a global definition.
+} // namespace
 
 #endif

``````````

</details>


https://github.com/llvm/llvm-project/pull/150020


More information about the llvm-commits mailing list