================ @@ -0,0 +1,34 @@ +;Test -mbackchain longjmp load from jmp_buf. +; Frame pointer from Slot 1. +; Jump address from Slot 2. +; Backchain Value from Slot 3. +; Stack Pointer from Slot 4. +; Literal Pool Pointer from Slot 5. + +; RUN: llc < %s -mtriple=s390x-linux-gnu -O2 | FileCheck %s + +@buf = dso_local global [20 x ptr] zeroinitializer, align 8 + +; Function Attrs: noreturn nounwind +define dso_local void @foo() local_unnamed_addr #0 { +entry: +; CHECK: stmg %r11, %r15, 88(%r15) +; CHECK: larl %r1, buf +; CHECK: lg %r2, 8(%r1) +; CHECK: lg %r11, 0(%r1) +; CHECK: lg %r13, 32(%r1) +; CHECK: lg %r3, 16(%r1) +; CHECK: lg %r15, 24(%r1) +; CHECK: stg %r3, 0(%r15) +; CHECK: br %r2 + + tail call void @llvm.eh.sjlj.longjmp(ptr nonnull @buf) + unreachable +} + +; Function Attrs: noreturn nounwind +declare void @llvm.eh.sjlj.longjmp(ptr) #1 + +attributes #0 = { noreturn nounwind "backchain" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="z10" } +attributes #1 = { noreturn nounwind } + ---------------- uweigand wrote:
Also, it might be simpler to have both backchain and no-backchain test in a single test file: you can have one function with the "backchain" attribute and one without it in the same file. https://github.com/llvm/llvm-project/pull/116642 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits