diff options
Diffstat (limited to 'llvm/test/Transforms/FunctionAttrs/naked_functions.ll')
-rw-r--r-- | llvm/test/Transforms/FunctionAttrs/naked_functions.ll | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/Transforms/FunctionAttrs/naked_functions.ll b/llvm/test/Transforms/FunctionAttrs/naked_functions.ll new file mode 100644 index 00000000000..d34dc0c20d9 --- /dev/null +++ b/llvm/test/Transforms/FunctionAttrs/naked_functions.ll @@ -0,0 +1,25 @@ +; RUN: opt -S -functionattrs %s | FileCheck %s +; RUN: opt -S -passes='function-attrs' %s | FileCheck %s + +; Don't change the attributes of parameters of naked functions, in particular +; don't mark them as readnone + +@g = common global i32 0, align 4 + +define i32 @bar() { +entry: + %call = call i32 @foo(i32* @g) +; CHECK: %call = call i32 @foo(i32* @g) + ret i32 %call +} + +define internal i32 @foo(i32*) #0 { +entry: + %retval = alloca i32, align 4 + call void asm sideeffect "ldr r0, [r0] \0Abx lr \0A", ""() + unreachable +} + +; CHECK: define internal i32 @foo(i32*) + +attributes #0 = { naked } |