diff --git a/Basic/TargetInfo.cpp b/Basic/TargetInfo.cpp
index 20f12c7..a3e0a21 100644
--- a/Basic/TargetInfo.cpp
+++ b/Basic/TargetInfo.cpp
@@ -260,4 +260,9 @@
   }
 }
 
+/// getVAListDeclaration - Return the declaration to use for
+/// __builtin_va_list, which is target-specific.
+const char *TargetInfo::getVAListDeclaration() const {
+  return PrimaryTarget->getVAListDeclaration();
+}
 
diff --git a/Driver/Targets.cpp b/Driver/Targets.cpp
index bf05c64..e7e6a05 100644
--- a/Driver/Targets.cpp
+++ b/Driver/Targets.cpp
@@ -279,6 +279,32 @@
   Define(Defs, "__LDBL_MIN__", "3.36210314311209350626e-4932L");
 }
 
+static const char* getI386VAListDeclaration() {
+  return "typedef char* __builtin_va_list;";
+}
+
+static const char* getX86_64VAListDeclaration() {
+  return 
+    "typedef struct __va_list_tag {"
+    "  unsigned gp_offset;"
+    "  unsigned fp_offset;"
+    "  void* overflow_arg_area;"
+    "  void* reg_save_area;"
+    "} __builtin_va_list[1];";
+}
+
+static const char* getPPCVAListDeclaration() {
+  return 
+    "typedef struct __va_list_tag {"
+    "  unsigned char gpr;"
+    "  unsigned char fpr;"
+    "  unsigned short reserved;"
+    "  void* overflow_arg_area;"
+    "  void* reg_save_area;"
+    "} __builtin_va_list[1];";
+}
+
+
 /// PPC builtin info.
 namespace PPC {
   enum {
@@ -336,6 +362,9 @@
                                  unsigned &NumRecords) const {
     PPC::getBuiltins(Records, NumRecords);
   }
+  virtual const char *getVAListDeclaration() const {
+    return getPPCVAListDeclaration();
+  }  
 };
 } // end anonymous namespace.
 
@@ -350,6 +379,9 @@
                                  unsigned &NumRecords) const {
     PPC::getBuiltins(Records, NumRecords);
   }
+  virtual const char *getVAListDeclaration() const {
+    return getPPCVAListDeclaration();
+  }  
 };
 } // end anonymous namespace.
 
@@ -364,6 +396,10 @@
                                  unsigned &NumRecords) const {
     X86::getBuiltins(Records, NumRecords);
   }
+  
+  virtual const char *getVAListDeclaration() const {
+    return getI386VAListDeclaration();
+  }
 };
 } // end anonymous namespace.
 
@@ -378,6 +414,9 @@
                                  unsigned &NumRecords) const {
     X86::getBuiltins(Records, NumRecords);
   }
+  virtual const char *getVAListDeclaration() const {
+    return getX86_64VAListDeclaration();
+  }  
 };
 } // end anonymous namespace.
 
@@ -398,6 +437,9 @@
                                  unsigned &NumRecords) const {
     X86::getBuiltins(Records, NumRecords);
   }
+  virtual const char *getVAListDeclaration() const {
+    return getI386VAListDeclaration();
+  }  
 };
 } // end anonymous namespace.
 
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index 02a0f88..334f878 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -185,10 +185,8 @@
 
   /// getVAListDeclaration - Return the declaration to use for
   /// __builtin_va_list, which is target-specific.
-  const char *getVAListDeclaration() const {
-    // FIXME: dispatch to target impl.
-    return "typedef char* __builtin_va_list;";
-  }
+  const char *getVAListDeclaration() const;
+
   ///===---- Some helper methods ------------------------------------------===//
 
   unsigned getCharWidth(SourceLocation Loc) {
@@ -244,6 +242,10 @@
   /// "#define X Y\n".
   virtual void getTargetDefines(std::vector<char> &Defines) const = 0;
 
+  /// getVAListDeclaration - Return the declaration to use for
+  /// __builtin_va_list, which is target-specific.
+  virtual const char *getVAListDeclaration() const = 0;
+  
   /// getWCharWidth - Return the size of wchar_t in bits.
   ///
   void getWCharInfo(unsigned &Size, unsigned &Align) const {
