[polly] Add diagnostic remark for ReportVariantBasePtr

Andreas Simbuerger simbuerg at googlemail.com
Thu Jun 26 13:12:54 PDT 2014


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



On 06/26/2014 09:25 PM, Tobias Grosser wrote:
> On 26/06/2014 21:16, Andreas Simbürger wrote:
>> What was the exact output?
> 
> polly-clang /tmp/test.c  -c -mllvm -polly -O3  -Rpass-missed=polly 
> -mllvm -polly-detect-track-failures -mllvm
> -polly-detect-keep-going -gcolumn-info /tmp/test.c:6:9: remark: The
> following errors keep this region from being a Scop. 
> [-Rpass-missed=polly-detect] for (int i=0; i<32; i++) ^ 
> /tmp/test.c:7:6: remark: The base address of this array is not
> invariant inside the loop [-Rpass-missed=polly-detect] A->b[i] =
> A->b[i+p]; ^ /tmp/test.c:7:6: remark: The base address of this
> array is not invariant inside the loop 
> [-Rpass-missed=polly-detect]
> 
> 
>> I would expect the source location reported for the write and
>> then just the message with the line/column info but without 
>> source code.
> 
> Both remarks give the very same location. I would have expected
> the first one referring to the first memory address, the second one
> to the second memory address. (I would also expect to see the
> source line twice. Once with the caret at the first read, once at
> the second).
> 

That would be nice. However, if you have a look at the attached *.ll
file (your example translated with the command-line you posted), you
will see that the dbg metadata that is attached to all instructions
inside the loop body is:

!26 = metadata !{i32 7, i32 5, metadata !18, null}.

So no matter what instruction I use inside the body, I will only be
able to report line 7 column 5 :o(.
The fact that both errors have the same DebugLoc leads to to effect
that you don't get the same source location printed twice in a row (I
guess).

How can we increase the precision of the column info?

Cheers,
Andreas
> 
> 
> Cheers, Tobias

- -- 
Andreas Simbürger
University of Passau - Programming Group
http://www.infosun.fim.uni-passau.de/cl/staff/simbuerger/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBAgAGBQJTrH7GAAoJELS7a/6Ti2HYISMH/0dRZio+bEwKAQpUUYplThZw
NzNE2/drPnMbDuhCtxyVuvGYLCoQJTU0VHbIzW7j0iT4Fg5t9goNs0stpJhwKAjq
DqWUZseVg1H5mDkJI/CrUxM2oS1jt/ZAcGbFpzbDanmpjN3nrEuBsvELGivivjGc
EbpPReIVoJPyzLCXC7oYEHuY2BbMbannK8fLUagiPlfPt31jHlvDpWkPgebTS9BR
V9Wvf7bY5/+ppfwH+q86jD/use+leZmb6OBy4q0ZRULKwTnMKbDz2OIJN+eosqeO
N6rsk0EzZGX3ojzV0qe7HR9Mnrqrhm+OA2DmaEDkprMBcmNpk8hX2pqCQKyfB5Y=
=JxRo
-----END PGP SIGNATURE-----
-------------- next part --------------
; ModuleID = 'tobi-scop.c'
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.b = type { double** }

; Function Attrs: nounwind uwtable
define void @a(%struct.b* nocapture readonly %A) #0 {
entry:
  tail call void @llvm.dbg.value(metadata !{%struct.b* %A}, i64 0, metadata !16), !dbg !23
  tail call void @llvm.dbg.value(metadata !24, i64 0, metadata !17), !dbg !25
  %b = getelementptr inbounds %struct.b* %A, i64 0, i32 0, !dbg !26
  br label %for.body, !dbg !27

for.body:                                         ; preds = %for.body, %entry
  %indvar = phi i64 [ 0, %entry ], [ %3, %for.body ]
  %0 = add i64 %indvar, 1, !dbg !26
  %1 = load double*** %b, align 8, !dbg !26, !tbaa !28
  %arrayidx = getelementptr double** %1, i64 %0, !dbg !26
  %2 = load double** %arrayidx, align 8, !dbg !26, !tbaa !33
  %arrayidx3 = getelementptr double** %1, i64 %indvar, !dbg !26
  store double* %2, double** %arrayidx3, align 8, !dbg !26, !tbaa !33
  %3 = add i64 %0, 1, !dbg !26
  %4 = load double*** %b, align 8, !dbg !26, !tbaa !28
  %arrayidx.1 = getelementptr double** %4, i64 %3, !dbg !26
  %5 = load double** %arrayidx.1, align 8, !dbg !26, !tbaa !33
  %arrayidx3.1 = getelementptr double** %4, i64 %0, !dbg !26
  store double* %5, double** %arrayidx3.1, align 8, !dbg !26, !tbaa !33
  %exitcond.1 = icmp eq i64 %3, 32, !dbg !27
  br i1 %exitcond.1, label %for.end, label %for.body, !dbg !27

for.end:                                          ; preds = %for.body
  ret void, !dbg !34
}

; Function Attrs: nounwind readnone
declare void @llvm.dbg.value(metadata, i64, metadata) #1

attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { nounwind readnone }

!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!20, !21}
!llvm.ident = !{!22}

!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5.0 ", i1 true, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/home/simbuerg/src/examples/polli/tobi-scop.c] [DW_LANG_C99]
!1 = metadata !{metadata !"tobi-scop.c", metadata !"/home/simbuerg/src/examples/polli"}
!2 = metadata !{}
!3 = metadata !{metadata !4}
!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"a", metadata !"a", metadata !"", i32 5, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, void (%struct.b*)* @a, null, null, metadata !15, i32 5} ; [ DW_TAG_subprogram ] [line 5] [def] [a]
!5 = metadata !{i32 786473, metadata !1}          ; [ DW_TAG_file_type ] [/home/simbuerg/src/examples/polli/tobi-scop.c]
!6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
!7 = metadata !{null, metadata !8}
!8 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !9} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from b]
!9 = metadata !{i32 786451, metadata !1, null, metadata !"b", i32 1, i64 64, i64 64, i32 0, i32 0, null, metadata !10, i32 0, null, null, null} ; [ DW_TAG_structure_type ] [b] [line 1, size 64, align 64, offset 0] [def] [from ]
!10 = metadata !{metadata !11}
!11 = metadata !{i32 786445, metadata !1, metadata !9, metadata !"b", i32 2, i64 64, i64 64, i64 0, i32 0, metadata !12} ; [ DW_TAG_member ] [b] [line 2, size 64, align 64, offset 0] [from ]
!12 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !13} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from ]
!13 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !14} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from double]
!14 = metadata !{i32 786468, null, null, metadata !"double", i32 0, i64 64, i64 64, i64 0, i32 0, i32 4} ; [ DW_TAG_base_type ] [double] [line 0, size 64, align 64, offset 0, enc DW_ATE_float]
!15 = metadata !{metadata !16, metadata !17}
!16 = metadata !{i32 786689, metadata !4, metadata !"A", metadata !5, i32 16777221, metadata !8, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [A] [line 5]
!17 = metadata !{i32 786688, metadata !18, metadata !"i", metadata !5, i32 6, metadata !19, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [i] [line 6]
!18 = metadata !{i32 786443, metadata !1, metadata !4, i32 6, i32 3, i32 0, i32 0} ; [ DW_TAG_lexical_block ] [/home/simbuerg/src/examples/polli/tobi-scop.c]
!19 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
!20 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
!21 = metadata !{i32 2, metadata !"Debug Info Version", i32 1}
!22 = metadata !{metadata !"clang version 3.5.0 "}
!23 = metadata !{i32 5, i32 18, metadata !4, null}
!24 = metadata !{i32 0}
!25 = metadata !{i32 6, i32 12, metadata !18, null}
!26 = metadata !{i32 7, i32 5, metadata !18, null}
!27 = metadata !{i32 6, i32 8, metadata !18, null}
!28 = metadata !{metadata !29, metadata !30, i64 0}
!29 = metadata !{metadata !"b", metadata !30, i64 0}
!30 = metadata !{metadata !"any pointer", metadata !31, i64 0}
!31 = metadata !{metadata !"omnipotent char", metadata !32, i64 0}
!32 = metadata !{metadata !"Simple C/C++ TBAA"}
!33 = metadata !{metadata !30, metadata !30, i64 0}
!34 = metadata !{i32 8, i32 1, metadata !4, null} ; [ DW_TAG_imported_declaration ]


More information about the llvm-commits mailing list