brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · f599cc9 Raw
48 lines · plain
1; RUN: opt -mtriple=x86_64-unknown-linux-gnu -S -debugify -codegenprepare < %s | FileCheck %s2 3target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"4target triple = "x86_64-unknown-linux-gnu"5 6@x = external global [1 x [2 x <4 x float>]]7 8declare void @foo(i32)9 10declare void @slowpath(i32, ptr)11 12; Is DI maintained after sinking bitcast?13define void @test(i1 %cond, ptr %base) {14; CHECK-LABEL: @test15entry:16  %addr = getelementptr inbounds i64, ptr %base, i64 517  %casted = bitcast ptr %addr to ptr18  br i1 %cond, label %if.then, label %fallthrough19 20if.then:21; CHECK-LABEL: if.then:22; CHECK: bitcast ptr %addr to ptr, !dbg ![[castLoc:[0-9]+]]23  %v1 = load i32, ptr %casted, align 424  call void @foo(i32 %v1)25  %cmp = icmp eq i32 %v1, 026  br i1 %cmp, label %rare.1, label %fallthrough27 28fallthrough:29  ret void30 31rare.1:32; CHECK-LABEL: rare.1:33; CHECK: bitcast ptr %addr to ptr, !dbg ![[castLoc]]34  call void @slowpath(i32 %v1, ptr %casted) ;; NOT COLD35  br label %fallthrough36}37 38; Is DI maitained when a GEP with all zero indices gets converted to bitcast?39define void @test2() {40; CHECK-LABEL: @test241load.i145:42; CHECK: bitcast ptr @x to ptr, !dbg ![[castLoc2:[0-9]+]]43  %x_offset = getelementptr [1 x [2 x <4 x float>]], ptr @x, i32 0, i64 044  ret void45}46 47; CHECK: ![[castLoc]] = !DILocation(line: 248; CHECK: ![[castLoc2]] = !DILocation(line: 11