[Verifier] Reject dllexport with non-default visibility
authorFangrui Song <i@maskray.me>
Mon, 5 Sep 2022 17:53:41 +0000 (10:53 -0700)
committerFangrui Song <i@maskray.me>
Mon, 5 Sep 2022 17:53:41 +0000 (10:53 -0700)
commit2417618d5ca4b151908df09d8e3a00a49f029222
treea34bc0871c5a22c0068133d44362cdc79056fb41
parent91d8324366f405e871aa8174ab61fc66912964dd
[Verifier] Reject dllexport with non-default visibility

Add a visibility check for dllimport and dllexport. Note: dllimport with a
non-default visibility (implicit dso_local) is already rejected, but with a less
clear dso_local error.

The MC level visibility `MCSA_Exported` (D123951) is mapped from IR level
default visibility when dllexport is specified. The D123951 error is now very
difficult to trigger (needs to disable the IR verifier).

Reviewed By: mstorsjo

Differential Revision: https://reviews.llvm.org/D133267
llvm/lib/IR/Verifier.cpp
llvm/test/CodeGen/PowerPC/aix-xcoff-exported-nondefault.ll
llvm/test/Feature/globalvars.ll
llvm/test/Verifier/dllstorage.ll [new file with mode: 0644]