diff options
Diffstat (limited to 'llvm/test/CodeGen/Hexagon/call-long1.ll')
-rw-r--r-- | llvm/test/CodeGen/Hexagon/call-long1.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/Hexagon/call-long1.ll b/llvm/test/CodeGen/Hexagon/call-long1.ll new file mode 100644 index 00000000000..ca05cf40bf2 --- /dev/null +++ b/llvm/test/CodeGen/Hexagon/call-long1.ll @@ -0,0 +1,24 @@ +; RUN: llc -march=hexagon -spill-func-threshold-Os=0 -spill-func-threshold=0 < %s | FileCheck %s + +; Check that the long-calls feature handles save and restore. +; CHECK: call ##__save +; CHECK: jump ##__restore + +target triple = "hexagon" + +; Function Attrs: nounwind +define i32 @f0(i32 %a0, i32 %a1, i32 %a2) #0 { +b0: + %v0 = tail call i32 bitcast (i32 (...)* @f1 to i32 (i32, i32, i32)*)(i32 %a0, i32 %a1, i32 %a2) #1 + %v1 = tail call i32 bitcast (i32 (...)* @f2 to i32 (i32, i32, i32)*)(i32 %a0, i32 %a1, i32 %a2) #1 + ret i32 0 +} + +; Function Attrs: nounwind +declare i32 @f1(...) #1 + +; Function Attrs: nounwind +declare i32 @f2(...) #1 + +attributes #0 = { nounwind "target-features"="+long-calls" } +attributes #1 = { nounwind } |