[ORC] Drop Comdat when discarding IR symbol
authorJonas Hahnfeld <jonas.hahnfeld@cern.ch>
Tue, 24 Jan 2023 09:54:55 +0000 (10:54 +0100)
committerJonas Hahnfeld <jonas.hahnfeld@cern.ch>
Sun, 5 Feb 2023 09:53:36 +0000 (10:53 +0100)
commit50ca8b3e8726180a74fcbc4611893f19189b97c0
tree6c9f8f7ccfd49e5bcb1a1d222490bcce8c2e3a1d
parentb72330cd54f985f3454d3538b504027c3eff8711
[ORC] Drop Comdat when discarding IR symbol

According to the IR verifier, "Declaration[s] may not be in a Comdat!"

This is a re-commit of 76b3f0b4d5a0b8c54147c4c73a30892bbca76467 and
87d7838202267a011639fcbf97263556ccf091dc with updates to the test:
 * Force emission of the extra-module, to trigger the bug after D138264,
   by providing a second symbol @g, and making the comdat nodeduplicate.
   (Technically only one is needed, but two should be safer.)
 * Name the comdat $f to avoid failure on Windows:
   LLVM ERROR: Associative COMDAT symbol 'c' does not exist.
 * Mark the test as UNSUPPORTED on macOS, MachO doesn't support COMDATs.

Differential Revision: https://reviews.llvm.org/D142443
llvm/lib/ExecutionEngine/Orc/Layer.cpp
llvm/test/ExecutionEngine/Orc/Inputs/weak-comdat-def.ll [new file with mode: 0644]
llvm/test/ExecutionEngine/Orc/weak-comdat.ll [new file with mode: 0644]