Skip to content

Conversation

artagnon
Copy link
Contributor

1aded51 ([LAA] Prepare to handle diff type sizes (NFC)) was supposed to be a non-functional patch, but introduced functional changes as known-non-negative and known-non-positive is not equivalent to !known-non-zero. Fix this.

1aded51 ([LAA] Prepare to handle diff type sizes (NFC)) was supposed to
be a non-functional patch, but introduced functional changes as
known-non-negative and known-non-positive is not equivalent to
!known-non-zero. Fix this.
@llvmbot llvmbot added the llvm:analysis Includes value tracking, cost tables and constant folding label Sep 25, 2025
@llvmbot
Copy link
Member

llvmbot commented Sep 25, 2025

@llvm/pr-subscribers-llvm-analysis

Author: Ramkumar Ramachandra (artagnon)

Changes

1aded51 ([LAA] Prepare to handle diff type sizes (NFC)) was supposed to be a non-functional patch, but introduced functional changes as known-non-negative and known-non-positive is not equivalent to !known-non-zero. Fix this.


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

2 Files Affected:

  • (modified) llvm/lib/Analysis/LoopAccessAnalysis.cpp (+2-1)
  • (modified) llvm/test/Analysis/LoopAccessAnalysis/depend_diff_types.ll (+39)
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index d6ad855cad9a7..512ae415d1c3b 100644
--- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp
+++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
@@ -2122,7 +2122,8 @@ MemoryDepChecker::getDependenceDistanceStrideAndSize(
   // dependence.
   TypeSize AStoreSz = DL.getTypeStoreSize(ATy);
   TypeSize BStoreSz = DL.getTypeStoreSize(BTy);
-  if (AStoreSz != BStoreSz && !SE.isKnownNonZero(Dist)) {
+  if (AStoreSz != BStoreSz && SE.isKnownNonPositive(Dist) &&
+      SE.isKnownNonNegative(Dist)) {
     LLVM_DEBUG(dbgs() << "LAA: possibly zero dependence distance with "
                          "different type sizes\n");
     return Dependence::Unknown;
diff --git a/llvm/test/Analysis/LoopAccessAnalysis/depend_diff_types.ll b/llvm/test/Analysis/LoopAccessAnalysis/depend_diff_types.ll
index 023a8c056968f..c367b31f6d445 100644
--- a/llvm/test/Analysis/LoopAccessAnalysis/depend_diff_types.ll
+++ b/llvm/test/Analysis/LoopAccessAnalysis/depend_diff_types.ll
@@ -187,6 +187,45 @@ exit:
   ret void
 }
 
+; In the following test, dependence distance is possibly zero,
+; but this is not equivalent to the condition known-non-positive
+; and known-non-negative.
+
+define void @possibly_zero_dist_diff_typesz(ptr %p) {
+; CHECK-LABEL: 'possibly_zero_dist_diff_typesz'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Memory dependences are safe
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:        Forward:
+; CHECK-NEXT:            %ld.p = load i32, ptr %gep.p.iv.i32, align 1 ->
+; CHECK-NEXT:            store i16 %trunc, ptr %gep.p.iv.i16, align 1
+; CHECK-EMPTY:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+
+loop:
+  %iv = phi i16 [ 0, %entry ], [ %iv.next, %loop ]
+  %gep.p.iv.i32 = getelementptr inbounds nuw i32, ptr %p, i16 %iv
+  %ld.p = load i32, ptr %gep.p.iv.i32, align 1
+  %trunc = trunc i32 %ld.p to i16
+  %gep.p.iv.i16 = getelementptr inbounds nuw i16, ptr %p, i16 %iv
+  store i16 %trunc, ptr %gep.p.iv.i16, align 1
+  %iv.next = add nuw nsw i16 %iv, 1
+  %exit.cond = icmp eq i16 %iv.next, 32
+  br i1 %exit.cond, label %exit, label %loop
+
+exit:
+  ret void
+}
+
 ; In the following test, the sink is loop-invariant.
 
 define void @type_size_equivalence_sink_loopinv(ptr nocapture %vec, i64 %n) {

Copy link
Contributor

@igogo-x86 igogo-x86 left a comment

Choose a reason for hiding this comment

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

LGTM!
I tried to find a nicer way to check SCEV for zero and found this in ScalarEvolution.cpp:

    const SCEV *Zero = SE.getZero(B->getType());
    if (!SE.isKnownPredicate(CmpInst::ICMP_EQ, URem, Zero))

But I am not sure we need the strength behind isKnownPredicate and it may become non-NFC again

Copy link
Contributor

@fhahn fhahn left a comment

Choose a reason for hiding this comment

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

LGTM, thanks.

Interestign that it's needed

@artagnon artagnon merged commit 56a1cbb into llvm:main Sep 25, 2025
11 checks passed
@artagnon artagnon deleted the laa-typesz-nzdist branch September 25, 2025 14:52
@mikaelholmen
Copy link
Collaborator

Thank you! This does seem to fix the regressions we saw.

@mikaelholmen
Copy link
Collaborator

Hi again @artagnon

After some more testing we see that the following starts crashing with this patch and it still crashes on trunk (d48bda5):
clang -O2 -fwrapv bbi-110970.c -c
Result:

clang: ../lib/Analysis/LoopAccessAnalysis.cpp:2212: MemoryDepChecker::Dependence::DepType llvm::MemoryDepChecker::isDependent(const MemAccessInfo &, unsigned int, const MemAccessInfo &, unsigned int): Assertion `HasSameSize && "Accesses must have the same size"' failed.
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-all/bin/clang -O2 -fwrapv bbi-110970.c -c
1.	<eof> parser at end of file
2.	Optimizer
3.	Running pass "function<eager-inv>(drop-unnecessary-assumes,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;no-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>,slp-vectorizer,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 "bbi-110970.c"
4.	Running pass "loop-load-elim" on function "f1150"
 #0 0x000055806ec88ab6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/clang+0x8d02ab6)
 #1 0x000055806ec86205 llvm::sys::RunSignalHandlers() (build-all/bin/clang+0x8d00205)
 #2 0x000055806ec87df4 llvm::sys::CleanupOnSignal(unsigned long) (build-all/bin/clang+0x8d01df4)
 #3 0x000055806ebe920d CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #4 0x00007f08c41da990 __restore_rt (/lib64/libpthread.so.0+0x12990)
 #5 0x00007f08c1b7a52f raise (/lib64/libc.so.6+0x4e52f)
 #6 0x00007f08c1b4de65 abort (/lib64/libc.so.6+0x21e65)
 #7 0x00007f08c1b4dd39 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21d39)
 #8 0x00007f08c1b72e86 (/lib64/libc.so.6+0x46e86)
 #9 0x000055806dcbecb1 llvm::MemoryDepChecker::isDependent(llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*>>> const&, unsigned int, llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*>>> const&, unsigned int) (build-all/bin/clang+0x7d38cb1)
#10 0x000055806dcbfabd llvm::MemoryDepChecker::areDepsSafe(llvm::EquivalenceClasses<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*>>>> const&, llvm::SmallVector<llvm::PointerIntPair<llvm::Value*, 1u, bool, llvm::PointerLikeTypeTraits<llvm::Value*>, llvm::PointerIntPairInfo<llvm::Value*, 1u, llvm::PointerLikeTypeTraits<llvm::Value*>>>, 8u> const&) (build-all/bin/clang+0x7d39abd)
#11 0x000055806dcc3cd7 llvm::LoopAccessInfo::analyzeLoop(llvm::AAResults*, llvm::LoopInfo const*, llvm::TargetLibraryInfo const*, llvm::DominatorTree*) (build-all/bin/clang+0x7d3dcd7)
#12 0x000055806dcc6c39 llvm::LoopAccessInfo::LoopAccessInfo(llvm::Loop*, llvm::ScalarEvolution*, llvm::TargetTransformInfo const*, llvm::TargetLibraryInfo const*, llvm::AAResults*, llvm::DominatorTree*, llvm::LoopInfo*, llvm::AssumptionCache*, bool) (build-all/bin/clang+0x7d40c39)
#13 0x000055806dcc7512 llvm::LoopAccessInfoManager::getInfo(llvm::Loop&, bool) (build-all/bin/clang+0x7d41512)
#14 0x000055807027379e eliminateLoadsAcrossLoops(llvm::Function&, llvm::LoopInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo*, llvm::ProfileSummaryInfo*, llvm::ScalarEvolution*, llvm::AssumptionCache*, llvm::LoopAccessInfoManager&) LoopLoadElimination.cpp:0:0
#15 0x0000558070272de8 llvm::LoopLoadEliminationPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/clang+0xa2ecde8)
#16 0x000055806fe93a1d llvm::detail::PassModel<llvm::Function, llvm::LoopLoadEliminationPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#17 0x000055806e64b475 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build-all/bin/clang+0x86c5475)
#18 0x000055806c3fb8ed llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) AMDGPUTargetMachine.cpp:0:0
#19 0x000055806e64f3ce llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/clang+0x86c93ce)
#20 0x000055806c3fd05d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) AMDGPUTargetMachine.cpp:0:0
#21 0x000055806e64a475 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/clang+0x86c4475)
#22 0x000055806f45816b (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*) BackendUtil.cpp:0:0
#23 0x000055806f44dea2 clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (build-all/bin/clang+0x94c7ea2)
#24 0x000055806f464394 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (build-all/bin/clang+0x94de394)
#25 0x0000558070f59959 clang::ParseAST(clang::Sema&, bool, bool) (build-all/bin/clang+0xafd3959)
#26 0x000055806f9a0b84 clang::FrontendAction::Execute() (build-all/bin/clang+0x9a1ab84)
#27 0x000055806f90447d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (build-all/bin/clang+0x997e47d)
#28 0x000055806fab50ae clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (build-all/bin/clang+0x9b2f0ae)
#29 0x000055806bfe43c8 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (build-all/bin/clang+0x605e3c8)
#30 0x000055806bfe04c3 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) driver.cpp:0:0
#31 0x000055806bfe2928 int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(long, llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#32 0x000055806f76c7b9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) Job.cpp:0:0
#33 0x000055806ebe8e36 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (build-all/bin/clang+0x8c62e36)
#34 0x000055806f76bcc3 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (build-all/bin/clang+0x97e5cc3)
#35 0x000055806f729938 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (build-all/bin/clang+0x97a3938)
#36 0x000055806f729c57 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (build-all/bin/clang+0x97a3c57)
#37 0x000055806f743809 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (build-all/bin/clang+0x97bd809)
#38 0x000055806bfdfced clang_main(int, char**, llvm::ToolContext const&) (build-all/bin/clang+0x6059ced)
#39 0x000055806bff0286 main (build-all/bin/clang+0x606a286)
#40 0x00007f08c1b667e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#41 0x000055806bfdde6e _start (build-all/bin/clang+0x6057e6e)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 22.0.0git
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /repo/uabelho/main-github/llvm/build-all/bin
Build config: +assertions

godbolt

bbi-110970.c.gz

@artagnon
Copy link
Contributor Author

Hi again @artagnon

After some more testing we see that the following starts crashing with this patch and it still crashes on trunk (d48bda5): clang -O2 -fwrapv bbi-110970.c -c Result:

Thanks again for the subtle bug report with -fwrapv. I think it's highly unfortunate, and this is code to blame:

    if (!LoopGuards)
      LoopGuards.emplace(
          ScalarEvolution::LoopGuards::collect(InnermostLoop, SE));
    Dist = SE.applyLoopGuards(Dist, *LoopGuards);

Will fix in the morning.

@Prabhuk
Copy link
Contributor

Prabhuk commented Sep 27, 2025

We are starting to see the same assertion failure in our builders at Google.

[76239/132798](65) CC obj/third_party/github.com/google/liblc3/src/src/lc3_codec.mdct.c.o
FAILED: [code=1] obj/third_party/github.com/google/liblc3/src/src/lc3_codec.mdct.c.o 
../../prebuilt/third_party/clang/custom/bin/clang -MD -MF obj/third_party/github.com/google/liblc3/src/src/lc3_codec.mdct.c.o.d -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES -DNDEBUG=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -I../.. -Igen -I../../third_party/github.com/google/liblc3/src/include -fcolor-diagnostics -fcrash-diagnostics-dir=clang-crashreports -fcrash-diagnostics=all -gen-reproducer=error -fstack-size-section -fstack-clash-protection -ffp-contract=off --sysroot=gen/zircon/public/sysroot --target=x86_64-unknown-fuchsia -ffuchsia-api-level=4293918720 -march=x86-64-v2 -mtune=generic -mbranches-within-32B-boundaries -ffile-compilation-dir=. -no-canonical-prefixes -fno-omit-frame-pointer -momit-leaf-frame-pointer -fdata-sections -ffunction-sections -Os -flto -mllvm -wholeprogramdevirt-branch-funnel-threshold=0 -ffat-lto-objects -Xclang -debug-info-kind=constructor -g3 -grecord-gcc-switches -gdwarf-5 -gz=zstd -Wall -Wextra -Wconversion -Wextra-semi -Wimplicit-fallthrough -Wnewline-eof -Wstrict-prototypes -Wwrite-strings -Wno-sign-conversion -Wno-unused-parameter -Wnonportable-system-include-path -Wno-missing-field-initializers -Wno-extra-qualification -Wno-cast-function-type-mismatch -Wno-unknown-warning-option -Wno-missing-template-arg-list-after-template-kw -Wno-deprecated-pragma -Wno-nontrivial-memaccess -fvisibility=hidden -Werror -Wa,--fatal-warnings -ftrivial-auto-var-init=pattern -Wthread-safety -Wno-unknown-warning-option -Wno-thread-safety-reference-return -Wno-conversion -std=c11 -Wno-unterminated-string-initialization -c ../../third_party/github.com/google/liblc3/src/src/mdct.c -o obj/third_party/github.com/google/liblc3/src/src/lc3_codec.mdct.c.o
clang: llvm/lib/Analysis/LoopAccessAnalysis.cpp:2212: MemoryDepChecker::Dependence::DepType llvm::MemoryDepChecker::isDependent(const MemAccessInfo &, unsigned int, const MemAccessInfo &, unsigned int): Assertion `HasSameSize && "Accesses must have the same size"' failed.
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: ../../prebuilt/third_party/clang/custom/bin/clang -MD -MF obj/third_party/github.com/google/liblc3/src/src/lc3_codec.mdct.c.o.d -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_REMOVE_TRANSITIVE_INCLUDES -DNDEBUG=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 -I../.. -Igen -I../../third_party/github.com/google/liblc3/src/include -fcolor-diagnostics -fcrash-diagnostics-dir=clang-crashreports -fcrash-diagnostics=all -gen-reproducer=error -fstack-size-section -fstack-clash-protection -ffp-contract=off --sysroot=gen/zircon/public/sysroot --target=x86_64-unknown-fuchsia -ffuchsia-api-level=4293918720 -march=x86-64-v2 -mtune=generic -mbranches-within-32B-boundaries -ffile-compilation-dir=. -no-canonical-prefixes -fno-omit-frame-pointer -momit-leaf-frame-pointer -fdata-sections -ffunction-sections -Os -flto -mllvm -wholeprogramdevirt-branch-funnel-threshold=0 -ffat-lto-objects -Xclang -debug-info-kind=constructor -g3 -grecord-gcc-switches -gdwarf-5 -gz=zstd -Wall -Wextra -Wconversion -Wextra-semi -Wimplicit-fallthrough -Wnewline-eof -Wstrict-prototypes -Wwrite-strings -Wno-sign-conversion -Wno-unused-parameter -Wnonportable-system-include-path -Wno-missing-field-initializers -Wno-extra-qualification -Wno-cast-function-type-mismatch -Wno-unknown-warning-option -Wno-missing-template-arg-list-after-template-kw -Wno-deprecated-pragma -Wno-nontrivial-memaccess -fvisibility=hidden -Werror -Wa,--fatal-warnings -ftrivial-auto-var-init=pattern -Wthread-safety -Wno-unknown-warning-option -Wno-thread-safety-reference-return -Wno-conversion -std=c11 -Wno-unterminated-string-initialization -c ../../third_party/github.com/google/liblc3/src/src/mdct.c -o obj/third_party/github.com/google/liblc3/src/src/lc3_codec.mdct.c.o
1.	<eof> parser at end of file
2.	Optimizer
3.	Running pass "function<eager-inv>(drop-unnecessary-assumes,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;no-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>,slp-vectorizer,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 "../../third_party/github.com/google/liblc3/src/src/mdct.c"
4.	Running pass "loop-load-elim" on function "lc3_mdct_forward"
#0 0x000055d1a78f32d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (../../prebuilt/third_party/clang/custom/bin/clang+0x938f2d8)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Fuchsia clang version 22.0.0git (https://llvm.googlesource.com/llvm-project d127d00c19578ae7c227b94a70e39d626bf125cf)
Target: x86_64-unknown-fuchsia
Thread model: posix
InstalledDir: ../../prebuilt/third_party/clang/custom/bin
Build config: +assertions
clang: note: diagnostic msg: 
********************

@Prabhuk
Copy link
Contributor

Prabhuk commented Sep 27, 2025

@artagnon -- Is it alright to land a revert to unblock our builders with weekend approaching?

@artagnon
Copy link
Contributor Author

@artagnon -- Is it alright to land a revert to unblock our builders with weekend approaching?

Of course, see #160993.

mahesh-attarde pushed a commit to mahesh-attarde/llvm-project that referenced this pull request Oct 3, 2025
1aded51 ([LAA] Prepare to handle diff type sizes (NFC)) was supposed to
be a non-functional patch, but introduced functional changes as
known-non-negative and known-non-positive is not equivalent to
!known-non-zero. Fix this.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

llvm:analysis Includes value tracking, cost tables and constant folding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants