1*ddcb9566SMandeep Singh Grang; Check that command line option "-disable-tail-calls" overrides function 2*ddcb9566SMandeep Singh Grang; attribute "disable-tail-calls". 3*ddcb9566SMandeep Singh Grang 4*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf \ 5*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER1,NOTAIL 6*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls \ 7*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER1,NOTAIL 8*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls=false \ 9*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER1,TAIL 10*ddcb9566SMandeep Singh Grang 11*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf \ 12*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER2,TAIL 13*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls \ 14*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER2,NOTAIL 15*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls=false \ 16*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER2,TAIL 17*ddcb9566SMandeep Singh Grang 18*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf \ 19*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER3,TAIL 20*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls \ 21*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER3,NOTAIL 22*ddcb9566SMandeep Singh Grang; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls=false \ 23*ddcb9566SMandeep Singh Grang; RUN: | FileCheck %s --check-prefixes=CALLER3,TAIL 24*ddcb9566SMandeep Singh Grang 25*ddcb9566SMandeep Singh Grang; CALLER1-LABEL: {{\_?}}caller1 26*ddcb9566SMandeep Singh Grang; CALLER2-LABEL: {{\_?}}caller2 27*ddcb9566SMandeep Singh Grang; CALLER3-LABEL: {{\_?}}caller3 28*ddcb9566SMandeep Singh Grang; NOTAIL-NOT: tail callee 29*ddcb9566SMandeep Singh Grang; NOTAIL: call callee 30*ddcb9566SMandeep Singh Grang; TAIL: tail callee 31*ddcb9566SMandeep Singh Grang; TAIL-NOT: call callee 32*ddcb9566SMandeep Singh Grang 33*ddcb9566SMandeep Singh Grang; Function with attribute #0 = { "disable-tail-calls"="true" } 34*ddcb9566SMandeep Singh Grangdefine i32 @caller1(i32 %a) #0 { 35*ddcb9566SMandeep Singh Grangentry: 36*ddcb9566SMandeep Singh Grang %call = tail call i32 @callee(i32 %a) 37*ddcb9566SMandeep Singh Grang ret i32 %call 38*ddcb9566SMandeep Singh Grang} 39*ddcb9566SMandeep Singh Grang 40*ddcb9566SMandeep Singh Grang; Function with attribute #1 = { "disable-tail-calls"="false" } 41*ddcb9566SMandeep Singh Grangdefine i32 @caller2(i32 %a) #0 { 42*ddcb9566SMandeep Singh Grangentry: 43*ddcb9566SMandeep Singh Grang %call = tail call i32 @callee(i32 %a) 44*ddcb9566SMandeep Singh Grang ret i32 %call 45*ddcb9566SMandeep Singh Grang} 46*ddcb9566SMandeep Singh Grang 47*ddcb9566SMandeep Singh Grangdefine i32 @caller3(i32 %a) { 48*ddcb9566SMandeep Singh Grangentry: 49*ddcb9566SMandeep Singh Grang %call = tail call i32 @callee(i32 %a) 50*ddcb9566SMandeep Singh Grang ret i32 %call 51*ddcb9566SMandeep Singh Grang} 52*ddcb9566SMandeep Singh Grang 53*ddcb9566SMandeep Singh Grangdeclare i32 @callee(i32) 54*ddcb9566SMandeep Singh Grang 55*ddcb9566SMandeep Singh Grangattributes #0 = { "disable-tail-calls"="true" } 56*ddcb9566SMandeep Singh Grangattributes #1 = { "disable-tail-calls"="false" } 57