• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -mtriple aarch64-arm-none-eabi -enable-machine-outliner \
2; RUN:  -verify-machineinstrs %s -o - | FileCheck %s
3
4@v = common dso_local global i32* null, align 8
5
6; CHECK-LABEL:  foo:                                    // @foo
7; CHECK-NEXT:   // %bb.0:                               // %entry
8; CHECK-NEXT:       paciasp
9; CHECK-NOT:        OUTLINED_FUNCTION_
10; CHECK:            retaa
11define dso_local void @foo(i32 %x) #0 {
12entry:
13  %0 = zext i32 %x to i64
14  %vla = alloca i32, i64 %0, align 4
15  store volatile i32* %vla, i32** @v, align 8
16  store volatile i32* %vla, i32** @v, align 8
17  store volatile i32* %vla, i32** @v, align 8
18  store volatile i32* %vla, i32** @v, align 8
19  store volatile i32* %vla, i32** @v, align 8
20  store volatile i32* %vla, i32** @v, align 8
21  ret void
22}
23
24; CHECK-LABEL:  bar:                                    // @bar
25; CHECK-NEXT:   // %bb.0:                               // %entry
26; CHECK-NEXT:       paciasp
27; CHECK-NOT:        OUTLINED_FUNCTION_
28; CHECK:            retaa
29define dso_local void @bar(i32 %x) #0 {
30entry:
31  %0 = zext i32 %x to i64
32  %vla = alloca i32, i64 %0, align 4
33  store volatile i32* null, i32** @v, align 8
34  store volatile i32* %vla, i32** @v, align 8
35  store volatile i32* %vla, i32** @v, align 8
36  store volatile i32* %vla, i32** @v, align 8
37  store volatile i32* %vla, i32** @v, align 8
38  store volatile i32* %vla, i32** @v, align 8
39  ret void
40}
41
42attributes #0 = { nounwind "target-features"="+v8.3a" "frame-pointer"="all" "sign-return-address"="all" "sign-return-address-key"="a_key" }
43
44; CHECK-NOT:  OUTLINED_FUNCTION_
45