[PATCH] D69970: [CGDebugInfo] Emit subprograms for decls when AT_tail_call is understood (reland with fixes)

Vedant Kumar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 13 17:36:02 PST 2019


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





More information about the llvm-commits mailing list