- 
                Notifications
    You must be signed in to change notification settings 
- Fork 15k
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.