[cfe-commits] r89691 - in /cfe/trunk: include/clang/Parse/Action.h lib/Parse/ParseExpr.cpp lib/Sema/Sema.h test/Sema/cast.c
Chris Lattner
clattner at apple.com
Mon Nov 23 21:30:14 PST 2009
Hi Fariborz,
Is there any other way to do this? Before this change -parse-noop
(which uses minimal actions) could reliably parse c code, now it
can't. Can this be handled in sema?
-Chris
On Nov 23, 2009, at 9:51 PM, Fariborz Jahanian <fjahanian at apple.com>
wrote:
> Author: fjahanian
> Date: Mon Nov 23 13:51:43 2009
> New Revision: 89691
>
> URL: http://llvm.org/viewvc/llvm-project?rev=89691&view=rev
> Log:
> Fix a recent regression probably caused by addition of altivec-style
> type-casts in the parser.
>
>
> Modified:
> cfe/trunk/include/clang/Parse/Action.h
> cfe/trunk/lib/Parse/ParseExpr.cpp
> cfe/trunk/lib/Sema/Sema.h
> cfe/trunk/test/Sema/cast.c
>
> Modified: cfe/trunk/include/clang/Parse/Action.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Action.h?rev=89691&r1=89690&r2=89691&view=diff
>
> ===
> ===
> ===
> =====================================================================
> --- cfe/trunk/include/clang/Parse/Action.h (original)
> +++ cfe/trunk/include/clang/Parse/Action.h Mon Nov 23 13:51:43 2009
> @@ -1048,6 +1048,10 @@
> return ExprEmpty();
> }
>
> + virtual bool TypeIsVectorType(TypeTy *Ty) {
> + return false;
> + }
> +
> virtual OwningExprResult ActOnBinOp(Scope *S, SourceLocation TokLoc,
> tok::TokenKind Kind,
> ExprArg LHS, ExprArg RHS) {
>
> Modified: cfe/trunk/lib/Parse/ParseExpr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=89691&r1=89690&r2=89691&view=diff
>
> ===
> ===
> ===
> =====================================================================
> --- cfe/trunk/lib/Parse/ParseExpr.cpp (original)
> +++ cfe/trunk/lib/Parse/ParseExpr.cpp Mon Nov 23 13:51:43 2009
> @@ -1365,7 +1365,8 @@
>
> // Parse the cast-expression that follows it next.
> // TODO: For cast expression with CastTy.
> - Result = ParseCastExpression(false, false, true);
> + Result = ParseCastExpression(false, false,
> + Actions.TypeIsVectorType(CastTy));
> if (!Result.isInvalid())
> Result = Actions.ActOnCastExpr(CurScope, OpenLoc, CastTy,
> RParenLoc,
> move(Result));
>
> Modified: cfe/trunk/lib/Sema/Sema.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=89691&r1=89690&r2=89691&view=diff
>
> ===
> ===
> ===
> =====================================================================
> --- cfe/trunk/lib/Sema/Sema.h (original)
> +++ cfe/trunk/lib/Sema/Sema.h Mon Nov 23 13:51:43 2009
> @@ -1536,6 +1536,9 @@
> virtual OwningExprResult ActOnCastExpr(Scope *S, SourceLocation
> LParenLoc,
> TypeTy *Ty, SourceLocation
> RParenLoc,
> ExprArg Op);
> + virtual bool TypeIsVectorType(TypeTy *Ty) {
> + return GetTypeFromParser(Ty)->isVectorType();
> + }
>
> OwningExprResult MaybeConvertParenListExprToParenExpr(Scope *S,
> ExprArg ME);
> OwningExprResult ActOnCastOfParenListExpr(Scope *S, SourceLocation
> LParenLoc,
>
> Modified: cfe/trunk/test/Sema/cast.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/cast.c?rev=89691&r1=89690&r2=89691&view=diff
>
> ===
> ===
> ===
> =====================================================================
> --- cfe/trunk/test/Sema/cast.c (original)
> +++ cfe/trunk/test/Sema/cast.c Mon Nov 23 13:51:43 2009
> @@ -12,3 +12,7 @@
> a = (char*)b; // expected-error {{cannot be cast to a pointer type}}
> }
>
> +long bar1(long *next) {
> + return (long)(*next)++;
> +}
> +
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list