; This tests the basic structure of the Unreachable instruction. ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ ; RUN: --target x8632 -i %s --args -O2 \ ; RUN: | %if --need=target_X8632 --command FileCheck %s ; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ ; RUN: --target x8632 -i %s --args -Om1 \ ; RUN: | %if --need=target_X8632 --command FileCheck %s ; RUN: %if --need=target_ARM32 \ ; RUN: --command %p2i --filetype=obj \ ; RUN: --disassemble --target arm32 -i %s --args -O2 \ ; RUN: | %if --need=target_ARM32 \ ; RUN: --command FileCheck --check-prefix ARM32 %s ; RUN: %if --need=target_ARM32 \ ; RUN: --command %p2i --filetype=obj \ ; RUN: --disassemble --target arm32 -i %s --args -Om1 \ ; RUN: | %if --need=target_ARM32 \ ; RUN: --command FileCheck --check-prefix ARM32 %s ; RUN: %if --need=target_MIPS32 --need=allow_dump \ ; RUN: --command %p2i --filetype=asm --assemble \ ; RUN: --disassemble --target mips32 -i %s --args -Om1 \ ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ ; RUN: --command FileCheck --check-prefix MIPS32 %s ; RUN: %if --need=target_MIPS32 --need=allow_dump \ ; RUN: --command %p2i --filetype=asm --assemble \ ; RUN: --disassemble --target mips32 -i %s --args -O2 \ ; RUN: | %if --need=target_MIPS32 --need=allow_dump \ ; RUN: --command FileCheck --check-prefix MIPS32-O2 %s define internal i32 @divide(i32 %num, i32 %den) { entry: %cmp = icmp ne i32 %den, 0 br i1 %cmp, label %return, label %abort abort: ; preds = %entry unreachable return: ; preds = %entry %div = sdiv i32 %num, %den ret i32 %div } ; CHECK-LABEL: divide ; CHECK: cmp ; CHECK: ud2 ; CHECK: cdq ; CHECK: idiv ; CHECK: ret ; ARM32-LABEL: divide ; ARM32: tst ; ARM32: e7fedef0 ; ARM32: bl {{.*}} __divsi3 ; ARM32: bx lr ; MIPS32-LABEL: divide ; MIPS32: beqz ; MIPS32: nop ; MIPS32: teq zero,zero ; MIPS32: div ; MIPS32-O2-LABEL: divide ; MIPS32-O2: bne ; MIPS32-O2: nop ; MIPS32-O2: teq zero,zero ; MIPS32-O2: div