[llvm] r335918 - [COFF] Fix constant sharing regression for MinGW
Martin Storsjo via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 28 13:28:29 PDT 2018
Author: mstorsjo
Date: Thu Jun 28 13:28:29 2018
New Revision: 335918
URL: http://llvm.org/viewvc/llvm-project?rev=335918&view=rev
Log:
[COFF] Fix constant sharing regression for MinGW
This fixes a regression since SVN r334523, where the object files
built targeting MinGW were rejected by GNU binutils tools. Prior to
that commit, we only put constants in comdat for MSVC configurations.
Differential Revision: https://reviews.llvm.org/D48567
Modified:
llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
llvm/trunk/test/CodeGen/X86/win_cst_pool.ll
Modified: llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp?rev=335918&r1=335917&r2=335918&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp (original)
+++ llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp Thu Jun 28 13:28:29 2018
@@ -1350,7 +1350,10 @@ static std::string scalarConstantToHexSt
MCSection *TargetLoweringObjectFileCOFF::getSectionForConstant(
const DataLayout &DL, SectionKind Kind, const Constant *C,
unsigned &Align) const {
- if (Kind.isMergeableConst() && C) {
+ if (Kind.isMergeableConst() && C &&
+ getContext().getAsmInfo()->hasCOFFAssociativeComdats()) {
+ // GNU binutils doesn't support the kind of symbol with a null
+ // storage class that this generates.
const unsigned Characteristics = COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
COFF::IMAGE_SCN_MEM_READ |
COFF::IMAGE_SCN_LNK_COMDAT;
Modified: llvm/trunk/test/CodeGen/X86/win_cst_pool.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/win_cst_pool.ll?rev=335918&r1=335917&r2=335918&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/win_cst_pool.ll (original)
+++ llvm/trunk/test/CodeGen/X86/win_cst_pool.ll Thu Jun 28 13:28:29 2018
@@ -1,4 +1,5 @@
; RUN: llc < %s -mtriple=x86_64-win32 -mattr=sse2 -mattr=avx | FileCheck %s
+; RUN: llc < %s -mtriple=x86_64-win32-gnu -mattr=sse2 -mattr=avx | FileCheck -check-prefix=MINGW %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
@@ -14,6 +15,14 @@ define double @double() {
; CHECK: movsd __real at 0000000000800000(%rip), %xmm0
; CHECK-NEXT: ret
+; MINGW: .section .rdata,"dr"
+; MINGW-NEXT: .p2align 3
+; MINGW-NEXT: [[LABEL:\.LC.*]]:
+; MINGW-NEXT: .quad 8388608
+; MINGW: double:
+; MINGW: movsd [[LABEL]](%rip), %xmm0
+; MINGW-NEXT: ret
+
define <4 x i32> @vec1() {
ret <4 x i32> <i32 3, i32 2, i32 1, i32 0>
}
More information about the llvm-commits
mailing list