[llvm] [InstCombine] Try to fold trunc(shuffle(zext)) to just a shuffle (PR #78636)

Zequan Wu via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 19 12:50:27 PST 2024


ZequanWu wrote:

We also hitting a assertion crash starting in this commit (while clang crashes at another place before this change):
``
Assertion failed: (castIsValid(op, S, Ty) && "Invalid cast!"), function Create, file Instructions.cpp, line 3335.
PLEASE submit a bug report to https://crbug.com/ in the Tools>LLVM component, run tools/clang/scripts/process_crashreports.py (only if inside Google) to upload crash related files, and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/skia/skia_core_and_effects/SkBlurImageFilter.o.d -DOFFICIAL_BUILD -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -DCR_XCODE_VERSION=1500 -DCR_CLANG_REVISION=\"llvmorg-18-init-17769-ga0b91174-0\" -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -DCR_LIBCXX_REVISION=[28aa23ffb4c7344914a5b4ac7169f12e5a12333f](https://crrev.com/28aa23ffb4c7344914a5b4ac7169f12e5a12333f) -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DSK_ENABLE_SKSL -DSK_UNTIL_CRBUG_1187654_IS_FIXED -DSK_USER_CONFIG_HEADER=\"../../skia/config/SkUserConfig.h\" -DSK_WIN_FONTMGR_NO_SIMULATIONS -DSK_DISABLE_LEGACY_SKSURFACE_METHODS -DSK_DISABLE_LEGACY_GRAPHITE_IMAGE_FACTORIES -DSK_DISABLE_LEGACY_GRAPHITE_IMAGE_METHODS -DSK_DISABLE_LEGACY_SKSURFACE_FACTORIES -DSK_DISABLE_LEGACY_SKSURFACE_FLUSH -DSK_DISABLE_LEGACY_SKSURFACE_AS_IMAGE -DSK_DISABLE_LEGACY_SKSURFACE_DISPLAYLIST -DSK_DISABLE_LEGACY_IMAGE_SUBSET_METHODS -DSK_DISABLE_LEGACY_IMAGE_COLORSPACE_METHODS -DSK_DISABLE_LEGACY_IMAGE_RELEASE_PROCS -DSK_DISABLE_LEGACY_GL_BACKEND_SURFACE -DSK_DISABLE_LEGACY_INIT_DECODERS -DSK_DISABLE_LEGACY_GRDIRECTCONTEXT_FLUSH -DSK_DISABLE_LEGACY_GRDIRECTCONTEXT_BOOLS -DSK_DISABLE_LEGACY_GL_GRDIRECTCONTEXT_FACTORIES -DSK_DISABLE_LEGACY_PNG_WRITEBUFFER -DSK_SLUG_DISABLE_LEGACY_DESERIALIZE -DSK_DISABLE_LEGACY_VK_GRDIRECTCONTEXT_FACTORIES -DSK_DEFAULT_TYPEFACE_IS_EMPTY -DSK_DISABLE_LEGACY_DEFAULT_TYPEFACE -DSK_DISABLE_LEGACY_VULKAN_BACKENDSEMAPHORE -DSK_DISABLE_LEGACY_CREATE_CHARACTERIZATION -DSK_DISABLE_LEGACY_FONTMGR_REFDEFAULT -DSK_DISABLE_LEGACY_FONTMGR_FACTORY -DSK_CODEC_DECODES_JPEG -DSK_ENCODE_JPEG -DSK_ENCODE_PNG -DSK_ENCODE_WEBP -DSK_BUILD_FOR_MAC -DSK_GANESH -DSK_GPU_WORKAROUNDS_HEADER=\"gpu/config/gpu_driver_bug_workaround_autogen.h\" -DSK_GL -DSK_GRAPHITE -DSK_DAWN -DIS_SKIA_IMPL=1 -DSKIA_IMPLEMENTATION=1 -DSK_FREETYPE_MINIMUM_RUNTIME_VERSION_IS_BUILD_VERSION -DSK_TYPEFACE_FACTORY_FREETYPE -DSK_FONTMGR_FREETYPE_EMPTY_AVAILABLE -DSK_TYPEFACE_FACTORY_CORETEXT -DSK_GAMMA_SRGB -DSK_GAMMA_CONTRAST=0.0 -DSK_DEFAULT_FONT_CACHE_LIMIT=20971520 -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/skia -Igen/third_party/skia -I../../third_party/wuffs/src/release/c -Igen/third_party/dawn/include -I../../third_party/dawn/include -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing -fstack-protector -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -flto=thin -fsplit-lto-unit -fwhole-program-vtables -fcomplete-member-pointers --target=arm64-apple-macos -mno-outline -no-canonical-prefixes -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -fno-standalone-debug -g2 -gdwarf-aranges -Xclang -debug-info-kind=limited -isysroot ../../build/mac_files/xcode_binaries/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -mmacos-version-min=10.15 -fprofile-use=../../chrome/build/pgo_profiles/chrome-mac-arm-main-1705657957-[a74ca4eefc946814bc9e52392824f88dda41973a](https://crrev.com/a74ca4eefc946814bc9e52392824f88dda41973a).profdata -Wno-profile-instr-unprofiled -Wno-profile-instr-out-of-date -Wno-backend-plugin -fvisibility=hidden -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang raw-ref-template-as-trivial-member -Xclang -plugin-arg-find-bad-constructs -Xclang check-stack-allocated -Xclang -plugin-arg-find-bad-constructs -Xclang check-raw-ptr-to-stack-allocated -Xclang -plugin-arg-find-bad-constructs -Xclang raw-ptr-exclude-path=/third_party/dawn/ -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -O2 -fno-math-errno -Wall -Wno-unused-variable -Wno-c++11-narrowing -Wno-unused-but-set-variable -Wno-misleading-indentation -Wunguarded-availability -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -Wno-bitfield-constant-conversion -Wno-deprecated-this-capture -Wno-invalid-offsetof -Wno-vla-extension -Wno-thread-safety-reference-return -Werror -std=c++20 -Wno-trigraphs -fno-exceptions -fno-rtti -nostdinc++ -isystem../../third_party/libc++/src/include -isystem../../third_party/libc++abi/src/include -fvisibility-inlines-hidden -Wno-c++11-narrowing-const-reference -c ../../third_party/skia/src/effects/imagefilters/SkBlurImageFilter.cpp -o obj/skia/skia_core_and_effects/SkBlurImageFilter.o
1.	<eof> parser at end of file
2.	Optimizer
 #0 0x000000010203e200 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101bb2200)
 #1 0x000000010203c37c llvm::sys::RunSignalHandlers() (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101bb037c)
 #2 0x000000010203d7f8 llvm::sys::CleanupOnSignal(unsigned long) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101bb17f8)
 #3 0x0000000101fc35cc CrashRecoverySignalHandler(int) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101b375cc)
 #4 0x00000001962aea24 (/usr/lib/system/libsystem_platform.dylib+0x18042ea24)
 #5 0x000000019627fc28 (/usr/lib/system/libsystem_pthread.dylib+0x1803ffc28)
 #6 0x000000019618dae8 (/usr/lib/system/libsystem_c.dylib+0x18030dae8)
 #7 0x000000019618ce44 (/usr/lib/system/libsystem_c.dylib+0x18030ce44)
 #8 0x0000000101b996ec llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::Instruction*) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x10170d6ec)
 #9 0x0000000101d02ad0 llvm::InstCombinerImpl::EvaluateInDifferentType(llvm::Value*, llvm::Type*, bool) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101876ad0)
#10 0x0000000101d02ca4 llvm::InstCombinerImpl::EvaluateInDifferentType(llvm::Value*, llvm::Type*, bool) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101876ca4)
#11 0x0000000101d044c4 llvm::InstCombinerImpl::visitTrunc(llvm::TruncInst&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1018784c4)
#12 0x0000000101cac810 llvm::InstCombinerImpl::run() (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101820810)
#13 0x0000000101caf8e8 combineInstructionsOverFunction(llvm::Function&, llvm::InstructionWorklist&, llvm::AAResults*, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*, llvm::ProfileSummaryInfo*, llvm::LoopInfo*, llvm::InstCombineOptions const&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1018238e8)
#14 0x0000000101caf04c llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x10182304c)
#15 0x0000000101bf2e38 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101766e38)
#16 0x0000000101c6cd68 llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1017e0d68)
#17 0x0000000101c68268 llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1017dc268)
#18 0x0000000101c69cfc llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1017ddcfc)
#19 0x0000000101bf1c28 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101765c28)
#20 0x000000010316f17c llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x102ce317c)
#21 0x0000000101bf1c28 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101765c28)
#22 0x0000000102845eb8 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>&, std::__1::unique_ptr<llvm::ToolOutputFile, std::__1::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1023b9eb8)
#23 0x000000010283ee28 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1023b2e28)
#24 0x00000001027866f0 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1022fa6f0)
#25 0x0000000102b1d464 clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x102691464)
#26 0x0000000103835b2c clang::ParseAST(clang::Sema&, bool, bool) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1033a9b2c)
#27 0x0000000102a9a2e8 clang::FrontendAction::Execute() (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x10260e2e8)
#28 0x0000000102a2ed40 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1025a2d40)
#29 0x0000000102b73f64 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x1026e7f64)
#30 0x0000000100492fcc cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x100006fcc)
#31 0x0000000100490c04 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x100004c04)
#32 0x00000001028e345c void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(long) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x10245745c)
#33 0x0000000101fc32e4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x101b372e4)
#34 0x00000001028e2ddc clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x102456ddc)
#35 0x00000001028acd5c clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x102420d5c)
#36 0x00000001028acfdc clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&, bool) const (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x102420fdc)
#37 0x00000001028c826c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::__1::pair<int, clang::driver::Command const*>>&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x10243c26c)
#38 0x0000000100490198 clang_main(int, char**, llvm::ToolContext const&) (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x100004198)
#39 0x000000010049c974 main (/Volumes/Work/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang-18+0x100010974)
#40 0x0000000195f27f28 
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 18.0.0git (https://chromium.googlesource.com/a/external/github.com/llvm/llvm-project [a0b911745494e3c2f53a27f23c536314818ce0b1](https://crrev.com/a0b911745494e3c2f53a27f23c536314818ce0b1))
Target: arm64-apple-macos
Thread model: posix
InstalledDir: ../../third_party/llvm-build/Release+Asserts/bin
```

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


More information about the llvm-commits mailing list