<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi all,<div><br></div><div>I'm not sure it's a bug or not.</div><div>After pass 'simplifycfg', some DebugLoc info is changed, and become invalid.</div><div>I use the bugpoint to reduce the case, and paste it here:</div><div><div>**************************************************************************************************  <br></div><div><font face="verdana, sans-serif">target datalayout = "e-m:e-i64:64-i128:128-i256:256-i512:512-i1024:1024-i2048:2048-i4096:4096-n8:16:32:64-S128-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"</font></div><div><font face="verdana, sans-serif">target triple = "x86_64-linux-none"</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">; Function Attrs: nounwind</font></div><div><font face="verdana, sans-serif">define internal fastcc float @_Z12generic_fmaxIfET_S0_S0_(float %x, float %y) unnamed_addr !dbg !3 {</font></div><div><font face="verdana, sans-serif">entry:</font></div><div><font face="verdana, sans-serif">  br i1 undef, label %if.then9, label %if.else17, !dbg !7</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">if.then9:                                         ; preds = %entry</font></div><div><font face="verdana, sans-serif">  %call10 = call fastcc i32 @_Z13generic_isnanIfEiT_(float %y), !dbg !8</font></div><div><font face="verdana, sans-serif">  unreachable</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">if.else17:                                        ; preds = %entry</font></div><div><font face="verdana, sans-serif">  %call18 = call fastcc i32 @_Z13generic_isnanIfEiT_(float %y), !dbg !9</font></div><div><font face="verdana, sans-serif">  unreachable</font></div><div><font face="verdana, sans-serif">}</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">; Function Attrs: nounwind</font></div><div><font face="verdana, sans-serif">declare dso_local fastcc i32 @_Z13generic_isnanIfEiT_(float) unnamed_addr</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">!<a href="http://llvm.dbg.cu">llvm.dbg.cu</a> = !{!0}</font></div><div><font face="verdana, sans-serif">!llvm.module.flags = !{!2}</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 7.0.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly)</font></div><div><font face="verdana, sans-serif">!1 = !DIFile(filename: "test.cpp", directory: ".")</font></div><div><font face="verdana, sans-serif">!2 = !{i32 2, !"Debug Info Version", i32 3}</font></div><div><font face="verdana, sans-serif">!3 = distinct !DISubprogram(name: "generic_fmax<float>", scope: !4, file: !4, line: 19, type: !5, isLocal: false, isDefinition: true, scopeLine: 20, flags: DIFlagPrototyped, isOptimized: false, unit: !0)</font></div><div><font face="verdana, sans-serif">!4 = !DIFile(filename: "test.h", directory: ".")</font></div><div><font face="verdana, sans-serif">!5 = !DISubroutineType(types: !6)</font></div><div><font face="verdana, sans-serif">!6 = !{}</font></div><div><font face="verdana, sans-serif">!7 = !DILocation(line: 27, column: 13, scope: !3)</font></div><div><font face="verdana, sans-serif">!8 = !DILocation(line: 28, column: 5, scope: !3)</font></div><div><font face="verdana, sans-serif">!9 = !DILocation(line: 34, column: 13, scope: !3)</font></div></div><div>**************************************************************************************************<br></div><div><br></div><div>And after pass 'simplifycfg', the DebugLoc info attached to the call instruction will be changed into <font face="verdana, sans-serif">'<b>!7 = !DILocation(line: 0, scope: !3)</b></font><span style="font-family:verdana,sans-serif">'</span><font face="arial, helvetica, sans-serif">, which is invalid.</font></div><div><b>after:</b></div><div>**************************************************************************************************  <b><br></b></div><div><div><font face="verdana, sans-serif">target datalayout = "e-m:e-i64:64-i128:128-i256:256-i512:512-i1024:1024-i2048:2048-i4096:4096-n8:16:32:64-S128-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"</font></div><div><font face="verdana, sans-serif">target triple = "x86_64-linux-none"</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">define internal fastcc float @_Z12generic_fmaxIfET_S0_S0_(float %x, float %y) unnamed_addr !dbg !3 {</font></div><div><font face="verdana, sans-serif">entry:</font></div><div><font face="verdana, sans-serif">  %call10 = call fastcc i32 @_Z13generic_isnanIfEiT_(float %y), !dbg !7</font></div><div><font face="verdana, sans-serif">  unreachable</font></div><div><font face="verdana, sans-serif">}</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">declare dso_local fastcc i32 @_Z13generic_isnanIfEiT_(float) unnamed_addr</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">!<a href="http://llvm.dbg.cu">llvm.dbg.cu</a> = !{!0}</font></div><div><font face="verdana, sans-serif">!llvm.module.flags = !{!2}</font></div><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 7.0.0 ", isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly)</font></div><div><font face="verdana, sans-serif">!1 = !DIFile(filename: "test.cpp", directory: ".")</font></div><div><font face="verdana, sans-serif">!2 = !{i32 2, !"Debug Info Version", i32 3}</font></div><div><font face="verdana, sans-serif">!3 = distinct !DISubprogram(name: "generic_fmax<float>", scope: !4, file: !4, line: 19, type: !5, isLocal: false, isDefinition: true, scopeLine: 20, flags: DIFlagPrototyped, isOptimized: false, unit: !0)</font></div><div><font face="verdana, sans-serif">!4 = !DIFile(filename: "test.h", directory: ".")</font></div><div><font face="verdana, sans-serif">!5 = !DISubroutineType(types: !6)</font></div><div><font face="verdana, sans-serif">!6 = !{}</font></div><div><font face="verdana, sans-serif">!7 = !DILocation(line: 0, scope: !3)</font></div></div><div>**************************************************************************************************  <font face="verdana, sans-serif"><br></font></div><div><br></div><div>So can we just keep the original DebugLoc info for the call instruction?</div><div><br></div><div>Thanks,</div><div>Fangqing</div><div>Xilinx Inc.</div></div></div></div></div>