Skip to content

Comments

[DAG] Make strictfp attribute only restricts for libm and make non-math optimizations possible#165464

Merged
diggerlin merged 3 commits intollvm:mainfrom
diggerlin:digger/fix-strictfp
Nov 11, 2025
Merged

[DAG] Make strictfp attribute only restricts for libm and make non-math optimizations possible#165464
diggerlin merged 3 commits intollvm:mainfrom
diggerlin:digger/fix-strictfp

Conversation

@diggerlin
Copy link
Contributor

@diggerlin diggerlin commented Oct 28, 2025

the patch

Add strictfp attribute to prevent unwanted optimizations of libm calls

add I.isStrictFP() into

  if (!I.isNoBuiltin() && !I.isStrictFP() && !F->hasLocalLinkage() &&
        F->hasName() && LibInfo->getLibFunc(*F, Func) &&
        LibInfo->hasOptimizedCodeGen(Func)) 

it prevents the backend from optimizing even non-math libcalls such as strlen and memcmp if a call has the strict floating-point attribute. For example, it prevent converting strlen and memcmp to milicode call __strlen and __memcmp.

@llvmbot llvmbot added backend:PowerPC llvm:SelectionDAG SelectionDAGISel as well labels Oct 28, 2025
@llvmbot
Copy link
Member

llvmbot commented Oct 28, 2025

@llvm/pr-subscribers-llvm-selectiondag

@llvm/pr-subscribers-backend-powerpc

Author: zhijian lin (diggerlin)

Changes

the patch

commit 53a5fbb45fa45cba48963a6b17defa4c4f072d9d
Author: Andrew Kaylor &lt;andrew.kaylor@<!-- -->intel.com&gt;
Date:   Mon Aug 14 21:15:13 2017 +0000

    Add strictfp attribute to prevent unwanted optimizations of libm calls

    Differential Revision: https://reviews.llvm.org/D34163

add I.isStrictFP() into

  if (!I.isNoBuiltin() &amp;&amp; !I.isStrictFP() &amp;&amp; !F-&gt;hasLocalLinkage() &amp;&amp;
        F-&gt;hasName() &amp;&amp; LibInfo-&gt;getLibFunc(*F, Func) &amp;&amp;
        LibInfo-&gt;hasOptimizedCodeGen(Func)) 

it prevents the backend from optimizing even non-math libcalls such as strlen and memcmp if a call has the strict floating-point attribute.


Full diff: https://github.com/llvm/llvm-project/pull/165464.diff

2 Files Affected:

  • (modified) llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp (+9-6)
  • (modified) llvm/test/CodeGen/PowerPC/milicode32.ll (+2-1)
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index a52265055c88a..37108aa3a56d8 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -9392,7 +9392,9 @@ bool SelectionDAGBuilder::visitStrNLenCall(const CallInst &I) {
 bool SelectionDAGBuilder::visitUnaryFloatCall(const CallInst &I,
                                               unsigned Opcode) {
   // We already checked this call's prototype; verify it doesn't modify errno.
-  if (!I.onlyReadsMemory())
+  // Do not perform optimizations for call sites that require strict
+  // floating-point semantics.
+  if (!I.onlyReadsMemory() || I.isStrictFP())
     return false;
 
   SDNodeFlags Flags;
@@ -9412,7 +9414,9 @@ bool SelectionDAGBuilder::visitUnaryFloatCall(const CallInst &I,
 bool SelectionDAGBuilder::visitBinaryFloatCall(const CallInst &I,
                                                unsigned Opcode) {
   // We already checked this call's prototype; verify it doesn't modify errno.
-  if (!I.onlyReadsMemory())
+  // Do not perform optimizations for call sites that require strict
+  // floating-point semantics.
+  if (!I.onlyReadsMemory() || I.isStrictFP())
     return false;
 
   SDNodeFlags Flags;
@@ -9445,11 +9449,10 @@ void SelectionDAGBuilder::visitCall(const CallInst &I) {
 
     // Check for well-known libc/libm calls.  If the function is internal, it
     // can't be a library call.  Don't do the check if marked as nobuiltin for
-    // some reason or the call site requires strict floating point semantics.
+    // some reason.
     LibFunc Func;
-    if (!I.isNoBuiltin() && !I.isStrictFP() && !F->hasLocalLinkage() &&
-        F->hasName() && LibInfo->getLibFunc(*F, Func) &&
-        LibInfo->hasOptimizedCodeGen(Func)) {
+    if (!I.isNoBuiltin() && !F->hasLocalLinkage() && F->hasName() &&
+        LibInfo->getLibFunc(*F, Func) && LibInfo->hasOptimizedCodeGen(Func)) {
       switch (Func) {
       default: break;
       case LibFunc_bcmp:
diff --git a/llvm/test/CodeGen/PowerPC/milicode32.ll b/llvm/test/CodeGen/PowerPC/milicode32.ll
index 78d036202fe4e..09239fb9d1b09 100644
--- a/llvm/test/CodeGen/PowerPC/milicode32.ll
+++ b/llvm/test/CodeGen/PowerPC/milicode32.ll
@@ -64,8 +64,9 @@ entry:
   %str.addr = alloca ptr, align 4
   store ptr %str, ptr %str.addr, align 4
   %0 = load ptr, ptr %str.addr, align 4
-  %call = call i32 @strlen(ptr noundef %0)
+  %call = call i32 @strlen(ptr noundef %0) #0
   ret i32 %call
 }
 
 declare i32 @strlen(ptr noundef) nounwind
+attributes #0 = { strictfp }

@diggerlin diggerlin requested review from RolandF77 and arsenm October 28, 2025 19:11
@diggerlin diggerlin changed the title [LLC] Let strictfp attribute only work for libm [LLC] Make strictfp attribute only restricts for libm and make non-math optimizations possible Oct 28, 2025
@diggerlin
Copy link
Contributor Author

Friendly reminder — any feedback on this patch when you have a moment?

Copy link
Contributor

@lei137 lei137 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.
Thx

@diggerlin diggerlin requested a review from arsenm November 4, 2025 14:54
@arsenm arsenm changed the title [LLC] Make strictfp attribute only restricts for libm and make non-math optimizations possible [DAG] Make strictfp attribute only restricts for libm and make non-math optimizations possible Nov 4, 2025
@diggerlin
Copy link
Contributor Author

diggerlin commented Nov 11, 2025

Just wanted to kindly follow up on my previous message in case it got buried.
When you have a moment, could you please take another look. If you do not have other comment , I will merge the patch.
Thanks again for your time and help. @arsenm

@diggerlin diggerlin merged commit 85d2b10 into llvm:main Nov 11, 2025
10 checks passed
@llvm-ci
Copy link

llvm-ci commented Nov 11, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-ubuntu-22-cmake-build-only running on rocm-docker-ubu-22 while building llvm at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/203/builds/28789

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[1690/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ScheduleDAG.cpp.o
[1691/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SelectOptimize.cpp.o
[1692/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ShrinkWrap.cpp.o
[1693/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ResetMachineFunctionPass.cpp.o
[1694/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ProcessImplicitDefs.cpp.o
[1695/8200] Building X86GenFastISel.inc...
[1696/8200] Building X86GenGlobalISel.inc...
[1697/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StaticDataAnnotator.cpp.o
[1698/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SpillPlacement.cpp.o
[1699/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o
FAILED: lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o 
ccache /usr/bin/c++ -DGTEST_HAS_RTTI=0 -DLLVM_EXPORTS -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib/CodeGen -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/include -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-array-bounds -Wno-stringop-overread -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -fPIC  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++17 -MD -MT lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o -MF lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o.d -o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o -c /home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp
/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp: In function ‘llvm::SmallVector<llvm::BBClusterInfo> createBBClusterInfoForFunction(llvm::MachineFunction&, llvm::BasicBlockMatchingAndInference*)’:
/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp:190:12: error: could not convert ‘BBClusterInfos’ from ‘SmallVector<[...],4>’ to ‘SmallVector<[...],3>’
  190 |     return BBClusterInfos;
      |            ^~~~~~~~~~~~~~
      |            |
      |            SmallVector<[...],4>
/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp:250:10: error: could not convert ‘BBClusterInfos’ from ‘SmallVector<[...],4>’ to ‘SmallVector<[...],3>’
  250 |   return BBClusterInfos;
      |          ^~~~~~~~~~~~~~
      |          |
      |          SmallVector<[...],4>
[1700/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StaticDataSplitter.cpp.o
[1701/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackMapLivenessAnalysis.cpp.o
[1702/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SlotIndexes.cpp.o
[1703/8200] Building X86GenDAGISel.inc...
[1704/8200] Building X86GenSubtargetInfo.inc...
[1705/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackMaps.cpp.o
[1706/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackFrameLayoutAnalysisPass.cpp.o
[1707/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackSlotColoring.cpp.o
[1708/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TailDuplication.cpp.o
[1709/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SwiftErrorValueTracking.cpp.o
[1710/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetFrameLoweringImpl.cpp.o
[1711/8200] Building X86GenInstrInfo.inc...
[1712/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SwitchLoweringUtils.cpp.o
[1713/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackProtector.cpp.o
[1714/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackColoring.cpp.o
[1715/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SplitKit.cpp.o
[1716/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TailDuplicator.cpp.o
[1717/8200] Building AMDGPUGenMCPseudoLowering.inc...
[1718/8200] Building AMDGPUGenPreLegalizeGICombiner.inc...
[1719/8200] Building AMDGPUGenPostLegalizeGICombiner.inc...
[1720/8200] Building AMDGPUGenRegBankGICombiner.inc...
[1721/8200] Building AMDGPUGenDisassemblerTables.inc...
[1722/8200] Building AMDGPUGenSubtargetInfo.inc...
[1723/8200] Building AMDGPUGenMCCodeEmitter.inc...
[1724/8200] Building AMDGPUGenSearchableTables.inc...
[1725/8200] Building AMDGPUGenAsmWriter.inc...
Step 7 (build cmake config) failure: build cmake config (failure)
...
[1690/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ScheduleDAG.cpp.o
[1691/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SelectOptimize.cpp.o
[1692/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ShrinkWrap.cpp.o
[1693/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ResetMachineFunctionPass.cpp.o
[1694/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ProcessImplicitDefs.cpp.o
[1695/8200] Building X86GenFastISel.inc...
[1696/8200] Building X86GenGlobalISel.inc...
[1697/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StaticDataAnnotator.cpp.o
[1698/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SpillPlacement.cpp.o
[1699/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o
FAILED: lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o 
ccache /usr/bin/c++ -DGTEST_HAS_RTTI=0 -DLLVM_EXPORTS -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/lib/CodeGen -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/build/include -I/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-array-bounds -Wno-stringop-overread -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -fPIC  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++17 -MD -MT lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o -MF lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o.d -o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o -c /home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp
/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp: In function ‘llvm::SmallVector<llvm::BBClusterInfo> createBBClusterInfoForFunction(llvm::MachineFunction&, llvm::BasicBlockMatchingAndInference*)’:
/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp:190:12: error: could not convert ‘BBClusterInfos’ from ‘SmallVector<[...],4>’ to ‘SmallVector<[...],3>’
  190 |     return BBClusterInfos;
      |            ^~~~~~~~~~~~~~
      |            |
      |            SmallVector<[...],4>
/home/botworker/bbot/amdgpu-offload-ubuntu-22-cmake-build-only/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp:250:10: error: could not convert ‘BBClusterInfos’ from ‘SmallVector<[...],4>’ to ‘SmallVector<[...],3>’
  250 |   return BBClusterInfos;
      |          ^~~~~~~~~~~~~~
      |          |
      |          SmallVector<[...],4>
[1700/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StaticDataSplitter.cpp.o
[1701/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackMapLivenessAnalysis.cpp.o
[1702/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SlotIndexes.cpp.o
[1703/8200] Building X86GenDAGISel.inc...
[1704/8200] Building X86GenSubtargetInfo.inc...
[1705/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackMaps.cpp.o
[1706/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackFrameLayoutAnalysisPass.cpp.o
[1707/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackSlotColoring.cpp.o
[1708/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TailDuplication.cpp.o
[1709/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SwiftErrorValueTracking.cpp.o
[1710/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TargetFrameLoweringImpl.cpp.o
[1711/8200] Building X86GenInstrInfo.inc...
[1712/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SwitchLoweringUtils.cpp.o
[1713/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackProtector.cpp.o
[1714/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/StackColoring.cpp.o
[1715/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/SplitKit.cpp.o
[1716/8200] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/TailDuplicator.cpp.o
[1717/8200] Building AMDGPUGenMCPseudoLowering.inc...
[1718/8200] Building AMDGPUGenPreLegalizeGICombiner.inc...
[1719/8200] Building AMDGPUGenPostLegalizeGICombiner.inc...
[1720/8200] Building AMDGPUGenRegBankGICombiner.inc...
[1721/8200] Building AMDGPUGenDisassemblerTables.inc...
[1722/8200] Building AMDGPUGenSubtargetInfo.inc...
[1723/8200] Building AMDGPUGenMCCodeEmitter.inc...
[1724/8200] Building AMDGPUGenSearchableTables.inc...
[1725/8200] Building AMDGPUGenAsmWriter.inc...

@llvm-ci
Copy link

llvm-ci commented Nov 11, 2025

LLVM Buildbot has detected a new failure on builder llvm-clang-x86_64-sie-ubuntu-fast running on sie-linux-worker while building llvm at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/144/builds/39887

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
10.106 [3384/40/1201] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ConstructionContext.cpp.o
10.130 [3383/40/1202] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CFGStmtMap.cpp.o
10.182 [3382/40/1203] Building X86GenFastISel.inc...
10.281 [3381/40/1204] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CFGReachabilityAnalysis.cpp.o
10.620 [3380/40/1205] Building CXX object tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/HeuristicResolver.cpp.o
10.880 [3379/40/1206] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/PostOrderCFGView.cpp.o
11.046 [3378/40/1207] Building X86GenDAGISel.inc...
11.255 [3377/40/1208] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/Dominators.cpp.o
11.434 [3376/40/1209] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/BodyFarm.cpp.o
11.955 [3375/40/1210] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o
FAILED: lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o 
CCACHE_CPP2=yes CCACHE_HASHDIR=yes CCACHE_SLOPPINESS=pch_defines,time_macros /usr/bin/ccache /usr/bin/g++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/lib/CodeGen -I/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/llvm/lib/CodeGen -I/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/build/include -I/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-array-bounds -Wno-stringop-overread -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -std=c++17 -MD -MT lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o -MF lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o.d -o lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicBlockSections.cpp.o -c /home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp
/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp: In function ‘llvm::SmallVector<llvm::BBClusterInfo> createBBClusterInfoForFunction(llvm::MachineFunction&, llvm::BasicBlockMatchingAndInference*)’:
/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp:190:12: error: could not convert ‘BBClusterInfos’ from ‘SmallVector<[...],4>’ to ‘SmallVector<[...],3>’
  190 |     return BBClusterInfos;
      |            ^~~~~~~~~~~~~~
      |            |
      |            SmallVector<[...],4>
/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp:250:10: error: could not convert ‘BBClusterInfos’ from ‘SmallVector<[...],4>’ to ‘SmallVector<[...],3>’
  250 |   return BBClusterInfos;
      |          ^~~~~~~~~~~~~~
      |          |
      |          SmallVector<[...],4>
12.061 [3375/39/1211] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/IntervalPartition.cpp.o
12.252 [3375/38/1212] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ProgramPoint.cpp.o
13.211 [3375/37/1213] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/ReachableCode.cpp.o
13.688 [3375/36/1214] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/PathDiagnostic.cpp.o
13.891 [3375/35/1215] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/AsmPrinterDwarf.cpp.o
14.194 [3375/34/1216] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CallGraph.cpp.o
14.497 [3375/33/1217] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/AnalysisDeclContext.cpp.o
14.719 [3375/32/1218] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/Consumed.cpp.o
14.992 [3375/31/1219] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CalledOnceCheck.cpp.o
15.327 [3375/30/1220] Building CXX object tools/clang/lib/Analysis/CMakeFiles/obj.clangAnalysis.dir/CloneDetection.cpp.o
15.358 [3375/29/1221] Building X86GenSubtargetInfo.inc...
15.701 [3375/28/1222] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DwarfCFIException.cpp.o
15.806 [3375/27/1223] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DwarfStringPool.cpp.o
16.396 [3375/26/1224] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DebugHandlerBase.cpp.o
16.491 [3375/25/1225] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/AsmPrinterInlineAsm.cpp.o
16.699 [3375/24/1226] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DebugLocStream.cpp.o
16.830 [3375/23/1227] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/ErlangGCPrinter.cpp.o
16.951 [3375/22/1228] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/WinCFGuard.cpp.o
17.316 [3375/21/1229] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DbgEntityHistoryCalculator.cpp.o
17.401 [3375/20/1230] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DIE.cpp.o
17.456 [3375/19/1231] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/EHStreamer.cpp.o
17.465 [3375/18/1232] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DIEHash.cpp.o
17.490 [3375/17/1233] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/OcamlGCPrinter.cpp.o
17.492 [3375/16/1234] Building X86GenInstrInfo.inc...
17.786 [3375/15/1235] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/PseudoProbePrinter.cpp.o
18.353 [3375/14/1236] Building CXX object lib/CodeGen/AsmPrinter/CMakeFiles/LLVMAsmPrinter.dir/DwarfExpression.cpp.o

@diggerlin
Copy link
Contributor Author

I checked the error information,

/home/buildbot/buildbot-root/llvm-clang-x86_64-sie-ubuntu-fast/llvm-project/llvm/lib/CodeGen/BasicBlockSections.cpp:190:12: error: could not convert ‘BBClusterInfos’ from ‘SmallVector<[...],4>’ to ‘SmallVector<[...],3>’
  190 |     return BBClusterInfos;
      |            ^~~~~~~~~~~~~~
      |            |
      |            SmallVector<[...],4>
      

it is not related to this patch

@llvm-ci
Copy link

llvm-ci commented Nov 11, 2025

LLVM Buildbot has detected a new failure on builder lld-x86_64-ubuntu-fast running on as-builder-4 while building llvm at step 6 "test-build-unified-tree-check-all".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/33/builds/26288

Here is the relevant piece of the build log for the reference
Step 6 (test-build-unified-tree-check-all) failure: test (failure)
******************** TEST 'LLVM :: ExecutionEngine/JITLink/systemz/ELF_systemz_reloc_call_pic.s' FAILED ********************
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
rm -rf /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp && mkdir -p /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp
# executed command: rm -rf /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp
# executed command: mkdir -p /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp
# RUN: at line 3
/home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/llvm-mc -triple=systemz-unknown-linux -position-independent      -filetype=obj -o  /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp/elf_pic_reloc.o /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/ExecutionEngine/JITLink/systemz/ELF_systemz_reloc_call_pic.s
# executed command: /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/llvm-mc -triple=systemz-unknown-linux -position-independent -filetype=obj -o /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp/elf_pic_reloc.o /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/ExecutionEngine/JITLink/systemz/ELF_systemz_reloc_call_pic.s
# RUN: at line 6
/home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/llvm-jitlink -noexec      -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096      -abs external_data=0x1      -abs extern_out_of_range32=0x7fff00000000      -abs extern_in_range32=0xffe00000      -check /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/ExecutionEngine/JITLink/systemz/ELF_systemz_reloc_call_pic.s /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp/elf_pic_reloc.o
# executed command: /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/llvm-jitlink -noexec -slab-allocate 100Kb -slab-address 0xfff00000 -slab-page-size 4096 -abs external_data=0x1 -abs extern_out_of_range32=0x7fff00000000 -abs extern_in_range32=0xffe00000 -check /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/ExecutionEngine/JITLink/systemz/ELF_systemz_reloc_call_pic.s /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/test/ExecutionEngine/JITLink/systemz/Output/ELF_systemz_reloc_call_pic.s.tmp/elf_pic_reloc.o
# .---command stderr------------
# | Expression '*{4}(stub_addr(elf_pic_reloc.o, extern_out_of_range32) + 2) =  (got_addr(elf_pic_reloc.o, extern_out_of_range32) -    stub_addr(elf_pic_reloc.o, extern_out_of_range32)) >> 1' is false: 0xfffffff0 != 0x7ffffffffffffff0
# | /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/build/bin/llvm-jitlink: Some checks in /home/buildbot/worker/as-builder-4/ramdisk/lld-x86_64/llvm-project/llvm/test/ExecutionEngine/JITLink/systemz/ELF_systemz_reloc_call_pic.s failed
# `-----------------------------
# error: command failed with exit status: 1

--

********************


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend:PowerPC llvm:SelectionDAG SelectionDAGISel as well

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants