This revision was automatically updated to reflect the committed changes. Closed by commit rG58817a0783ca: [clang][XCOFF] Indicate that XCOFF does not support COMDATs (authored by daltenty).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D74631/new/ https://reviews.llvm.org/D74631 Files: clang/test/CodeGen/xcoff-comdat.cpp llvm/docs/LangRef.rst llvm/include/llvm/ADT/Triple.h Index: llvm/include/llvm/ADT/Triple.h =================================================================== --- llvm/include/llvm/ADT/Triple.h +++ llvm/include/llvm/ADT/Triple.h @@ -743,7 +743,7 @@ /// Tests whether the target supports comdat bool supportsCOMDAT() const { - return !isOSBinFormatMachO(); + return !(isOSBinFormatMachO() || isOSBinFormatXCOFF()); } /// Tests whether the target uses emulated TLS as default. Index: llvm/docs/LangRef.rst =================================================================== --- llvm/docs/LangRef.rst +++ llvm/docs/LangRef.rst @@ -910,8 +910,8 @@ The linker may choose any COMDAT key but the sections must contain the same amount of data. -Note that the Mach-O platform doesn't support COMDATs, and ELF and WebAssembly -only support ``any`` as a selection kind. +Note that XCOFF and the Mach-O platform don't support COMDATs, and ELF and +WebAssembly only support ``any`` as a selection kind. Here is an example of a COMDAT group where a function will only be selected if the COMDAT key's section is the largest: Index: clang/test/CodeGen/xcoff-comdat.cpp =================================================================== --- /dev/null +++ clang/test/CodeGen/xcoff-comdat.cpp @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -triple powerpc-ibm-aix -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple powerpc64-ibm-aix -emit-llvm -o - %s | FileCheck %s + +class a { + virtual void d() {} + virtual void e(); +}; +void a::e() {} + +// CHECK-NOT: = comdat
Index: llvm/include/llvm/ADT/Triple.h =================================================================== --- llvm/include/llvm/ADT/Triple.h +++ llvm/include/llvm/ADT/Triple.h @@ -743,7 +743,7 @@ /// Tests whether the target supports comdat bool supportsCOMDAT() const { - return !isOSBinFormatMachO(); + return !(isOSBinFormatMachO() || isOSBinFormatXCOFF()); } /// Tests whether the target uses emulated TLS as default. Index: llvm/docs/LangRef.rst =================================================================== --- llvm/docs/LangRef.rst +++ llvm/docs/LangRef.rst @@ -910,8 +910,8 @@ The linker may choose any COMDAT key but the sections must contain the same amount of data. -Note that the Mach-O platform doesn't support COMDATs, and ELF and WebAssembly -only support ``any`` as a selection kind. +Note that XCOFF and the Mach-O platform don't support COMDATs, and ELF and +WebAssembly only support ``any`` as a selection kind. Here is an example of a COMDAT group where a function will only be selected if the COMDAT key's section is the largest: Index: clang/test/CodeGen/xcoff-comdat.cpp =================================================================== --- /dev/null +++ clang/test/CodeGen/xcoff-comdat.cpp @@ -0,0 +1,10 @@ +// RUN: %clang_cc1 -triple powerpc-ibm-aix -emit-llvm -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple powerpc64-ibm-aix -emit-llvm -o - %s | FileCheck %s + +class a { + virtual void d() {} + virtual void e(); +}; +void a::e() {} + +// CHECK-NOT: = comdat
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits