HomePhabricator

[Verifier] Avoid visiting DIGlobalVariables twice.

Authored by davide on Aug 17 2017, 4:32 AM.

Description

[Verifier] Avoid visiting DIGlobalVariables twice.

We currently visit them twice.
Once, through visitMDNode() -> (the code generated by)

`../include/llvm/IR/Metadata.def:109` -> `visitDIGlobalVariable()`

Then, through visitMDNode() -> visitDIGlobalVariableExpression()

-> `visitDIGlobalVariable()`

This results in verification failures printed twice, e.g.:

$ ./opt -verify ../../test/DebugInfo/pr34186.ll
missing global variable type
!4 = distinct !DIGlobalVariable(name: "pat", scope: !0,
  file: !1, line: 27, isLocal: true, isDefinition: true)
missing global variable type
!4 = distinct !DIGlobalVariable(name: "pat", scope: !0,
  file: !1, line: 27, isLocal: true, isDefinition: true)
./opt: ../../test/DebugInfo/pr34186.ll: error: input module is broken!

The patch removes one call so we ensure each GV is visited exactly once.

Differential Revision: https://reviews.llvm.org/D36797

llvm-svn: 311081

Details