Consistently use smart pointers for stmt and expr nodes in parser local variables.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60761 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp
index 8a54988..f2d0ce4 100644
--- a/lib/Parse/Parser.cpp
+++ b/lib/Parse/Parser.cpp
@@ -17,6 +17,7 @@
 #include "clang/Parse/Scope.h"
 #include "ExtensionRAIIObject.h"
 #include "ParsePragma.h"
+#include "AstGuard.h"
 using namespace clang;
 
 Parser::Parser(Preprocessor &pp, Action &actions)
@@ -333,13 +334,13 @@
     return ParseExternalDeclaration();
   }
   case tok::kw_asm: {
-    ExprResult Result = ParseSimpleAsm();
+    ExprOwner Result(Actions, ParseSimpleAsm());
 
     ExpectAndConsume(tok::semi, diag::err_expected_semi_after,
                      "top-level asm block");
 
-    if (!Result.isInvalid)
-      return Actions.ActOnFileScopeAsmDecl(Tok.getLocation(), Result.Val);
+    if (!Result.isInvalid())
+      return Actions.ActOnFileScopeAsmDecl(Tok.getLocation(), Result.move());
     return 0;
   }
   case tok::at:
@@ -669,12 +670,12 @@
     return true;
   }
 
-  ExprResult Res = ParseStringLiteralExpression();
-  if (Res.isInvalid) return true;
+  ExprOwner Res(Actions, ParseStringLiteralExpression());
+  if (Res.isInvalid()) return true;
 
   // TODO: Diagnose: wide string literal in 'asm'
 
-  return Res;
+  return Res.move();
 }
 
 /// ParseSimpleAsm
@@ -693,14 +694,14 @@
 
   ConsumeParen();
 
-  ExprResult Result = ParseAsmStringLiteral();
+  ExprOwner Result(Actions, ParseAsmStringLiteral());
 
-  if (Result.isInvalid)
+  if (Result.isInvalid())
     SkipUntil(tok::r_paren);
   else
     MatchRHSPunctuation(tok::r_paren, Loc);
 
-  return Result;
+  return Result.move();
 }
 
 /// TryAnnotateTypeOrScopeToken - If the current token position is on a