Passes to add/validate synthetic debug info


I’ve prototyped a pair of passes which 1) add synthetic debug info to a Module and 2) determine how much of that info is lost. The idea is to make it easier to write targeted test cases for debug info preservation. For example, here is a quick way to test that Mem2Reg doesn’t drop debug info from one test input:

; RUN: opt < %s -debugify -mem2reg -check-debugify -S 2>&1 | FileCheck %s
; CHECK: CheckDebugify: PASS

So far, I’ve used this utility to identify problems in LSR and instcombine (haven’t gotten around to filing bugs yet). There’s some more discussion about this utility on the thread “RFC: [GlobalISel] Towards a generic MI combiner framework”, where Amara and Daniel suggested trying something similar at the MI level.

I’ve put the passes up for review here I just wanted to ping llvm-dev to raise awareness about the proposed passes, and to see if anyone in the community has concerns/feedback.


After you addressed all my comments, this is pretty close to me. I'll
take another look today or tomorrow but I'm confident we can iterate
in tree.
In other words, +1 from me (you may want to wait a week or so before
committing so that people have a chance to take a look).

Thanks everybody for your feedback on the patch! I think I’ve addressed all of it now. I’ll commit this tomorrow barring any further comments.