]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/Hexagon/branchfolder-keep-impdef.ll
Vendor import of llvm trunk r300422:
[FreeBSD/FreeBSD.git] / test / CodeGen / Hexagon / branchfolder-keep-impdef.ll
1 ; RUN: llc -march=hexagon -verify-machineinstrs < %s | FileCheck %s
2 ;
3 ; Check that the testcase compiles successfully. Expect that if-conversion
4 ; took place.
5 ; CHECK-LABEL: fred:
6 ; CHECK: if (!p0) r1 = memw(r0+#0)
7
8 target triple = "hexagon"
9
10 define void @fred(i32 %p0) local_unnamed_addr align 2 {
11 b0:
12   br i1 undef, label %b1, label %b2
13
14 b1:                                               ; preds = %b0
15   %t0 = load i8*, i8** undef, align 4
16   br label %b2
17
18 b2:                                               ; preds = %b1, %b0
19   %t1 = phi i8* [ %t0, %b1 ], [ undef, %b0 ]
20   %t2 = getelementptr inbounds i8, i8* %t1, i32 %p0
21   tail call void @llvm.memmove.p0i8.p0i8.i32(i8* undef, i8* %t2, i32 undef, i32 1, i1 false) #1
22   unreachable
23 }
24
25 declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture readonly, i32, i32, i1) #0
26
27 attributes #0 = { argmemonly nounwind }
28 attributes #1 = { nounwind }
29