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]>

Reply via email to