Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/bsd/llvm/dist/llvm Import LLVM 3.4 RC2 r196603.



details:   https://anonhg.NetBSD.org/src/rev/ad6be2c1dc9b
branches:  trunk
changeset: 791852:ad6be2c1dc9b
user:      joerg <joerg%NetBSD.org@localhost>
date:      Fri Dec 06 23:18:22 2013 +0000

description:
Import LLVM 3.4 RC2 r196603.
Bug fixes, most noticable for inconsistencies in vectorized code.

diffstat:

 external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT                                         |      4 +
 external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml                           |     14 +-
 external/bsd/llvm/dist/llvm/docs/Extensions.rst                                     |     38 +
 external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst                                     |     28 +-
 external/bsd/llvm/dist/llvm/docs/LangRef.rst                                        |      4 +-
 external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst                                   |     33 +
 external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h                   |      2 +
 external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td                    |      7 +
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h                             |      8 +-
 external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h                         |     14 +-
 external/bsd/llvm/dist/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp                |     53 +-
 external/bsd/llvm/dist/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp            |      3 +-
 external/bsd/llvm/dist/llvm/lib/MC/MCContext.cpp                                    |     44 +-
 external/bsd/llvm/dist/llvm/lib/MC/MCELFStreamer.cpp                                |      4 +
 external/bsd/llvm/dist/llvm/lib/MC/MCParser/COFFAsmParser.cpp                       |    106 +-
 external/bsd/llvm/dist/llvm/lib/MC/WinCOFFStreamer.cpp                              |      4 +-
 external/bsd/llvm/dist/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp              |     17 +
 external/bsd/llvm/dist/llvm/lib/Target/AArch64/AArch64InstrNEON.td                  |    736 +-
 external/bsd/llvm/dist/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp |     44 +-
 external/bsd/llvm/dist/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp                     |     28 +-
 external/bsd/llvm/dist/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h                    |      8 +
 external/bsd/llvm/dist/llvm/lib/Target/ARM/ARMFrameLowering.cpp                     |      7 -
 external/bsd/llvm/dist/llvm/lib/Target/ARM/Thumb1FrameLowering.cpp                  |      7 -
 external/bsd/llvm/dist/llvm/lib/Target/Mips/MipsLongBranch.cpp                      |      4 +-
 external/bsd/llvm/dist/llvm/lib/Target/Mips/MipsSERegisterInfo.cpp                  |     76 +-
 external/bsd/llvm/dist/llvm/lib/Target/R600/AMDGPUISelLowering.cpp                  |      2 +
 external/bsd/llvm/dist/llvm/lib/Target/R600/AMDGPUInstrInfo.td                      |      3 +
 external/bsd/llvm/dist/llvm/lib/Target/R600/R600Instructions.td                     |     18 +-
 external/bsd/llvm/dist/llvm/lib/Target/R600/SIInstructions.td                       |      7 +-
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/Sparc.h                                |     17 +
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp                    |      2 +-
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcFrameLowering.cpp                 |     83 +-
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcFrameLowering.h                   |      8 +
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcISelLowering.cpp                  |     17 +-
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcInstr64Bit.td                     |      6 +
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcInstrInfo.td                      |      9 +-
 external/bsd/llvm/dist/llvm/lib/Target/Sparc/SparcRegisterInfo.cpp                  |     41 +-
 external/bsd/llvm/dist/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp              |      8 +-
 external/bsd/llvm/dist/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp               |     93 +-
 external/bsd/llvm/dist/llvm/lib/Target/X86/X86ISelLowering.cpp                      |     22 +-
 external/bsd/llvm/dist/llvm/lib/Transforms/IPO/MergeFunctions.cpp                   |     22 +-
 external/bsd/llvm/dist/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp      |     16 +-
 external/bsd/llvm/dist/llvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp                  |      7 +-
 external/bsd/llvm/dist/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp              |      9 +
 external/bsd/llvm/dist/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp              |     25 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-2velem.ll                     |   1970 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-bsl.ll                        |    222 +
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-diagnostics.ll                |     11 +
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-copy.ll                |      8 +
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-cvt.ll                 |     16 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-fabd.ll                |     26 +
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-fcvt.ll                |    255 +
 external/bsd/llvm/dist/llvm/test/CodeGen/AArch64/neon-scalar-shift-imm.ll           |     72 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/ARM/fold-stack-adjust.ll                   |      4 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/Mips/msa/frameindex.ll                     |     85 +
 external/bsd/llvm/dist/llvm/test/CodeGen/R600/fabs.ll                               |     36 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/R600/llvm.round.ll                         |     41 +
 external/bsd/llvm/dist/llvm/test/CodeGen/R600/si-sgpr-spill.ll                      |    692 +
 external/bsd/llvm/dist/llvm/test/CodeGen/SPARC/2013-05-17-CallFrame.ll              |     22 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/SPARC/64abi.ll                             |     23 +-
 external/bsd/llvm/dist/llvm/test/CodeGen/SystemZ/insert-06.ll                       |     13 +
 external/bsd/llvm/dist/llvm/test/CodeGen/X86/pr18054.ll                             |     10 +
 external/bsd/llvm/dist/llvm/test/MC/AArch64/neon-diagnostics.s                      |    175 +
 external/bsd/llvm/dist/llvm/test/MC/AArch64/neon-scalar-abs.s                       |     10 +
 external/bsd/llvm/dist/llvm/test/MC/AArch64/neon-scalar-cvt.s                       |    118 +
 external/bsd/llvm/dist/llvm/test/MC/ARM/align_arm_2_thumb.s                         |     15 +
 external/bsd/llvm/dist/llvm/test/MC/ARM/align_thumb_2_arm.s                         |     15 +
 external/bsd/llvm/dist/llvm/test/MC/COFF/eh-frame.s                                 |     14 +
 external/bsd/llvm/dist/llvm/test/MC/COFF/section-comdat.s                           |    188 +
 external/bsd/llvm/dist/llvm/test/MC/Disassembler/AArch64/neon-instructions.txt      |    128 +-
 external/bsd/llvm/dist/llvm/test/MC/Mips/micromips-long-branch.ll                   |  16437 ++++++++++
 external/bsd/llvm/dist/llvm/test/Transforms/InstCombine/pr17827.ll                  |     74 +
 external/bsd/llvm/dist/llvm/test/Transforms/LoopVectorize/X86/tripcount.ll          |     39 +
 external/bsd/llvm/dist/llvm/test/Transforms/MergeFunc/ptr-int-transitivity-1.ll     |     21 +
 external/bsd/llvm/dist/llvm/test/Transforms/MergeFunc/ptr-int-transitivity-2.ll     |     25 +
 external/bsd/llvm/dist/llvm/test/Transforms/MergeFunc/ptr-int-transitivity-3.ll     |     21 +
 external/bsd/llvm/dist/llvm/test/Transforms/SLPVectorizer/X86/external_user.ll      |     35 +
 external/bsd/llvm/dist/llvm/test/Transforms/SLPVectorizer/X86/pr18060.ll            |     47 +
 external/bsd/llvm/dist/llvm/tools/gold/README.txt                                   |     20 +-
 79 files changed, 21499 insertions(+), 1097 deletions(-)

diffs (truncated from 25589 to 300 lines):

diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT
--- a/external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT       Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/CODE_OWNERS.TXT       Fri Dec 06 23:18:22 2013 +0000
@@ -109,6 +109,10 @@
 E: nrotem%apple.com@localhost
 D: X86 Backend, Loop Vectorizer
 
+N: Daniel Sanders
+E: daniel.sanders%imgtec.com@localhost
+D: MIPS Backend (lib/Target/Mips/*)
+
 N: Richard Sandiford
 E: rsandifo%linux.vnet.ibm.com@localhost
 D: SystemZ Backend
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml
--- a/external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/bindings/ocaml/Makefile.ocaml Fri Dec 06 23:18:22 2013 +0000
@@ -79,6 +79,15 @@
 Compile.CMX  := $(strip $(OCAMLOPT) -c $(OCAMLCFLAGS) $(OCAMLDEBUGFLAG) -o)
 
 ifdef OCAMLSTUBS
+# Avoid the need for LD_LIBRARY_PATH
+ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW))
+ifneq ($(HOST_OS),Darwin)
+OCAMLRPATH   := $(RPATH) -Wl,'$(SharedLibDir)'
+endif
+endif
+endif
+
+ifdef OCAMLSTUBS
 Archive.CMA  := $(strip $(OCAMLC) -a -dllib -l$(LIBRARYNAME) $(OCAMLDEBUGFLAG) \
                                   -o)
 else
@@ -88,7 +97,8 @@
 
 ifdef OCAMLSTUBS
 Archive.CMXA := $(strip $(OCAMLOPT) -a $(patsubst %,-cclib %, \
-                                    $(LLVMLibsOptions) -l$(LIBRARYNAME)) \
+                                    $(LLVMLibsOptions) -l$(LIBRARYNAME) \
+                                    -L$(SharedLibDir) $(OCAMLRPATH)) \
                                     $(OCAMLDEBUGFLAG) -o)
 else
 Archive.CMXA := $(strip $(OCAMLOPT) -a $(OCAMLAFLAGS) $(OCAMLDEBUGFLAG) -o)
@@ -233,7 +243,7 @@
 
 $(SharedLib): $(ObjectsO) $(OcamlDir)/.dir
        $(Echo) "Building $(BuildMode) $(notdir $@)"
-       $(Verb) $(Link) $(SharedLinkOptions) $(LLVMLibsOptions) \
+       $(Verb) $(Link) $(SharedLinkOptions) $(OCAMLRPATH) $(LLVMLibsOptions) \
                        -o $@ $(ObjectsO)
 
 clean-shared::
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/docs/Extensions.rst
--- a/external/bsd/llvm/dist/llvm/docs/Extensions.rst   Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/Extensions.rst   Fri Dec 06 23:18:22 2013 +0000
@@ -105,3 +105,41 @@
   .section .xdata$foo
   .linkonce associative .text$foo
     ...
+
+``.section`` Directive
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+MC supports passing the information in ``.linkonce`` at the end of
+``.section``. For example,  these two codes are equivalent
+
+.. code-block:: gas
+
+  .section secName, "dr", discard, "Symbol1"
+  .globl Symbol1
+  Symbol1:
+  .long 1
+
+.. code-block:: gas
+
+  .section secName, "dr"
+  .linkonce discard
+  .globl Symbol1
+  Symbol1:
+  .long 1
+
+Note that in the combined form the COMDAT symbol is explict. This
+extension exits to support multiple sections with the same name in
+different comdats:
+
+
+.. code-block:: gas
+
+  .section secName, "dr", discard, "Symbol1"
+  .globl Symbol1
+  Symbol1:
+  .long 1
+
+  .section secName, "dr", discard, "Symbol2"
+  .globl Symbol2
+  Symbol2:
+  .long 1
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst
--- a/external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst   Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/GoldPlugin.rst   Fri Dec 06 23:18:22 2013 +0000
@@ -30,29 +30,22 @@
 you have plugin support. If not, such as an "unknown option" error then you
 will either need to build gold or install a version with plugin support.
 
-* To build gold with plugin support:
+* Download, configure and build gold with plugin support:
 
   .. code-block:: bash
 
-     $ mkdir binutils
-     $ cd binutils
-     $ cvs -z 9 -d :pserver:anoncvs%sourceware.org@localhost:/cvs/src login
-     {enter "anoncvs" as the password}
-     $ cvs -z 9 -d :pserver:anoncvs%sourceware.org@localhost:/cvs/src co binutils
+     $ git clone --depth 1 git://sourceware.org/git/binutils-gdb.git binutils
      $ mkdir build
      $ cd build
-     $ ../src/configure --enable-gold --enable-plugins
+     $ ../binutils/configure --enable-gold --enable-plugins --disable-werror
      $ make all-gold
 
-  That should leave you with ``binutils/build/gold/ld-new`` which supports
-  the ``-plugin`` option. It also built would have
-  ``binutils/build/binutils/ar`` and ``nm-new`` which support plugins but
-  don't have a visible -plugin option, instead relying on the gold plugin
-  being present in ``../lib/bfd-plugins`` relative to where the binaries
-  are placed.
+  That should leave you with ``build/gold/ld-new`` which supports
+  the ``-plugin`` option. Running ``make`` will additionally build
+  ``build/binutils/ar`` and ``nm-new`` binaries supporting plugins.
 
 * Build the LLVMgold plugin: Configure LLVM with
-  ``--with-binutils-include=/path/to/binutils/src/include`` and run
+  ``--with-binutils-include=/path/to/binutils/include`` and run
   ``make``.
 
 Usage
@@ -72,9 +65,10 @@
 ``ld``. It will not look for an alternate linker, which is why you need
 gold to be the installed system linker in your path.
 
-If you want ``ar`` and ``nm`` to work seamlessly as well, install
-``LLVMgold.so`` to ``/usr/lib/bfd-plugins``. If you built your own gold, be
-sure to install the ``ar`` and ``nm-new`` you built to ``/usr/bin``.
+``ar`` and ``nm`` also accept the ``-plugin`` option and it's possible to
+to install ``LLVMgold.so`` to ``/usr/lib/bfd-plugins`` for a seamless setup.
+If you built your own gold, be sure to install the ``ar`` and ``nm-new`` you
+built to ``/usr/bin``.
 
 
 Example of link time optimization
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/docs/LangRef.rst
--- a/external/bsd/llvm/dist/llvm/docs/LangRef.rst      Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/LangRef.rst      Fri Dec 06 23:18:22 2013 +0000
@@ -128,7 +128,9 @@
 #. Unnamed temporaries are created when the result of a computation is
    not assigned to a named value.
 #. Unnamed temporaries are numbered sequentially (using a per-function
-   incrementing counter, starting with 0).
+   incrementing counter, starting with 0). Note that basic blocks are
+   included in this numbering. For example, if the entry basic block is not
+   given a label name, then it will get number 0.
 
 It also shows a convention that we follow in this document. When
 demonstrating instructions, we will follow an instruction with a comment
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst
--- a/external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/docs/ReleaseNotes.rst Fri Dec 06 23:18:22 2013 +0000
@@ -84,6 +84,9 @@
 * Different sized pointers for different address spaces should now
   generally work. This is primarily useful for GPU targets.
 
+* OCaml bindings have been significantly extended to cover almost all of the
+  LLVM libraries.
+
 * ... next change ...
 
 .. NOTE
@@ -107,6 +110,19 @@
 see the `MIPS SIMD page at Imagination Technologies
 <http://imgtec.com/mips/mips-simd.asp>`_
 
+SPARC Target
+------------
+
+The SPARC backend got many improvements, namely
+
+* experimental SPARC V9 backend
+* JIT support for SPARC
+* fp128 support
+* exception handling
+* TLS support
+* leaf functions optimization
+* bug fixes
+
 External Open Source Projects Using LLVM 3.4
 ============================================
 
@@ -160,6 +176,23 @@
 the presence of work-group barriers. This enables static parallelization of
 the fine-grained static concurrency in the work groups in multiple ways. 
 
+Portable Native Client (PNaCl)
+------------------------------
+
+`Portable Native Client (PNaCl) <http://www.chromium.org/nativeclient/pnacl>`_
+is a Chrome initiative to bring the performance and low-level control of native
+code to modern web browsers, without sacrificing the security benefits and
+portability of web applications. PNaCl works by compiling native C and C++ code
+to an intermediate representation using the LLVM clang compiler. This
+intermediate representation is a subset of LLVM bytecode that is wrapped into a
+portable executable, which can be hosted on a web server like any other website
+asset. When the site is accessed, Chrome fetches and translates the portable
+executable into an architecture-specific machine code optimized directly for
+the underlying device. PNaCl lets developers compile their code once to run on
+any hardware platform and embed their PNaCl application in any website,
+enabling developers to directly leverage the power of the underlying CPU and
+GPU.
+
 TTA-based Co-design Environment (TCE)
 -------------------------------------
 
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h
--- a/external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/CodeGen/MachineOperand.h Fri Dec 06 23:18:22 2013 +0000
@@ -564,6 +564,8 @@
                                   unsigned SubReg = 0,
                                   bool isDebug = false,
                                   bool isInternalRead = false) {
+    assert(!(isDead && !isDef) && "Dead flag on non-def");
+    assert(!(isKill && isDef) && "Kill flag on def");
     MachineOperand Op(MachineOperand::MO_Register);
     Op.IsDef = isDef;
     Op.IsImp = isImp;
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td
--- a/external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td  Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/IR/IntrinsicsAArch64.td  Fri Dec 06 23:18:22 2013 +0000
@@ -54,6 +54,10 @@
   Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
 def int_aarch64_neon_fcvtau :
   Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
+def int_aarch64_neon_fcvtzs :
+  Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
+def int_aarch64_neon_fcvtzu :
+  Intrinsic<[llvm_anyvector_ty], [llvm_anyvector_ty], [IntrNoMem]>;
 
 // Vector maxNum (Floating Point)
 def int_aarch64_neon_vmaxnm : Neon_2Arg_Intrinsic;
@@ -308,6 +312,9 @@
 def int_aarch64_neon_vabs :
   Intrinsic<[llvm_v1i64_ty], [llvm_v1i64_ty], [IntrNoMem]>;
 
+// Scalar Absolute Difference
+def int_aarch64_neon_vabd : Neon_2Arg_Intrinsic;
+
 // Scalar Negate Value
 def int_aarch64_neon_vneg :
   Intrinsic<[llvm_v1i64_ty], [llvm_v1i64_ty], [IntrNoMem]>;
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h
--- a/external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h   Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/MC/MCContext.h   Fri Dec 06 23:18:22 2013 +0000
@@ -258,9 +258,15 @@
 
     const MCSectionCOFF *getCOFFSection(StringRef Section,
                                         unsigned Characteristics,
-                                        SectionKind Kind, int Selection = 0,
+                                        SectionKind Kind,
+                                        StringRef COMDATSymName,
+                                        int Selection,
                                         const MCSectionCOFF *Assoc = 0);
 
+    const MCSectionCOFF *getCOFFSection(StringRef Section,
+                                        unsigned Characteristics,
+                                        SectionKind Kind);
+
     const MCSectionCOFF *getCOFFSection(StringRef Section);
 
     /// @}
diff -r e6c0f9adb8cd -r ad6be2c1dc9b external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h
--- a/external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h       Fri Dec 06 23:16:49 2013 +0000
+++ b/external/bsd/llvm/dist/llvm/include/llvm/MC/MCSectionCOFF.h       Fri Dec 06 23:18:22 2013 +0000
@@ -19,6 +19,7 @@
 #include "llvm/Support/COFF.h"
 
 namespace llvm {
+class MCSymbol;
 
 /// MCSectionCOFF - This represents a section on Windows
   class MCSectionCOFF : public MCSection {
@@ -32,6 +33,11 @@
     /// drawn from the enums below.
     mutable unsigned Characteristics;
 
+    /// The COMDAT symbol of this section. Only valid if this is a COMDAT
+    /// section. Two COMDAT sections are merged if they have the same
+    /// COMDAT symbol.
+    const MCSymbol *COMDATSymbol;
+
     /// Selection - This is the Selection field for the section symbol, if
     /// it is a COMDAT section (Characteristics & IMAGE_SCN_LNK_COMDAT) != 0



Home | Main Index | Thread Index | Old Index