79 lines · plain
1; RUN: llc -mtriple=thumbv7m-eabi %s -o - | FileCheck %s2 3; See bti-outliner-1.ll4; Difference is the BTI placement is enabled by default for the entire module.5 6@a = hidden global i32 0, align 47@b = hidden global i32 0, align 48@c = hidden global i32 0, align 49@d = hidden global i32 0, align 410@e = hidden global i32 0, align 411@f = hidden global i32 0, align 412 13define hidden i32 @x(i32 %p) local_unnamed_addr #1 {14entry:15 %0 = load volatile i32, ptr @a, align 416 %1 = load volatile i32, ptr @b, align 417 %add = add nsw i32 %1, %018 %2 = load volatile i32, ptr @c, align 419 %3 = load volatile i32, ptr @d, align 420 %add1 = add nsw i32 %3, %221 %div = sdiv i32 %add, %add122 %4 = load volatile i32, ptr @e, align 423 %mul = mul nsw i32 %4, %div24 %5 = load volatile i32, ptr @f, align 425 %add2 = add nsw i32 %mul, %526 %add3 = add nsw i32 %add2, 127 ret i32 %add328}29; CHECK-LABEL: x:30; CHECK: bti31; CHECK: bl OUTLINED_FUNCTION_032 33define hidden i32 @y(i32 %p) local_unnamed_addr #0 {34entry:35 %0 = load volatile i32, ptr @a, align 436 %1 = load volatile i32, ptr @b, align 437 %add = add nsw i32 %1, %038 %2 = load volatile i32, ptr @c, align 439 %3 = load volatile i32, ptr @d, align 440 %add1 = add nsw i32 %3, %241 %div = sdiv i32 %add, %add142 %4 = load volatile i32, ptr @e, align 443 %mul = mul nsw i32 %4, %div44 %5 = load volatile i32, ptr @f, align 445 %add2 = add nsw i32 %mul, %546 %add3 = add nsw i32 %add2, 247 ret i32 %add348}49; CHECK-LABEL: y:50; CHECK-NOT: bti51; CHECK-NOT: bl OUTLINED_FUNCTION52 53define hidden i32 @z(i32 %p) local_unnamed_addr #1 {54entry:55 %0 = load volatile i32, ptr @a, align 456 %1 = load volatile i32, ptr @b, align 457 %add = add nsw i32 %1, %058 %2 = load volatile i32, ptr @c, align 459 %3 = load volatile i32, ptr @d, align 460 %add1 = add nsw i32 %3, %261 %div = sdiv i32 %add, %add162 %4 = load volatile i32, ptr @e, align 463 %mul = mul nsw i32 %4, %div64 %5 = load volatile i32, ptr @f, align 465 %add2 = add nsw i32 %mul, %566 %add3 = add nsw i32 %add2, 367 ret i32 %add368}69; CHECK-LABEL: z:70; CHECK: bti71; CHECK: bl OUTLINED_FUNCTION_072 73; CHECK-LABEL: OUTLINED_FUNCTION_0:74; CHECK: bti75 76attributes #0 = { minsize nofree norecurse nounwind optsize }77attributes #1 = { minsize nofree norecurse nounwind optsize "branch-target-enforcement" }78 79