• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes
2; RUN: opt < %s -argpromotion -S | FileCheck %s
3
4; Don't promote paramaters of/arguments to naked functions
5
6@g = common global i32 0, align 4
7
8define i32 @bar() {
9; CHECK-LABEL: define {{[^@]+}}@bar()
10; CHECK-NEXT:  entry:
11; CHECK-NEXT:    [[CALL:%.*]] = call i32 @foo(i32* @g)
12; CHECK-NEXT:    ret i32 [[CALL]]
13;
14entry:
15  %call = call i32 @foo(i32* @g)
16  ret i32 %call
17}
18
19define internal i32 @foo(i32*) #0 {
20; CHECK-LABEL: define {{[^@]+}}@foo
21; CHECK-SAME: (i32* [[TMP0:%.*]])
22; CHECK-NEXT:  entry:
23; CHECK-NEXT:    [[RETVAL:%.*]] = alloca i32, align 4
24; CHECK-NEXT:    call void asm sideeffect "ldr r0, [r0] \0Abx lr \0A", ""()
25; CHECK-NEXT:    unreachable
26;
27entry:
28  %retval = alloca i32, align 4
29  call void asm sideeffect "ldr r0, [r0] \0Abx lr        \0A", ""()
30  unreachable
31}
32
33
34attributes #0 = { naked }
35