From 325297142c93ac162fcf9a3d78faeb1f49763914 Mon Sep 17 00:00:00 2001
From: Brian Gaeke <gaeke@uiuc.edu>
Date: Wed, 14 Apr 2004 17:45:48 +0000
Subject: [PATCH] Add a copy constructor for TargetData.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12948 91177308-0d34-0410-b5e6-96231b3b80d8
---
 include/llvm/Target/TargetData.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/include/llvm/Target/TargetData.h b/include/llvm/Target/TargetData.h
index dc40efb1abd..1cc7ddb7d17 100644
--- a/include/llvm/Target/TargetData.h
+++ b/include/llvm/Target/TargetData.h
@@ -42,6 +42,7 @@ class TargetData : public ImmutablePass {
   unsigned char DoubleAlignment;       // Defaults to 8 bytes
   unsigned char PointerSize;           // Defaults to 8 bytes
   unsigned char PointerAlignment;      // Defaults to 8 bytes
+
 public:
   TargetData(const std::string &TargetName = "",
              bool LittleEndian = false,
@@ -50,6 +51,21 @@ public:
 	     unsigned char FloatAl = 4, unsigned char LongAl = 8, 
 	     unsigned char IntAl = 4, unsigned char ShortAl = 2,
 	     unsigned char ByteAl = 1);
+
+  // Copy constructor
+  TargetData (const TargetData &TD) :
+    ImmutablePass (),
+    LittleEndian (TD.isLittleEndian ()),
+    ByteAlignment (TD.getByteAlignment ()),
+    ShortAlignment (TD.getShortAlignment ()),
+    IntAlignment (TD.getIntAlignment ()),
+    LongAlignment (TD.getLongAlignment ()),
+    FloatAlignment (TD.getFloatAlignment ()),
+    DoubleAlignment (TD.getDoubleAlignment ()),
+    PointerSize (TD.getPointerSize ()),
+    PointerAlignment (TD.getPointerAlignment ()) {
+  }
+    
   TargetData(const std::string &ToolName, const Module *M);
   ~TargetData();  // Not virtual, do not subclass this class