chromium breaks with errors on ppc64le in f41 and rawhide. Reproducible: Always Steps to Reproduce: 1.build chromium on ppc64le (f42 or rawhide) Actual Results: chromium build breaks with following error: clang++ -MD -MF obj/net/net/broken_alternative_services.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_GNU_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_INSTRUMENTED_WITH_ASAN=0 -DCR_LIBCXX_REVISION=2e25154d49c29fa9aa42c30ad4a027bd30123434 -DTMP_REBUILD_HACK -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56 -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0 -DHAVE_PTHREAD -DCR_CXX_INCLUDE=\"third_party/rust/chromium_crates_io/vendor/cxx-1.0.137/include/cxx.h\" -DNET_IMPLEMENTATION -DENABLE_BUILT_IN_DNS -DUSE_GIO -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -Igen/shim_headers/double_conversion_shim -I../../net/third_party/quiche/overrides -I../../net/third_party/quiche/src/quiche/common/platform/default -I../../net/third_party/quiche/src -Igen/shim_headers/brotli_shim -Igen/shim_headers/zstd_headers -I../../third_party/protobuf/src -I../../base/allocator/partition_allocator/src -Igen/base/allocator/partition_allocator/src -I../../third_party/abseil-cpp -I../../third_party/boringssl/src/include -Igen/net/third_party/quiche/src -I../../third_party/zlib -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -Wall -Wextra -Wimplicit-fallthrough -Wextra-semi -Wunreachable-code-aggressive -Wthread-safety -Wgnu -Wno-gnu-anonymous-struct -Wno-gnu-conditional-omitted-operand -Wno-gnu-include-next -Wno-gnu-label-as-value -Wno-gnu-redeclared-enum -Wno-gnu-statement-expression -Wno-gnu-zero-variadic-macro-arguments -Wno-zero-length-array -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wno-cast-function-type -Wno-thread-safety-reference-return -Wshadow -fno-delete-null-pointer-checks -fwrapv -fno-ident -fno-strict-aliasing -fstack-protector-strong -ftrivial-auto-var-init=zero -fwrapv -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fno-sized-deallocation -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -Wa,--crel,--allow-experimental-crel -fcomplete-member-pointers -m64 -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -g0 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -O2 -fdata-sections -ffunction-sections -fno-unique-section-names -fno-math-errno -isystem/usr/include/nss3 -isystem/usr/include/nspr4 -isystem/usr/include/glib-2.0 -isystem/usr/lib64/glib-2.0/include -isystem/usr/include/sysprof-6 -DPROTOBUF_ALLOW_DEPRECATED=1 -Wexit-time-destructors -DWITH_GZFILEOP -isystem/usr/include/glib-2.0 -isystem/usr/lib64/glib-2.0/include -isystem/usr/include/libmount -isystem/usr/include/blkid -isystem/usr/include/sysprof-6 -Wno-invalid-offsetof -Wenum-compare-conditional -Wno-c++11-narrowing-const-reference -Wno-missing-template-arg-list-after-template-kw -std=c++20 -Wno-trigraphs -gsimple-template-names -fno-exceptions -fno-rtti -nostdinc++ -isystem../../third_party/libc++/src/include -isystem../../third_party/libc++abi/src/include -fvisibility-inlines-hidden -Wno-deprecated-declarations -Wno-unknown-warning-option -Wno-unused-command-line-argument -Wno-unused-but-set-variable -Wno-unused-result -Wno-unused-function -Wno-unused-variable -Wno-unused-const-variable -Wno-unneeded-internal-declaration -Wno-unknown-attributes -Wno-unknown-pragmas -faltivec-src-compat=mixed -Wno-deprecated-altivec-src-compat -c ../../net/http/broken_alternative_services.cc -o obj/net/net/broken_alternative_services.o error: Undefined temporary symbol .L_MergedGlobals.15 Expected Results: it should build without error on ppc64le (fedora 42 and rawhide) This problem only shows up on ppc64le (f42 or rawhide). It built fine on x86_64/aarch64.
Just info for you: chromium built fine with llvm-19.1.7-11. So it looks like a regression here.
In LLVM 20, the ppc64le backend started to use the GlobalMerge pass instead of a custom pass. I wonder if there are corner cases with issues. @than, could you test if the build works when passing -mno-global-merge , please?
@tuliom, the build still aborts with the same error when passing -mno-global-merge
@tuliom, the build works when passing -O0 (independent of -mno-global-merge option)
I managed to reduce the test for this issue and reported it upstream: https://github.com/llvm/llvm-project/issues/131394
-mllvm -ppc-global-merge=0 instead of -mno-global-merge may work.
(In reply to Nikita Popov from comment #6) > -mllvm -ppc-global-merge=0 instead of -mno-global-merge may work. It works with -mllvm -ppc-global-merge=0
I believe the new llvm-20.1.1-1.fc42 and llvm-20.1.1-1.fc43 builds should fix this, but I haven't verified.
(In reply to Nikita Popov from comment #8) > I believe the new llvm-20.1.1-1.fc42 and llvm-20.1.1-1.fc43 builds should > fix this, but I haven't verified. I did a scratch build of chromium using llvm-20.1.1-1.fc43 and the build was successful: https://koji.fedoraproject.org/koji/taskinfo?taskID=130858088
(In reply to Tom Stellard from comment #9) > (In reply to Nikita Popov from comment #8) > > I believe the new llvm-20.1.1-1.fc42 and llvm-20.1.1-1.fc43 builds should > > fix this, but I haven't verified. > > I did a scratch build of chromium using llvm-20.1.1-1.fc43 and the build was > successful: https://koji.fedoraproject.org/koji/taskinfo?taskID=130858088 Tom, looking at the build.log i still see CXXFLAGS+=' -O0' used in your scratchbuild. I will do a scratch build without the workaround today and will report the result to you. Thanks
I did a scratch build of latest chromium with llvm-20.1.1-1.fc43 and confirmed the fix. Thanks you!