reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s --check-prefix=NO-OPTION ; RUN: llc < %s -mtriple=x86_64-- -disable-tail-calls | FileCheck %s --check-prefix=DISABLE-TRUE ; RUN: llc < %s -mtriple=x86_64-- -disable-tail-calls=false | FileCheck %s --check-prefix=DISABLE-FALSE ; Check that command line option "-disable-tail-calls" overrides function ; attribute "disable-tail-calls". ; NO-OPTION-LABEL: {{\_?}}func_attr ; NO-OPTION: callq {{\_?}}callee ; DISABLE-FALSE-LABEL: {{\_?}}func_attr ; DISABLE-FALSE: jmp {{\_?}}callee ; DISABLE-TRUE-LABEL: {{\_?}}func_attr ; DISABLE-TRUE: callq {{\_?}}callee define i32 @func_attr(i32 %a) #0 { entry: %call = tail call i32 @callee(i32 %a) ret i32 %call } ; NO-OPTION-LABEL: {{\_?}}func_noattr ; NO-OPTION: jmp {{\_?}}callee ; DISABLE-FALSE-LABEL: {{\_?}}func_noattr ; DISABLE-FALSE: jmp {{\_?}}callee ; DISABLE-TRUE-LABEL: {{\_?}}func_noattr ; DISABLE-TRUE: callq {{\_?}}callee define i32 @func_noattr(i32 %a) { entry: %call = tail call i32 @callee(i32 %a) ret i32 %call } declare i32 @callee(i32) attributes #0 = { "disable-tail-calls"="true" } |