Although we currently have explicit lvalue-to-rvalue conversions, they're
not actually frequently used, because ImpCastExprToType only creates a node if the types differ. So explicitly create an ICE in the lvalue-to-rvalue conversion code in DefaultFunctionArrayLvalueConversion() as well as several other new places, and consistently deal with the consequences throughout the compiler. In addition, introduce a new cast kind for loading an ObjCProperty l-value, and make sure we emit those nodes whenever an ObjCProperty l-value appears that's not on the LHS of an assignment operator. This breaks a couple of rewriter tests, which I've x-failed until future development occurs on the rewriter. Ted Kremenek kindly contributed the analyzer workarounds in this patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120890 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/AST/Expr.h 14 additions, 0 deletionsinclude/clang/AST/Expr.h
- include/clang/AST/OperationKinds.h 7 additions, 0 deletionsinclude/clang/AST/OperationKinds.h
- include/clang/Sema/Sema.h 8 additions, 1 deletioninclude/clang/Sema/Sema.h
- lib/AST/Expr.cpp 44 additions, 2 deletionslib/AST/Expr.cpp
- lib/AST/ExprClassification.cpp 7 additions, 4 deletionslib/AST/ExprClassification.cpp
- lib/Analysis/CFG.cpp 19 additions, 2 deletionslib/Analysis/CFG.cpp
- lib/Checker/CheckSecuritySyntaxOnly.cpp 4 additions, 2 deletionslib/Checker/CheckSecuritySyntaxOnly.cpp
- lib/Checker/DereferenceChecker.cpp 1 addition, 0 deletionslib/Checker/DereferenceChecker.cpp
- lib/Checker/Environment.cpp 2 additions, 1 deletionlib/Checker/Environment.cpp
- lib/Checker/GRExprEngine.cpp 10 additions, 7 deletionslib/Checker/GRExprEngine.cpp
- lib/Checker/IdempotentOperationChecker.cpp 1 addition, 1 deletionlib/Checker/IdempotentOperationChecker.cpp
- lib/CodeGen/CGExpr.cpp 15 additions, 0 deletionslib/CodeGen/CGExpr.cpp
- lib/CodeGen/CGExprAgg.cpp 11 additions, 4 deletionslib/CodeGen/CGExprAgg.cpp
- lib/CodeGen/CGExprComplex.cpp 16 additions, 1 deletionlib/CodeGen/CGExprComplex.cpp
- lib/CodeGen/CGExprScalar.cpp 13 additions, 5 deletionslib/CodeGen/CGExprScalar.cpp
- lib/Parse/ParseStmt.cpp 9 additions, 3 deletionslib/Parse/ParseStmt.cpp
- lib/Sema/SemaCXXCast.cpp 2 additions, 0 deletionslib/Sema/SemaCXXCast.cpp
- lib/Sema/SemaChecking.cpp 2 additions, 2 deletionslib/Sema/SemaChecking.cpp
- lib/Sema/SemaExpr.cpp 113 additions, 50 deletionslib/Sema/SemaExpr.cpp
- lib/Sema/SemaExprCXX.cpp 47 additions, 15 deletionslib/Sema/SemaExprCXX.cpp
Loading
Please register or sign in to comment