1; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s 2; This tests currently fails as MachineLICM does not compute register pressure 3; correctly. More details: llvm.org/PR23143 4; XFAIL: * 5 6; MachineLICM should take register pressure into account. 7; CHECK-NOT: Spill 8 9%struct.A = type { i32, i32, i32, i32, i32, i32, i32 } 10 11define void @test(i1 %b, %struct.A* %a) nounwind { 12entry: 13 br label %loop-header 14 15loop-header: 16 br label %loop-body 17 18loop-body: 19 %0 = getelementptr inbounds %struct.A, %struct.A* %a, i64 0, i32 0 20 %1 = getelementptr inbounds %struct.A, %struct.A* %a, i64 0, i32 1 21 %2 = getelementptr inbounds %struct.A, %struct.A* %a, i64 0, i32 2 22 %3 = getelementptr inbounds %struct.A, %struct.A* %a, i64 0, i32 3 23 %4 = getelementptr inbounds %struct.A, %struct.A* %a, i64 0, i32 4 24 %5 = getelementptr inbounds %struct.A, %struct.A* %a, i64 0, i32 5 25 %6 = getelementptr inbounds %struct.A, %struct.A* %a, i64 0, i32 6 26 call void @assign(i32* %0) 27 call void @assign(i32* %1) 28 call void @assign(i32* %2) 29 call void @assign(i32* %3) 30 call void @assign(i32* %4) 31 call void @assign(i32* %5) 32 call void @assign(i32* %6) 33 br i1 %b, label %loop-body, label %loop-exit 34 35loop-exit: 36 ret void 37} 38 39declare void @assign(i32*) 40