49 lines · plain
1; RUN: llc < %s | FileCheck %s2 3target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-apple-macosx10.10.0"5 6; Function Attrs: nounwind7declare i32 @printf(ptr nocapture readonly, ...)8 9; On X86 1 is true and 0 is false, so we can't perform the combine:10; (and (setgt X, true), (setgt Y, true)) -> (setgt (or X, Y), true)11; This combine only works if the true value is -1.12 13 14;CHECK: cmpl15;CHECK: setl16;CHECK: cmpl17;CHECK: setl18;CHECK: orb19;CHECK: je20 21@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 122; Function Attrs: optsize ssp uwtable23define i32 @foo(i32 %a, i32 %b, ptr %c) {24if.else429:25 %cmp.i1144 = icmp eq ptr %c, null26 %cmp430 = icmp slt i32 %a, 227 %cmp432 = icmp slt i32 %b, 228 %or.cond710 = or i1 %cmp430, %cmp43229 %or.cond710.not = xor i1 %or.cond710, true30 %brmerge1448 = or i1 %cmp.i1144, %or.cond710.not31 br i1 %brmerge1448, label %ret1, label %ret232 33ret1:34 ret i32 035 36ret2:37 ret i32 138}39 40define i32 @main(i32 %argc, ptr nocapture readnone %argv) {41 %res = alloca i32, align 442 %t = call i32 @foo(i32 1, i32 2, ptr %res) #343 %v = call i32 (ptr, ...) @printf(ptr @.str, i32 %t)44 ret i32 045}46 47 48 49