brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 966abdd Raw
88 lines · plain
1; RUN: opt -S -loop-reduce %s -o - | FileCheck %s2; REQUIRES: x86-registered-target3 4;; Ensure that we retain debuginfo for the induction variable and dependant5;; variables when loop strength reduction is applied to the loop.6;; This IR produced from:7;;8;; clang -S -emit-llvm -Xclang -disable-llvm-passes -g lsr-basic.cpp -o9;; Then executing opt -O2 up to the the loopFullUnroll pass.10;; void basic_recurrence(unsigned k, unsigned size, unsigned *data)11;; {12;;    unsigned i = 0;13;; #pragma clang loop vectorize(disable)14;;    while (i < size) {15;;         unsigned comp = i * k; 16;;         data[i] = comp;17;;         i++;18;;    }19;; }20; CHECK: #dbg_value(i64 %lsr.iv, ![[i:[0-9]+]], !DIExpression(),21; CHECK: #dbg_value(!DIArgList(i64 %lsr.iv, i32 %k), ![[comp:[0-9]+]], !DIExpression(DW_OP_LLVM_arg, 0, DW_OP_LLVM_arg, 1, DW_OP_mul, DW_OP_stack_value),22; CHECK: #dbg_value(i64 %lsr.iv, ![[i]],  !DIExpression(DW_OP_consts, 1, DW_OP_plus, DW_OP_stack_value),23; CHECK: ![[i]] = !DILocalVariable(name: "i"24; CHECK: ![[comp]] = !DILocalVariable(name: "comp"25 26target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"27target triple = "x86_64-unknown-linux-gnu"28 29define dso_local void @_Z16basic_recurrencejjPj(i32 %k, i32 %size, ptr nocapture %data) local_unnamed_addr !dbg !7 {30entry:31  call void @llvm.dbg.value(metadata i32 %k, metadata !13, metadata !DIExpression()), !dbg !1432  call void @llvm.dbg.value(metadata i32 %size, metadata !15, metadata !DIExpression()), !dbg !1433  call void @llvm.dbg.value(metadata ptr %data, metadata !16, metadata !DIExpression()), !dbg !1434  br label %while.cond, !dbg !1435 36while.cond:                                       ; preds = %while.body, %entry37  %i.0 = phi i32 [ 0, %entry ], [ %inc, %while.body ]38  call void @llvm.dbg.value(metadata i32 %i.0, metadata !17, metadata !DIExpression()), !dbg !1439  %cmp = icmp ult i32 %i.0, %size, !dbg !1440  br i1 %cmp, label %while.body, label %while.end, !dbg !1441 42while.body:                                       ; preds = %while.cond43  %mul = mul i32 %i.0, %k, !dbg !1844  call void @llvm.dbg.value(metadata i32 %mul, metadata !20, metadata !DIExpression()), !dbg !1845  %idxprom = zext i32 %i.0 to i64, !dbg !1846  %arrayidx = getelementptr inbounds i32, ptr %data, i64 %idxprom, !dbg !1847  store i32 %mul, ptr %arrayidx, align 4, !dbg !1848  %inc = add nuw i32 %i.0, 1, !dbg !1849  call void @llvm.dbg.value(metadata i32 %inc, metadata !17, metadata !DIExpression()), !dbg !1450  br label %while.cond, !dbg !14, !llvm.loop !2151 52while.end:                                        ; preds = %while.cond53  ret void, !dbg !1454}55 56declare void @llvm.dbg.value(metadata, metadata, metadata)57 58!llvm.dbg.cu = !{!0}59!llvm.module.flags = !{!3, !4, !5}60!llvm.ident = !{!6}61 62!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 12.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, splitDebugInlining: false, nameTableKind: None)63!1 = !DIFile(filename: "basic.cpp", directory: "/test")64!2 = !{}65!3 = !{i32 7, !"Dwarf Version", i32 4}66!4 = !{i32 2, !"Debug Info Version", i32 3}67!5 = !{i32 1, !"wchar_size", i32 4}68!6 = !{!"clang version 12.0.0)"}69!7 = distinct !DISubprogram(name: "basic_recurrence", linkageName: "_Z16basic_recurrencejjPj", scope: !8, file: !8, line: 82, type: !9, scopeLine: 83, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)70!8 = !DIFile(filename: "./basic.cpp", directory: "/test")71!9 = !DISubroutineType(types: !10)72!10 = !{null, !11, !11, !12}73!11 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)74!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)75!13 = !DILocalVariable(name: "k", arg: 1, scope: !7, file: !8, line: 82, type: !11)76!14 = !DILocation(line: 0, scope: !7)77!15 = !DILocalVariable(name: "size", arg: 2, scope: !7, file: !8, line: 82, type: !11)78!16 = !DILocalVariable(name: "data", arg: 3, scope: !7, file: !8, line: 82, type: !12)79!17 = !DILocalVariable(name: "i", scope: !7, file: !8, line: 84, type: !11)80!18 = !DILocation(line: 87, column: 27, scope: !19)81!19 = distinct !DILexicalBlock(scope: !7, file: !8, line: 86, column: 22)82!20 = !DILocalVariable(name: "comp", scope: !19, file: !8, line: 87, type: !11)83!21 = distinct !{!21, !22, !23, !24, !25}84!22 = !DILocation(line: 86, column: 5, scope: !7)85!23 = !DILocation(line: 90, column: 5, scope: !7)86!24 = !{!"llvm.loop.mustprogress"}87!25 = !{!"llvm.loop.vectorize.width", i32 1}88