Don't print global variable definitions twice! Sun's pathetic compiler
authorVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 17 Sep 2002 11:50:38 +0000 (11:50 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 17 Sep 2002 11:50:38 +0000 (11:50 +0000)
never complained about this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3774 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/CBackend/CBackend.cpp
lib/Target/CBackend/Writer.cpp

index 4d53b7adf658f2c9f687198dab194c670388f702..319b362bdf7568be827094145aefa275f5ca8fa7 100644 (file)
@@ -522,11 +522,13 @@ void CWriter::printModule(Module *M) {
 
   // Global variable declarations...
   if (!M->gempty()) {
-    Out << "\n/* Global Variable Declarations */\n";
+    Out << "\n/* External Global Variable Declarations */\n";
     for (Module::giterator I = M->gbegin(), E = M->gend(); I != E; ++I) {
-      Out << (I->hasExternalLinkage() ? "extern " : "static ");
-      printType(I->getType()->getElementType(), getValueName(I));
-      Out << ";\n";
+      if (I->hasExternalLinkage()) {
+        Out << "extern ";
+        printType(I->getType()->getElementType(), getValueName(I));
+        Out << ";\n";
+      }
     }
   }
 
@@ -539,11 +541,13 @@ void CWriter::printModule(Module *M) {
     }
   }
 
-  // Output the global variable contents...
+  // Output the global variable definitions and contents...
   if (!M->gempty()) {
-    Out << "\n\n/* Global Data */\n";
+    Out << "\n\n/* Global Variable Definitions and Initialization */\n";
     for (Module::giterator I = M->gbegin(), E = M->gend(); I != E; ++I) {
-      if (I->hasInternalLinkage()) Out << "static ";
+      if (I->hasExternalLinkage())
+        continue;                       // printed above!
+      Out << "static ";
       printType(I->getType()->getElementType(), getValueName(I));
       
       if (I->hasInitializer()) {
index 4d53b7adf658f2c9f687198dab194c670388f702..319b362bdf7568be827094145aefa275f5ca8fa7 100644 (file)
@@ -522,11 +522,13 @@ void CWriter::printModule(Module *M) {
 
   // Global variable declarations...
   if (!M->gempty()) {
-    Out << "\n/* Global Variable Declarations */\n";
+    Out << "\n/* External Global Variable Declarations */\n";
     for (Module::giterator I = M->gbegin(), E = M->gend(); I != E; ++I) {
-      Out << (I->hasExternalLinkage() ? "extern " : "static ");
-      printType(I->getType()->getElementType(), getValueName(I));
-      Out << ";\n";
+      if (I->hasExternalLinkage()) {
+        Out << "extern ";
+        printType(I->getType()->getElementType(), getValueName(I));
+        Out << ";\n";
+      }
     }
   }
 
@@ -539,11 +541,13 @@ void CWriter::printModule(Module *M) {
     }
   }
 
-  // Output the global variable contents...
+  // Output the global variable definitions and contents...
   if (!M->gempty()) {
-    Out << "\n\n/* Global Data */\n";
+    Out << "\n\n/* Global Variable Definitions and Initialization */\n";
     for (Module::giterator I = M->gbegin(), E = M->gend(); I != E; ++I) {
-      if (I->hasInternalLinkage()) Out << "static ";
+      if (I->hasExternalLinkage())
+        continue;                       // printed above!
+      Out << "static ";
       printType(I->getType()->getElementType(), getValueName(I));
       
       if (I->hasInitializer()) {