vsk added a comment.

@dblaikie thanks for chasing that down & the detailed explanation.

It's unfortunate that introducing call site info affects the line table. The 
impact of the change seems somewhat neutral (the additional line 0 locations 
aren't //wrong//, exactly), so I'm not sure it's worth keeping track of all the 
labels //just// referenced by call site tags and teaching DwarfDebug to tiptoe 
around those. As you point out, perhaps the divergence could be reduced by some 
general (hypothetical) improvement w.r.t line 0 locations for spill code. That 
might be the cheaper option (IIRC there's a predicate available on 
`MI.getPseudoValue()` to check for a spilled value).

I'm going to hold off on landing this, though. We've just gotten an internal 
report about some KAsan code that trips:

  inlinable function call in a function with debug info must have a !dbg 
location
    %134 = call i8* @__asan_memcpy(i8* %agg.tmp2.sroa.0.0..sroa_cast10.i, i8* 
%agg.tmp.sroa.0.i.0..sroa_cast, i64 32)

Apparently there's a `#define memcpy __asan_memcpy` in some system-internal 
KAsan header, and some pass (likely ASan) introduces __asan_memcpy calls 
without attaching debug info. So we'll have to fix that first.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69970/new/

https://reviews.llvm.org/D69970



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to