From 2bed9ecc4b5d74e61c997eb2d3877e0ab6257979 Mon Sep 17 00:00:00 2001
From: Chris Lattner <sabre@nondot.org>
Date: Wed, 3 Mar 2004 02:12:47 +0000
Subject: [PATCH] Add a new constructor

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12087 91177308-0d34-0410-b5e6-96231b3b80d8
---
 include/llvm/Target/TargetMachine.h | 6 ++++++
 lib/Target/TargetMachine.cpp        | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/include/llvm/Target/TargetMachine.h b/include/llvm/Target/TargetMachine.h
index 7d9586c2f86..cfefe34c562 100644
--- a/include/llvm/Target/TargetMachine.h
+++ b/include/llvm/Target/TargetMachine.h
@@ -52,6 +52,12 @@ protected: // Can only create subclasses...
 		unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
 		unsigned char LongAl = 8, unsigned char IntAl = 4,
 		unsigned char ShortAl = 2, unsigned char ByteAl = 1);
+
+  // This constructor is used for targets that support arbitrary TargetData
+  // layouts, like the C backend.  It initializes the TargetData to match that
+  // of the specified module.
+  TargetMachine(const std::string &name, IntrinsicLowering *IL,
+                const Module &M);
 public:
   virtual ~TargetMachine();
 
diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp
index 30199be06ae..2c8b79622a4 100644
--- a/lib/Target/TargetMachine.cpp
+++ b/lib/Target/TargetMachine.cpp
@@ -30,6 +30,11 @@ TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il,
                            IntAl, ShortAl, ByteAl) {
   IL = il ? il : new DefaultIntrinsicLowering();
 }
+TargetMachine::TargetMachine(const std::string &name, IntrinsicLowering *il,
+                             const Module &M)
+  : Name(name), DataLayout(name, &M) {
+  IL = il ? il : new DefaultIntrinsicLowering();
+}
 
 TargetMachine::~TargetMachine() {
   delete IL;