-
Notifications
You must be signed in to change notification settings - Fork 14.9k
Open
Labels
Description
@.str = external hidden unnamed_addr constant [1 x i8], align 1
declare void @callee1(ptr, i64, ptr, i32 signext)
declare void @callee2(ptr, i64, ptr, i32 signext)
declare void @callee3(ptr, ptr, i32 signext)
define dso_local void @caller(ptr %0) {
%2 = icmp eq ptr %0, null
br i1 %2, label %17, label %3
3: ; preds = %1
%4 = getelementptr inbounds nuw i8, ptr %0, i64 16
%5 = load i32, ptr %4, align 8
%6 = icmp eq i32 %5, 0
br i1 %6, label %7, label %16
7: ; preds = %3
%8 = getelementptr inbounds nuw i8, ptr %0, i64 20
%9 = load i32, ptr %8, align 4
%10 = icmp eq i32 %9, 0
%11 = load ptr, ptr %0, align 8
%12 = getelementptr inbounds nuw i8, ptr %0, i64 40
%13 = load i64, ptr %12, align 8
br i1 %10, label %15, label %14
14: ; preds = %7
tail call void @callee1(ptr %11, i64 %13, ptr @.str, i32 signext 0)
br label %16
15: ; preds = %7
tail call void @callee2(ptr %11, i64 %13, ptr @.str, i32 signext 0)
br label %16
16: ; preds = %15, %14, %3
tail call void @callee3(ptr %0, ptr @.str, i32 signext 0)
br label %17
17: ; preds = %16, %1
ret void
}
llc -mtriple=loongarch64 -code-model=large xxx.ll
LoongArchInstrInfo::isSchedulingBoundary
cannot constrain the instruction movement performed by the branch-folder
pass.
By the way, it also cannot constrain instruction movement in the post-RA scheduler
.