[llvm] 2cfd427 - [AIX] Don't crash on unimplemented lowerRelativeReference
Jinsong Ji via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 10 10:49:25 PDT 2021
Author: Jinsong Ji
Date: 2021-08-10T17:43:06Z
New Revision: 2cfd42762638168131dd9f2b494825e293758136
URL: https://github.com/llvm/llvm-project/commit/2cfd42762638168131dd9f2b494825e293758136
DIFF: https://github.com/llvm/llvm-project/commit/2cfd42762638168131dd9f2b494825e293758136.diff
LOG: [AIX] Don't crash on unimplemented lowerRelativeReference
We may call lowerRelativeReference in MC to determine whether target
supports this lowering. We should return nullptr instead of crashing
when we haven't implemented the real lowering.
Reviewed By: hubert.reinterpretcast
Differential Revision: https://reviews.llvm.org/D107830
Added:
llvm/test/CodeGen/PowerPC/aix-relativeref.ll
Modified:
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index 3383f5a64a5ff..0c019e7ed3b8a 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -2456,7 +2456,8 @@ MCSection *TargetLoweringObjectFileXCOFF::getStaticDtorSection(
const MCExpr *TargetLoweringObjectFileXCOFF::lowerRelativeReference(
const GlobalValue *LHS, const GlobalValue *RHS,
const TargetMachine &TM) const {
- report_fatal_error("XCOFF not yet implemented.");
+ /* Not implemented yet, but don't crash, return nullptr. */
+ return nullptr;
}
XCOFF::StorageClass
diff --git a/llvm/test/CodeGen/PowerPC/aix-relativeref.ll b/llvm/test/CodeGen/PowerPC/aix-relativeref.ll
new file mode 100644
index 0000000000000..2f5d7c79fe471
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/aix-relativeref.ll
@@ -0,0 +1,20 @@
+; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff < %s | \
+; RUN: FileCheck --check-prefix=ASM %s
+
+ at __profc_main = private global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", align 8
+ at __profd_main = private global { i64, i64, i64, i8*, i8*, i32, [4 x i16] } { i64 -2624081020897602054, i64 742261418966908927, i64 sub (i64 ptrtoint ([1 x i64]* @__profc_main to i64), i64 ptrtoint ({ i64, i64, i64, i8*, i8*, i32, [4 x i16] }* @__profd_main to i64)), i8* bitcast (i32 ()* @main to i8*), i8* null, i32 1, [4 x i16] zeroinitializer }, section "__llvm_prf_data", align 8
+
+; Test fallback of using sub expr for lowerRelativeReference
+define signext i32 @main() {
+; ASM-LABEL: main:
+; ASM: L..__profd_main:
+; ASM: .vbyte 8, L..__profc_main-L..__profd_main
+entry:
+ %pgocount = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_main, i64 0, i64 0), align 8
+ %0 = add i64 %pgocount, 1
+ store i64 %0, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_main, i64 0, i64 0), align 8
+ %retval = alloca i32, align 4
+ store i32 0, i32* %retval, align 4
+ ret i32 0
+}
+
More information about the llvm-commits
mailing list