Skip to content

VectorCombine: teach foldExtractedCmps about samesign #122883

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jan 14, 2025

Conversation

artagnon
Copy link
Contributor

Follow up on 4a0d53a (PatternMatch: migrate to CmpPredicate) to get rid of one of the FIXMEs it introduced by replacing a predicate comparison with CmpPredicate::getMatching.

Follow up on 4a0d53a (PatternMatch: migrate to CmpPredicate) to get rid
of one of the FIXMEs it introduced by replacing a predicate comparison
with CmpPredicate::getMatching.
@llvmbot
Copy link
Member

llvmbot commented Jan 14, 2025

@llvm/pr-subscribers-vectorizers

@llvm/pr-subscribers-llvm-transforms

Author: Ramkumar Ramachandra (artagnon)

Changes

Follow up on 4a0d53a (PatternMatch: migrate to CmpPredicate) to get rid of one of the FIXMEs it introduced by replacing a predicate comparison with CmpPredicate::getMatching.


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

2 Files Affected:

  • (modified) llvm/lib/Transforms/Vectorize/VectorCombine.cpp (+6-4)
  • (modified) llvm/test/Transforms/VectorCombine/X86/extract-cmp-binop.ll (+37)
diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
index 1a669b5058e799..22efd2ca72bfce 100644
--- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
@@ -1097,10 +1097,12 @@ bool VectorCombine::foldExtractedCmps(Instruction &I) {
   Instruction *I0, *I1;
   Constant *C0, *C1;
   CmpPredicate P0, P1;
-  // FIXME: Use CmpPredicate::getMatching here.
   if (!match(B0, m_Cmp(P0, m_Instruction(I0), m_Constant(C0))) ||
-      !match(B1, m_Cmp(P1, m_Instruction(I1), m_Constant(C1))) ||
-      P0 != static_cast<CmpInst::Predicate>(P1))
+      !match(B1, m_Cmp(P1, m_Instruction(I1), m_Constant(C1))))
+    return false;
+
+  auto MatchingPred = CmpPredicate::getMatching(P0, P1);
+  if (!MatchingPred)
     return false;
 
   // The compare operands must be extracts of the same vector with constant
@@ -1121,7 +1123,7 @@ bool VectorCombine::foldExtractedCmps(Instruction &I) {
 
   // The original scalar pattern is:
   // binop i1 (cmp Pred (ext X, Index0), C0), (cmp Pred (ext X, Index1), C1)
-  CmpInst::Predicate Pred = P0;
+  CmpInst::Predicate Pred = *MatchingPred;
   unsigned CmpOpcode =
       CmpInst::isFPPredicate(Pred) ? Instruction::FCmp : Instruction::ICmp;
   auto *VecTy = dyn_cast<FixedVectorType>(X->getType());
diff --git a/llvm/test/Transforms/VectorCombine/X86/extract-cmp-binop.ll b/llvm/test/Transforms/VectorCombine/X86/extract-cmp-binop.ll
index 775f2d2da5721f..3346ebf0997f1d 100644
--- a/llvm/test/Transforms/VectorCombine/X86/extract-cmp-binop.ll
+++ b/llvm/test/Transforms/VectorCombine/X86/extract-cmp-binop.ll
@@ -66,6 +66,22 @@ define i1 @icmp_xor_v4i32(<4 x i32> %a) {
   ret i1 %r
 }
 
+define i1 @icmp_samesign_xor_v4i32(<4 x i32> %a) {
+; CHECK-LABEL: @icmp_samesign_xor_v4i32(
+; CHECK-NEXT:    [[TMP1:%.*]] = icmp sgt <4 x i32> [[A:%.*]], <i32 poison, i32 -8, i32 poison, i32 42>
+; CHECK-NEXT:    [[SHIFT:%.*]] = shufflevector <4 x i1> [[TMP1]], <4 x i1> poison, <4 x i32> <i32 poison, i32 3, i32 poison, i32 poison>
+; CHECK-NEXT:    [[TMP2:%.*]] = xor <4 x i1> [[SHIFT]], [[TMP1]]
+; CHECK-NEXT:    [[R:%.*]] = extractelement <4 x i1> [[TMP2]], i64 1
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %e1 = extractelement <4 x i32> %a, i32 3
+  %e2 = extractelement <4 x i32> %a, i32 1
+  %cmp1 = icmp samesign ugt i32 %e1, 42
+  %cmp2 = icmp sgt i32 %e2, -8
+  %r = xor i1 %cmp1, %cmp2
+  ret i1 %r
+}
+
 ; add is not canonical (should be xor), but that is ok.
 
 define i1 @icmp_add_v8i32(<8 x i32> %a) {
@@ -146,6 +162,27 @@ define i1 @icmp_xor_v4i32_multiuse(<4 x i32> %a) {
   ret i1 %r
 }
 
+define i1 @icmp_samesign_xor_v4i32_multiuse(<4 x i32> %a) {
+; CHECK-LABEL: @icmp_samesign_xor_v4i32_multiuse(
+; CHECK-NEXT:    [[E2:%.*]] = extractelement <4 x i32> [[A:%.*]], i32 1
+; CHECK-NEXT:    call void @use(i32 [[E2]])
+; CHECK-NEXT:    [[TMP1:%.*]] = icmp sgt <4 x i32> [[A]], <i32 poison, i32 -8, i32 poison, i32 42>
+; CHECK-NEXT:    [[SHIFT:%.*]] = shufflevector <4 x i1> [[TMP1]], <4 x i1> poison, <4 x i32> <i32 poison, i32 3, i32 poison, i32 poison>
+; CHECK-NEXT:    [[TMP2:%.*]] = xor <4 x i1> [[SHIFT]], [[TMP1]]
+; CHECK-NEXT:    [[R:%.*]] = extractelement <4 x i1> [[TMP2]], i64 1
+; CHECK-NEXT:    call void @use(i1 [[R]])
+; CHECK-NEXT:    ret i1 [[R]]
+;
+  %e1 = extractelement <4 x i32> %a, i32 3
+  %e2 = extractelement <4 x i32> %a, i32 1
+  call void @use(i32 %e2)
+  %cmp1 = icmp sgt i32 %e1, 42
+  %cmp2 = icmp samesign ugt i32 %e2, -8
+  %r = xor i1 %cmp1, %cmp2
+  call void @use(i1 %r)
+  ret i1 %r
+}
+
 ; Negative test - this could CSE/simplify.
 
 define i1 @same_extract_index(<4 x i32> %a) {

Copy link
Collaborator

@RKSimon RKSimon left a comment

Choose a reason for hiding this comment

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

LGTM - cheers

@artagnon artagnon merged commit e409204 into llvm:main Jan 14, 2025
11 checks passed
@artagnon artagnon deleted the vc-samesign-getmatching branch January 14, 2025 12:04
@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 14, 2025

LLVM Buildbot has detected a new failure on builder llvm-clang-x86_64-expensive-checks-debian running on gribozavr4 while building llvm at step 6 "test-build-unified-tree-check-all".

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

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 :: tools/llvm-gsymutil/ARM_AArch64/macho-merged-funcs-dwarf.yaml' FAILED ********************
Exit Code: 1

Command Output (stdout):
--
Input file: /b/1/llvm-clang-x86_64-expensive-checks-debian/build/test/tools/llvm-gsymutil/ARM_AArch64/Output/macho-merged-funcs-dwarf.yaml.tmp.dSYM
Output file (aarch64): /b/1/llvm-clang-x86_64-expensive-checks-debian/build/test/tools/llvm-gsymutil/ARM_AArch64/Output/macho-merged-funcs-dwarf.yaml.tmp.default.gSYM
Loaded 3 functions from DWARF.
Loaded 3 functions from symbol table.
warning: same address range contains different debug info. Removing:
[0x0000000000000248 - 0x0000000000000270): Name=0x00000047
addr=0x0000000000000248, file=  3, line=  5
addr=0x0000000000000254, file=  3, line=  7
addr=0x0000000000000258, file=  3, line=  9
addr=0x000000000000025c, file=  3, line=  8
addr=0x0000000000000260, file=  3, line= 11
addr=0x0000000000000264, file=  3, line= 10
addr=0x0000000000000268, file=  3, line=  6


In favor of this one:
[0x0000000000000248 - 0x0000000000000270): Name=0x00000030
addr=0x0000000000000248, file=  2, line=  5
addr=0x0000000000000254, file=  2, line=  7
addr=0x0000000000000258, file=  2, line=  9
addr=0x000000000000025c, file=  2, line=  8
addr=0x0000000000000260, file=  2, line= 11
addr=0x0000000000000264, file=  2, line= 10
addr=0x0000000000000268, file=  2, line=  6


warning: same address range contains different debug info. Removing:
[0x0000000000000248 - 0x0000000000000270): Name=0x00000030
addr=0x0000000000000248, file=  2, line=  5
addr=0x0000000000000254, file=  2, line=  7
addr=0x0000000000000258, file=  2, line=  9
addr=0x000000000000025c, file=  2, line=  8
addr=0x0000000000000260, file=  2, line= 11
addr=0x0000000000000264, file=  2, line= 10
addr=0x0000000000000268, file=  2, line=  6


In favor of this one:
[0x0000000000000248 - 0x0000000000000270): Name=0x00000001
addr=0x0000000000000248, file=  1, line=  5
addr=0x0000000000000254, file=  1, line=  7
addr=0x0000000000000258, file=  1, line=  9
addr=0x000000000000025c, file=  1, line=  8
addr=0x0000000000000260, file=  1, line= 11
addr=0x0000000000000264, file=  1, line= 10
...

@fhahn
Copy link
Contributor

fhahn commented Jan 14, 2025

It looks like this introduced a new crash:

target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "arm64-apple-macosx15.0.0"

define fastcc float @test() {
entry:
  br label %if.end407

if.then374:                                       ; No predecessors!
  br label %if.end407

if.end407:                                        ; preds = %if.then374, %entry
  %overflow.1 = phi double [ 0.000000e+00, %entry ], [ 0.000000e+00, %if.then374 ]
  %0 = load i32, ptr null, align 4
  %cmp442 = fcmp ogt double %overflow.1, 0.000000e+00
  %cmp446 = icmp samesign ugt i32 %0, 0
  %or.cond238 = and i1 %cmp442, %cmp446
  ret float 0.000000e+00
}
$ bin/opt -p vector-combine reduced.ll
Unknown predicate!
UNREACHABLE executed at ../../../llvm/lib/IR/Instructions.cpp:3852!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.

@artagnon
Copy link
Contributor Author

Thanks, the issue is in CmpPredicate::getMatching() that implicitly assumes that both predicates are from integer-compares. Will fix shortly.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 14, 2025

LLVM Buildbot has detected a new failure on builder premerge-monolithic-linux running on premerge-linux-1 while building llvm at step 6 "build-unified-tree".

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

Here is the relevant piece of the build log for the reference
Step 6 (build-unified-tree) failure: build (failure)
...
22.464 [2913/58/392] Generating obj.libclc.dir/cypress-r600--/r600/lib/workitem/get_global_offset.cl.bc
22.469 [2912/58/393] Generating obj.libclc.dir/tahiti-amdgcn-mesa-mesa3d/generic/lib/math/clc_exp10.cl.bc
22.469 [2911/58/394] Generating obj.libclc.dir/amdgcn--amdhsa/generic/lib/integer/abs.cl.bc
22.471 [2910/58/395] Generating obj.libclc.dir/amdgcn--amdhsa/clc/lib/generic/relational/clc_select.cl.bc
22.481 [2909/58/396] Generating obj.libclc.dir/amdgcn--amdhsa/clc/lib/generic/shared/clc_clamp.cl.bc
22.483 [2908/58/397] Generating obj.libclc.dir/amdgcn--amdhsa/amdgpu/lib/math/half_log2.cl.bc
22.487 [2907/58/398] Generating obj.libclc.dir/amdgcn--amdhsa/amdgcn/lib/mem_fence/fence.cl.bc
22.508 [2906/58/399] Generating obj.libclc.dir/amdgcn--amdhsa/amdgpu/lib/math/half_log.cl.bc
22.522 [2905/58/400] Generating obj.libclc.dir/amdgcn--amdhsa/amdgpu/lib/math/half_log10.cl.bc
22.526 [2904/58/401] Generating obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc
FAILED: tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc 
cd /build/buildbot/premerge-monolithic-linux/build/tools/libclc && /build/buildbot/premerge-monolithic-linux/build/bin/clang-20 -target amdgcn-- -c -fno-builtin -nostdlib -D__CLC_INTERNAL -DCLC_AMDGCN -I/build/buildbot/premerge-monolithic-linux/llvm-project/libclc/clc/include -Wno-bitwise-conditional-parentheses -mcpu=tahiti -I/build/buildbot/premerge-monolithic-linux/llvm-project/libclc/generic/include -I/build/buildbot/premerge-monolithic-linux/llvm-project/libclc/./generic/lib/math -MD -MF /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc.d -MT /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc -cl-no-stdinc -emit-llvm -o /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc -x cl /build/buildbot/premerge-monolithic-linux/llvm-project/libclc/./generic/lib/math/asinh.cl && /etc/cmake/bin/cmake -E cmake_transform_depfile Ninja gccdepfile /build/buildbot/premerge-monolithic-linux/llvm-project/llvm /build/buildbot/premerge-monolithic-linux/llvm-project/libclc /build/buildbot/premerge-monolithic-linux/build /build/buildbot/premerge-monolithic-linux/build/tools/libclc /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc.d /build/buildbot/premerge-monolithic-linux/build/CMakeFiles/d/911d22317c463a8a227e1bfe650b88452618a018fed265277cd9077c1a87d9a4.d
Unknown predicate!
UNREACHABLE executed at /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/IR/Instructions.cpp:3852!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /build/buildbot/premerge-monolithic-linux/build/bin/clang-20 -target amdgcn-- -c -fno-builtin -nostdlib -D__CLC_INTERNAL -DCLC_AMDGCN -I/build/buildbot/premerge-monolithic-linux/llvm-project/libclc/clc/include -Wno-bitwise-conditional-parentheses -mcpu=tahiti -I/build/buildbot/premerge-monolithic-linux/llvm-project/libclc/generic/include -I/build/buildbot/premerge-monolithic-linux/llvm-project/libclc/./generic/lib/math -MD -MF /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc.d -MT /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc -cl-no-stdinc -emit-llvm -o /build/buildbot/premerge-monolithic-linux/build/tools/libclc/obj.libclc.dir/tahiti-amdgcn--/generic/lib/math/asinh.cl.bc -x cl /build/buildbot/premerge-monolithic-linux/llvm-project/libclc/./generic/lib/math/asinh.cl
1.	<eof> parser at end of file
2.	Optimizer
3.	Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O2>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "/build/buildbot/premerge-monolithic-linux/llvm-project/libclc/./generic/lib/math/asinh.cl"
4.	Running pass "vector-combine" on function "_Z5asinhd"
 #0 0x0000556c4e7c9718 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Support/Unix/Signals.inc:800:13
 #1 0x0000556c4e7c724e llvm::sys::RunSignalHandlers() /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Support/Signals.cpp:106:18
 #2 0x0000556c4e730d56 HandleCrash /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
 #3 0x0000556c4e730d56 CrashRecoverySignalHandler(int) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:390:51
 #4 0x00007bbb8bb6d520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x00007bbb8bbc19fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #6 0x00007bbb8bb6d476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #7 0x00007bbb8bb537f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #8 0x0000556c4e738ed0 llvm::install_out_of_memory_new_handler() /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Support/ErrorHandling.cpp:195:0
 #9 0x0000556c4e182d58 getUnsignedPredicate /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/IR/Instructions.cpp:3599:14
#10 0x0000556c4e182d58 llvm::ICmpInst::getFlippedSignednessPredicate(llvm::CmpInst::Predicate) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/IR/Instructions.cpp:3848:12
#11 0x0000556c4e182f71 llvm::CmpPredicate::getMatching(llvm::CmpPredicate, llvm::CmpPredicate) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/IR/Instructions.cpp:3946:14
#12 0x0000556c50394c34 _M_is_engaged /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:433:58
#13 0x0000556c50394c34 operator bool /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/optional:942:22
#14 0x0000556c50394c34 foldExtractedCmps /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp:1105:8
#15 0x0000556c50394c34 (anonymous namespace)::VectorCombine::run()::$_0::operator()(llvm::Instruction&) const /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp:3239:25
#16 0x0000556c50390c63 run /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp:0:7
#17 0x0000556c50390c63 llvm::VectorCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/Transforms/Vectorize/VectorCombine.cpp:3283:17
#18 0x0000556c4ff2d8cd llvm::detail::PassModel<llvm::Function, llvm::VectorCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:5
#19 0x0000556c4e1e713a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:85:8
#20 0x0000556c4c2b020d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:5
#21 0x0000556c4e1eb1a7 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/lib/IR/PassManager.cpp:129:23
#22 0x0000556c4c2bb95d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:5
#23 0x0000556c4e1e61ea llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/IR/PassManagerImpl.h:85:8
#24 0x0000556c4f03f0be isSmall /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:233:33
#25 0x0000556c4f03f0be ~SmallPtrSetImplBase /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:84:10
#26 0x0000556c4f03f0be ~PreservedAnalyses /build/buildbot/premerge-monolithic-linux/llvm-project/llvm/include/llvm/IR/Analysis.h:111:7
#27 0x0000556c4f03f0be (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) /build/buildbot/premerge-monolithic-linux/llvm-project/clang/lib/CodeGen/BackendUtil.cpp:1175:5

@mdfazlay
Copy link
Contributor

mdfazlay commented Jan 15, 2025

artagnon

@artagnon, when do we expect to have a fix? It is breaking our build too.

@artagnon
Copy link
Contributor Author

@artagnon, when do we expect to have a fix? It is breaking our build too.

Already merged. See #122924.

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

Successfully merging this pull request may close these issues.

6 participants