| ; RUN: llc < %s -mtriple=arm-apple-darwin -relocation-model=dynamic-no-pic -mcpu=cortex-a8 -asm-verbose=false | FileCheck %s |
| declare i8* @choose(i8*, i8*) |
| ; BranchFolding should tail-duplicate the indirect jump to avoid |
| ; CHECK: tail_duplicate_me: |
| ; CHECK: movw r{{[0-9]+}}, :lower16:_GHJK |
| ; CHECK: movt r{{[0-9]+}}, :upper16:_GHJK |
| ; CHECK: movw r{{[0-9]+}}, :lower16:_GHJK |
| ; CHECK: movt r{{[0-9]+}}, :upper16:_GHJK |
| ; CHECK: movw r{{[0-9]+}}, :lower16:_GHJK |
| ; CHECK: movt r{{[0-9]+}}, :upper16:_GHJK |
| define void @tail_duplicate_me() nounwind { |
| %c = call i8* @choose(i8* blockaddress(@tail_duplicate_me, %return), |
| i8* blockaddress(@tail_duplicate_me, %altret)) |
| br i1 %a, label %A, label %next |
| br i1 %b, label %B, label %C |
| indirectbr i8* %c, [label %return, label %altret] |