CodeGen: Stick constant pool entries in COMDAT sections for WinCOFF
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 14 Jul 2014 22:57:27 +0000 (22:57 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 14 Jul 2014 22:57:27 +0000 (22:57 +0000)
commit8bce66b09392b03ef73e0db8419dfd42aaf73c82
tree2b9e0581fb34175f3e7862c3a4f9b2b505eb70d1
parent2034ac81816d6de20b9e0253a6a2a09414571e0e
CodeGen: Stick constant pool entries in COMDAT sections for WinCOFF

COFF lacks a feature that other object file formats support: mergeable
sections.

To work around this, MSVC sticks constant pool entries in special COMDAT
sections so that each constant is in it's own section.  This permits
unused constants to be dropped and it also allows duplicate constants in
different translation units to get merged together.

This fixes PR20262.

Differential Revision: http://reviews.llvm.org/D4482

llvm-svn: 213006
16 files changed:
llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h
llvm/include/llvm/MC/MCSectionCOFF.h
llvm/include/llvm/Target/TargetLoweringObjectFile.h
llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
llvm/lib/MC/MCContext.cpp
llvm/lib/Target/NVPTX/NVPTXTargetObjectFile.h
llvm/lib/Target/TargetLoweringObjectFile.cpp
llvm/lib/Target/X86/X86AsmPrinter.cpp
llvm/lib/Target/X86/X86AsmPrinter.h
llvm/lib/Target/X86/X86TargetObjectFile.cpp
llvm/lib/Target/X86/X86TargetObjectFile.h
llvm/lib/Target/XCore/XCoreTargetObjectFile.cpp
llvm/lib/Target/XCore/XCoreTargetObjectFile.h
llvm/test/CodeGen/X86/constant-pool-sharing.ll
llvm/test/CodeGen/X86/win_cst_pool.ll [new file with mode: 0644]