|  | ; Check that command line option "-disable-tail-calls" overrides function | 
|  | ; attribute "disable-tail-calls". | 
|  |  | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER1,NOTAIL | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER1,NOTAIL | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls=false \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER1,TAIL | 
|  |  | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER2,TAIL | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER2,NOTAIL | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls=false \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER2,TAIL | 
|  |  | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER3,TAIL | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER3,NOTAIL | 
|  | ; RUN: llc < %s -mtriple=riscv32-unknown-elf -disable-tail-calls=false \ | 
|  | ; RUN: | FileCheck %s --check-prefixes=CALLER3,TAIL | 
|  |  | 
|  | ; CALLER1-LABEL: {{\_?}}caller1 | 
|  | ; CALLER2-LABEL: {{\_?}}caller2 | 
|  | ; CALLER3-LABEL: {{\_?}}caller3 | 
|  | ; NOTAIL-NOT: tail callee | 
|  | ; NOTAIL: call callee | 
|  | ; TAIL: tail callee | 
|  | ; TAIL-NOT: call callee | 
|  |  | 
|  | ; Function with attribute #0 = { "disable-tail-calls"="true" } | 
|  | define i32 @caller1(i32 %a) #0 { | 
|  | entry: | 
|  | %call = tail call i32 @callee(i32 %a) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | ; Function with attribute #1 = { "disable-tail-calls"="false" } | 
|  | define i32 @caller2(i32 %a) #0 { | 
|  | entry: | 
|  | %call = tail call i32 @callee(i32 %a) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | define i32 @caller3(i32 %a) { | 
|  | entry: | 
|  | %call = tail call i32 @callee(i32 %a) | 
|  | ret i32 %call | 
|  | } | 
|  |  | 
|  | declare i32 @callee(i32) | 
|  |  | 
|  | attributes #0 = { "disable-tail-calls"="true" } | 
|  | attributes #1 = { "disable-tail-calls"="false" } |