Allow the user to disable the internalize pass


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5792 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp
index 5d1a35f..b8b3587 100644
--- a/tools/gccld/gccld.cpp
+++ b/tools/gccld/gccld.cpp
@@ -52,6 +52,10 @@
 static cl::opt<bool>
 Strip("s", cl::desc("Strip symbol info from executable"));
 
+static cl::opt<bool>
+NoInternalize("disable-internalize",
+              cl::desc("Do not mark all symbols as internal"));
+
 
 // FileExists - Return true if the specified string is an openable file...
 static inline bool FileExists(const std::string &FN) {
@@ -153,10 +157,13 @@
   //
   Passes.add(createFunctionResolvingPass());
 
-  // Now that composite has been compiled, scan through the module, looking for
-  // a main function.  If main is defined, mark all other functions internal.
-  //
-  Passes.add(createInternalizePass());
+  if (!NoInternalize) {
+    // Now that composite has been compiled, scan through the module, looking
+    // for a main function.  If main is defined, mark all other functions
+    // internal.
+    //
+    Passes.add(createInternalizePass());
+  }
 
   // Now that we have optimized the program, discard unreachable functions...
   //