[PATCH] D135267: [DWARF] Share across CUs only when order free

DianQK via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 5 23:19:56 PDT 2022


DianQK added a comment.

In D135267#3837570 <https://reviews.llvm.org/D135267#3837570>, @dblaikie wrote:

> Sorry, I'm not really understanding most of this - could you explain further what you mean by "successor" nodes and what "order free" means in this context?

Sorry I didn't explain clearly.

In this context,

  !10 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", scope: !4, file: !1, runtimeLang: DW_LANG_Swift)
  !21 = distinct !DISubprogram(name: "hashValue.get", linkageName: "$hashValueGetInFoo2", scope: !10, file: !14, type: !15, spFlags: DISPFlagDefinition, unit: !0)

!21 is a "successor" node of !10 (link by scope).

"order" is similar in D135114 <https://reviews.llvm.org/D135114>. 
In my test case, no matter how we swap the order, it fails. It always creates first in the "main CU" because of globals in CU.

After I created this Diff, I found this D135114 <https://reviews.llvm.org/D135114> and tried this patch, which seems to fix the problem nicely.
But in a larger project <https://github.com/DianQK/LTOGlobalMachineOutliner> I get warnings "no mapping for range" and "inconsistent range data".
Maybe we have some other work to do.

> Currently, I can confirm that if I disable sharing any DIType, everything works fine.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D135267



More information about the llvm-commits mailing list