@@ -349,3 +349,55 @@ bogusBB: ; preds = %bogusBB
349
349
%tobool = fcmp une double %inc , 0 .000000e+00
350
350
br label %bogusBB
351
351
}
352
+
353
+ define i32 @pr79158 () {
354
+ ; CHECK-LABEL: @pr79158(
355
+ ; CHECK-NEXT: entry:
356
+ ; CHECK-NEXT: [[X_I:%.*]] = alloca i32, align 4
357
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X_I]])
358
+ ; CHECK-NEXT: store volatile i32 1, ptr [[X_I]], align 4
359
+ ; CHECK-NEXT: [[X_I_0_X_I_0_X_0_X_0_X_0__I:%.*]] = load volatile i32, ptr [[X_I]], align 4
360
+ ; CHECK-NEXT: [[CMP_I:%.*]] = icmp sgt i32 [[X_I_0_X_I_0_X_0_X_0_X_0__I]], 0
361
+ ; CHECK-NEXT: [[TMP0:%.*]] = zext i1 [[CMP_I]] to i32
362
+ ; CHECK-NEXT: [[MUL_I1:%.*]] = mul i32 [[TMP0]], 2147483647
363
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X_I]])
364
+ ; CHECK-NEXT: ret i32 0
365
+ ;
366
+ entry:
367
+ %x.i = alloca i32 , align 4
368
+ call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %x.i )
369
+ store volatile i32 1 , ptr %x.i , align 4
370
+ %x.i.0.x.i.0.x.0.x.0.x.0..i = load volatile i32 , ptr %x.i , align 4
371
+ %cmp.i = icmp sgt i32 %x.i.0.x.i.0.x.0.x.0.x.0..i , 0
372
+ %conv.i = uitofp i1 %cmp.i to double
373
+ %mul.i = fmul double %conv.i , 4294967295 .0
374
+ %conv1.i = fptoui double %mul.i to i32
375
+ call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %x.i )
376
+ ret i32 0
377
+ }
378
+
379
+ define i32 @pr79158_2 () {
380
+ ; CHECK-LABEL: @pr79158_2(
381
+ ; CHECK-NEXT: entry:
382
+ ; CHECK-NEXT: [[X_I:%.*]] = alloca i32, align 4
383
+ ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X_I]])
384
+ ; CHECK-NEXT: store volatile i32 1, ptr [[X_I]], align 4
385
+ ; CHECK-NEXT: [[X_I_0_X_I_0_X_0_X_0_X_0__I:%.*]] = load volatile i32, ptr [[X_I]], align 4
386
+ ; CHECK-NEXT: [[CMP_I:%.*]] = icmp sgt i32 [[X_I_0_X_I_0_X_0_X_0_X_0__I]], 0
387
+ ; CHECK-NEXT: [[TMP0:%.*]] = zext i1 [[CMP_I]] to i32
388
+ ; CHECK-NEXT: [[MUL_I1:%.*]] = mul i32 [[TMP0]], 2147483647
389
+ ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X_I]])
390
+ ; CHECK-NEXT: ret i32 0
391
+ ;
392
+ entry:
393
+ %x.i = alloca i32 , align 4
394
+ call void @llvm.lifetime.start.p0 (i64 4 , ptr nonnull %x.i )
395
+ store volatile i32 1 , ptr %x.i , align 4
396
+ %x.i.0.x.i.0.x.0.x.0.x.0..i = load volatile i32 , ptr %x.i , align 4
397
+ %cmp.i = icmp sgt i32 %x.i.0.x.i.0.x.0.x.0.x.0..i , 0
398
+ %conv.i = uitofp i1 %cmp.i to double
399
+ %mul.i = fmul double %conv.i , 2147483648 .0
400
+ %conv1.i = fptoui double %mul.i to i32
401
+ call void @llvm.lifetime.end.p0 (i64 4 , ptr nonnull %x.i )
402
+ ret i32 0
403
+ }
0 commit comments