1; RUN: llc < %s -mtriple=x86_64-apple-macosx  | FileCheck %s
2; This is supposed to be testing BranchFolding's common
3; code hoisting logic, but has been erroneously passing due
4; to there being a redundant xorl in the entry block
5; and no common code to hoist.
6; However, now that MachineSink sinks the redundant xor
7; hoist-common looks at it and rejects it for hoisting,
8; which causes this test to fail.
9; Since it seems this test is broken, marking XFAIL for now
10; until someone decides to remove it or fix what it tests.
11; XFAIL: *
12
13; Common "xorb al, al" instruction in the two successor blocks should be
14; moved to the entry block above the test + je.
15
16; rdar://9145558
17
18define zeroext i1 @t(i32 %c) nounwind ssp {
19entry:
20; CHECK-LABEL: t:
21; CHECK: xorl %eax, %eax
22; CHECK: test
23; CHECK: je
24  %tobool = icmp eq i32 %c, 0
25  br i1 %tobool, label %return, label %if.then
26
27if.then:
28; CHECK: callq
29  %call = tail call zeroext i1 (...)* @foo() nounwind
30  br label %return
31
32return:
33; CHECK: ret
34  %retval.0 = phi i1 [ %call, %if.then ], [ false, %entry ]
35  ret i1 %retval.0
36}
37
38declare zeroext i1 @foo(...)
39