| Akira Hatanaka | d9699bc | 2015-06-09 19:07:19 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -march x86-64 | FileCheck %s --check-prefix=NO-OPTION | 
|  | 2 | ; RUN: llc < %s -march x86-64 -disable-tail-calls | FileCheck %s --check-prefix=DISABLE-TRUE | 
|  | 3 | ; RUN: llc < %s -march x86-64 -disable-tail-calls=false | FileCheck %s --check-prefix=DISABLE-FALSE | 
|  | 4 |  | 
|  | 5 | ; Check that command line option "-disable-tail-calls" overrides function | 
|  | 6 | ; attribute "disable-tail-calls". | 
|  | 7 |  | 
|  | 8 | ; NO-OPTION-LABEL: {{\_?}}func_attr | 
|  | 9 | ; NO-OPTION: callq {{\_?}}callee | 
|  | 10 |  | 
|  | 11 | ; DISABLE-FALSE-LABEL: {{\_?}}func_attr | 
|  | 12 | ; DISABLE-FALSE: jmp {{\_?}}callee | 
|  | 13 |  | 
|  | 14 | ; DISABLE-TRUE-LABEL: {{\_?}}func_attr | 
|  | 15 | ; DISABLE-TRUE: callq {{\_?}}callee | 
|  | 16 |  | 
|  | 17 | define i32 @func_attr(i32 %a) #0 { | 
|  | 18 | entry: | 
|  | 19 | %call = tail call i32 @callee(i32 %a) | 
|  | 20 | ret i32 %call | 
|  | 21 | } | 
|  | 22 |  | 
|  | 23 | ; NO-OPTION-LABEL: {{\_?}}func_noattr | 
|  | 24 | ; NO-OPTION: jmp {{\_?}}callee | 
|  | 25 |  | 
|  | 26 | ; DISABLE-FALSE-LABEL: {{\_?}}func_noattr | 
|  | 27 | ; DISABLE-FALSE: jmp {{\_?}}callee | 
|  | 28 |  | 
|  | 29 | ; DISABLE-TRUE-LABEL: {{\_?}}func_noattr | 
|  | 30 | ; DISABLE-TRUE: callq {{\_?}}callee | 
|  | 31 |  | 
|  | 32 | define i32 @func_noattr(i32 %a) { | 
|  | 33 | entry: | 
|  | 34 | %call = tail call i32 @callee(i32 %a) | 
|  | 35 | ret i32 %call | 
|  | 36 | } | 
|  | 37 |  | 
|  | 38 | declare i32 @callee(i32) | 
|  | 39 |  | 
|  | 40 | attributes #0 = { "disable-tail-calls"="true" } |