Fix PR1516:
authorReid Spencer <rspencer@reidspencer.com>
Sat, 16 Jun 2007 20:33:24 +0000 (20:33 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Sat, 16 Jun 2007 20:33:24 +0000 (20:33 +0000)
When printing the uses of a function (-gen-function only), make sure to
include the constants referenced by intializers of global variables.

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

tools/llvm2cpp/CppWriter.cpp

index 1076b59c02112375b209202b47ebc9fedec1f94f..a5aa7d46e3c60629860fc5dd76b50d95ee826aa1 100644 (file)
@@ -1435,9 +1435,14 @@ void CppWriter::printFunctionUses(const Function* F) {
       for (unsigned i = 0; i < I->getNumOperands(); ++i) {
         Value* operand = I->getOperand(i);
         printType(operand->getType());
-        if (GlobalValue* GV = dyn_cast<GlobalValue>(operand))
+
+        // If the operand references a GVal or Constant, make a note of it
+        if (GlobalValue* GV = dyn_cast<GlobalValue>(operand)) {
           gvs.push_back(GV);
-        else if (Constant* C = dyn_cast<Constant>(operand))
+          if (GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV)) 
+            if (GVar->hasInitializer())
+              consts.push_back(GVar->getInitializer());
+        } else if (Constant* C = dyn_cast<Constant>(operand))
           consts.push_back(C);
       }
     }