diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp
index bc3f839..96eb684 100644
--- a/lib/Target/CBackend/CBackend.cpp
+++ b/lib/Target/CBackend/CBackend.cpp
@@ -523,7 +523,9 @@
       abort();
     }
   } else if (isa<UndefValue>(CPV) && CPV->getType()->isFirstClassType()) {
-    Out << "0";
+    Out << "((";
+    printType(Out, CPV->getType());
+    Out << ")/*UNDEF*/0)";
     return;
   }
 
@@ -1234,11 +1236,14 @@
        SI != E; ++SI)
     for (BasicBlock::iterator I = SI->begin(); isa<PHINode>(I); ++I) {
       PHINode *PN = cast<PHINode>(I);
-      //  now we have to do the printing
-      Out << std::string(Indent, ' ');
-      Out << "  " << Mang->getValueName(I) << "__PHI_TEMPORARY = ";
-      writeOperand(PN->getIncomingValue(PN->getBasicBlockIndex(CurBlock)));
-      Out << ";   /* for PHI node */\n";
+      // Now we have to do the printing.
+      Value *IV = PN->getIncomingValueForBlock(CurBlock);
+      if (!isa<UndefValue>(IV)) {
+        Out << std::string(Indent, ' ');
+        Out << "  " << Mang->getValueName(I) << "__PHI_TEMPORARY = ";
+        writeOperand(IV);
+        Out << ";   /* for PHI node */\n";
+      }
     }
 }
 
diff --git a/lib/Target/CBackend/Writer.cpp b/lib/Target/CBackend/Writer.cpp
index bc3f839..96eb684 100644
--- a/lib/Target/CBackend/Writer.cpp
+++ b/lib/Target/CBackend/Writer.cpp
@@ -523,7 +523,9 @@
       abort();
     }
   } else if (isa<UndefValue>(CPV) && CPV->getType()->isFirstClassType()) {
-    Out << "0";
+    Out << "((";
+    printType(Out, CPV->getType());
+    Out << ")/*UNDEF*/0)";
     return;
   }
 
@@ -1234,11 +1236,14 @@
        SI != E; ++SI)
     for (BasicBlock::iterator I = SI->begin(); isa<PHINode>(I); ++I) {
       PHINode *PN = cast<PHINode>(I);
-      //  now we have to do the printing
-      Out << std::string(Indent, ' ');
-      Out << "  " << Mang->getValueName(I) << "__PHI_TEMPORARY = ";
-      writeOperand(PN->getIncomingValue(PN->getBasicBlockIndex(CurBlock)));
-      Out << ";   /* for PHI node */\n";
+      // Now we have to do the printing.
+      Value *IV = PN->getIncomingValueForBlock(CurBlock);
+      if (!isa<UndefValue>(IV)) {
+        Out << std::string(Indent, ' ');
+        Out << "  " << Mang->getValueName(I) << "__PHI_TEMPORARY = ";
+        writeOperand(IV);
+        Out << ";   /* for PHI node */\n";
+      }
     }
 }
 
