1// REQUIRES: ppc
2
3// RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
4// RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/shared-ppc64.s -o %t2.o
5// RUN: ld.lld -shared %t2.o -o %t2.so
6// RUN: not ld.lld %t.o %t2.so -o /dev/null 2>&1 | FileCheck %s
7
8// RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
9// RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %p/Inputs/shared-ppc64.s -o %t2.o
10// RUN: ld.lld -shared %t2.o -o %t2.so
11// RUN: not ld.lld %t.o %t2.so -o /dev/null 2>&1 | FileCheck %s
12
13# A tail call to an external function without a nop should issue an error.
14// CHECK: call to foo lacks nop, can't restore toc
15// CHECK-NOT: lacks nop
16    .text
17    .abiversion 2
18
19.global _start
20_start:
21  b foo
22
23  // gcc/gfortran 5.4, 6.3 and earlier versions do not add nop for recursive
24  // calls.
25  b _start
26  b _start
27