[flang] Add COMDAT to global variables where needed
authorDavid Truby <david@truby.dev>
Mon, 26 Jun 2023 14:03:17 +0000 (15:03 +0100)
committerDavid Truby <david@truby.dev>
Wed, 28 Jun 2023 12:49:30 +0000 (13:49 +0100)
commit8cb0c3bb2173890e5f6cf2082fe65682b15888ba
treedf091662abfab5444c706bcc5c7fec524d73e603
parent0e4d5b139816bb327d0c0dbdbea404e4fcc7b938
[flang] Add COMDAT to global variables where needed

On platforms which support COMDAT sections we should use them when
linkonce or linkonce_odr linkage is requested. This is required on
Windows (PE/COFF) and provides better behaviour than weak symbols on
ELF-based platforms.

This patch also reverts string literals to use linkonce instead of
internal linkage now that comdats are supported.

Differential Revision: https://reviews.llvm.org/D153768
12 files changed:
flang/lib/Optimizer/Builder/FIRBuilder.cpp
flang/lib/Optimizer/CodeGen/CodeGen.cpp
flang/test/Fir/convert-to-llvm.fir
flang/test/Fir/tbaa.fir
flang/test/Lower/allocatable-assignment.f90
flang/test/Lower/character-assignment.f90
flang/test/Lower/convert.f90
flang/test/Lower/global-format-strings.f90
flang/test/Lower/io-statement-open-options.f90
flang/test/Lower/namelist.f90
flang/test/Lower/read-write-buffer.f90
flang/unittests/Optimizer/Builder/FIRBuilderTest.cpp