[llvm] [GlobalOpt][FMV] Fix static resolution of calls. (PR #160011)
Alexandros Lamprineas via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 21 13:41:13 PDT 2025
================
@@ -340,14 +433,167 @@ entry:
define i32 @caller7.default() #0 {
; CHECK-LABEL: define i32 @caller7.default(
-; CHECK-SAME: ) local_unnamed_addr #[[ATTR0]] {
+; CHECK-SAME: ) #[[ATTR0]] {
; CHECK: [[CALL:%.*]] = tail call i32 @test_alternative_names.default()
;
entry:
%call = tail call i32 @test_alternative_names()
ret i32 %call
}
+define weak_odr ptr @caller7.resolver() comdat {
+; CHECK-LABEL: define weak_odr ptr @caller7.resolver() comdat {
+resolver_entry:
+ tail call void @__init_cpu_features_resolver()
+ %0 = load i64, ptr @__aarch64_cpu_features, align 8
+ %1 = and i64 %0, 17563904
+ %2 = icmp eq i64 %1, 17563904
+ br i1 %2, label %common.ret, label %resolver_else
+
+common.ret: ; preds = %resolver_else2, %resolver_else, %resolver_entry
+ %common.ret.op = phi ptr [ @caller7._Mdpb2Mfrintts, %resolver_entry ], [ @caller7._Mfrintts, %resolver_else ], [ %caller7._Mrcpc2.caller7.default, %resolver_else2 ]
+ ret ptr %common.ret.op
+
+resolver_else: ; preds = %resolver_entry
+ %3 = and i64 %0, 16777472
+ %4 = icmp eq i64 %3, 16777472
+ br i1 %4, label %common.ret, label %resolver_else2
+
+resolver_else2: ; preds = %resolver_else
+ %5 = and i64 %0, 12582912
+ %6 = icmp eq i64 %5, 12582912
+ %caller7._Mrcpc2.caller7.default = select i1 %6, ptr @caller7._Mrcpc2, ptr @caller7.default
+ br label %common.ret
+}
+
----------------
labrinea wrote:
The top of trunk seems to be crashing with the newly added test below https://godbolt.org/z/nqz7ePrfa
https://github.com/llvm/llvm-project/pull/160011
More information about the llvm-commits
mailing list