Michael Smith has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/24940 )
Change subject: IMPALA-11917: Upgrade to GCC 15 and LLVM 22 ...................................................................... IMPALA-11917: Upgrade to GCC 15 and LLVM 22 Upgrades to GCC 15, which also requires upgrading to Clang 12+. Upgrades to LLVM 22 as a recent stable version that doesn't show a performance regression in Impala. Switches LLVM code generation to opaque pointers. Explicitly ensures types are defined in generated code now that they're not part of the pointer definition. LLVM and GCC became more aggressive optimizing i128 access assuming 16-byte alignment, but our memory allocation is only 8-byte aligned. Applies fixes so 128-bit int alignment is correctly identified. In particular aligned was added to DecimalVal in udf.h; explicit padding was added to preserve backwards compatibility with UDFs compiled on x86_64. UDF layout on aarch64 was normalized to match, so UDFs compiled on aarch64 that use DecimalVal will need to be recompiled. Updates boolean, tinyint, and smallint type layout as LLVM on aarch64 now matches x86_64. Avoids GlobalISel on aarch64 as it hangs in DEBUG builds. Fixes possible signed integer overflow during UBSAN in IcebergFunctions::TruncatePartitionTransformNumericImpl. Fixes code now flagged by Clang or _GLIBCXX_ASSERTIONS. Fixes invalid memory_order use in atomicops, detected by UBSAN. Store with memory_order_acquire and load with memory_order_release are undefined according to the C++ standard. _GLIBCXX_ASSERTIONS is enabled in UBSAN and asserts. Updates their semantics to match the old x86-specific implementation from atomicops-internals-x86.h. Adds handle_segv=0 to UBSAN options to match ASAN, fixing FE tests. Removes custom SectionMemoryManager as fix is present as https://github.com/llvm/llvm-project/commit/35b2b24e62 in LLVM 22.1. Removes AnalyzeTemporaryDtors as it was removed in LLVM 18. Disables new clang-tidy checks; will be addressed in follow-up commits. Testing: - Passed DEBUG, RELEASE, ASAN, TSAN, and UBSAN builds. TSAN and ASAN builds are 20% faster, the rest unchanged. - Passed RELEASE on ARM. - Shows ~1% improvement in perf-AB-test runs with codegen caching disabled. Assisted-by: Claude Sonnet 4.5, 5 (GitHub Copilot) Change-Id: I7dda730fa98ebe3825969265627a560b0c3095f9 Reviewed-on: http://gerrit.cloudera.org:8080/24940 Reviewed-by: Michael Smith <[email protected]> Reviewed-by: Csaba Ringhofer <[email protected]> Tested-by: Impala Public Jenkins <[email protected]> --- M .clang-tidy M be/CMakeLists.txt M be/src/benchmarks/hash-benchmark.cc M be/src/catalog/catalog-service-client-wrapper.h M be/src/codegen/CMakeLists.txt M be/src/codegen/codegen-anyval.cc M be/src/codegen/codegen-anyval.h M be/src/codegen/codegen-callgraph.cc M be/src/codegen/codegen-symbol-emitter.cc M be/src/codegen/codegen-symbol-emitter.h M be/src/codegen/instruction-counter-test.cc M be/src/codegen/instruction-counter.cc M be/src/codegen/llvm-codegen-cache-test.cc M be/src/codegen/llvm-codegen-cache.cc M be/src/codegen/llvm-codegen-test.cc M be/src/codegen/llvm-codegen.cc M be/src/codegen/llvm-codegen.h M be/src/codegen/mcjit-mem-mgr.h M be/src/common/init.cc M be/src/exec/aggregator.cc M be/src/exec/avro/hdfs-avro-scanner-ir.cc M be/src/exec/avro/hdfs-avro-scanner.cc M be/src/exec/avro/hdfs-avro-scanner.h M be/src/exec/catalog-op-executor.h M be/src/exec/exec-node.cc M be/src/exec/filter-context.cc M be/src/exec/grouping-aggregator.cc M be/src/exec/hash-table.cc M be/src/exec/hdfs-scanner.cc M be/src/exec/parquet/hdfs-parquet-table-writer.cc M be/src/exec/partitioned-hash-join-builder.cc M be/src/exec/partitioned-hash-join-node.cc M be/src/exec/text-converter.cc M be/src/exprs/aggregate-functions-ir.cc M be/src/exprs/decimal-functions-ir.cc M be/src/exprs/expr-test.cc M be/src/exprs/hive-udf-call.cc M be/src/exprs/iceberg-functions-ir.cc M be/src/exprs/iceberg-functions-test.cc M be/src/exprs/iceberg-functions.h M be/src/exprs/is-not-empty-predicate.cc M be/src/exprs/kudu-partition-expr.cc M be/src/exprs/scalar-expr.cc M be/src/exprs/scalar-fn-call.cc M be/src/exprs/slot-ref.cc M be/src/exprs/valid-tuple-id.cc M be/src/gutil/atomicops-internals-portable.h M be/src/gutil/ref_counted.h M be/src/gutil/stl_util.h M be/src/gutil/strings/human_readable.cc M be/src/gutil/strings/human_readable.h M be/src/gutil/strings/join.h M be/src/gutil/strings/numbers.h M be/src/gutil/strings/split_internal.h M be/src/gutil/strings/util.h M be/src/kudu/util/locks.h M be/src/rpc/thrift-server-test.cc M be/src/runtime/buffered-tuple-stream.cc M be/src/runtime/coordinator.cc M be/src/runtime/decimal-value.h M be/src/runtime/descriptors.cc M be/src/runtime/descriptors.h M be/src/runtime/krpc-data-stream-sender.cc M be/src/runtime/mem-tracker.h M be/src/runtime/outbound-row-batch.cc M be/src/runtime/tmp-file-mgr-test.cc M be/src/runtime/tuple.cc M be/src/service/CMakeLists.txt M be/src/service/query-options-test.cc M be/src/statestore/statestore-service-client-wrapper.h M be/src/statestore/statestore-subscriber-client-wrapper.h M be/src/statestore/statestore-subscriber.h M be/src/statestore/statestore.h D be/src/thirdparty/llvm/LICENSE.TXT D be/src/thirdparty/llvm/SectionMemoryManager.cpp D be/src/thirdparty/llvm/SectionMemoryManager.h M be/src/udf/udf-test.cc M be/src/udf/udf.cc M be/src/udf/udf.h M be/src/util/codec.h M be/src/util/container-util.h M be/src/util/mem-info.cc M be/src/util/parse-util.h M be/src/util/roaring-bitmap-test.cc M be/src/util/sql-util.h M be/src/util/tuple-row-compare.cc M bin/impala-config.sh M cmake_modules/FindLlvmBinaries.cmake 88 files changed, 1,060 insertions(+), 1,665 deletions(-) Approvals: Michael Smith: Looks good to me, but someone else must approve Csaba Ringhofer: Looks good to me, approved Impala Public Jenkins: Verified -- To view, visit http://gerrit.cloudera.org:8080/24940 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: Impala-ASF Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I7dda730fa98ebe3825969265627a560b0c3095f9 Gerrit-Change-Number: 24940 Gerrit-PatchSet: 21 Gerrit-Owner: Michael Smith <[email protected]> Gerrit-Reviewer: Balazs Hevele <[email protected]> Gerrit-Reviewer: Csaba Ringhofer <[email protected]> Gerrit-Reviewer: Impala Public Jenkins <[email protected]> Gerrit-Reviewer: Joe McDonnell <[email protected]> Gerrit-Reviewer: Laszlo Gaal <[email protected]> Gerrit-Reviewer: Michael Smith <[email protected]>
