[Bugfix] Fix ICE on constexpr vector splat.
In {CG,}ExprConstant.cpp, we weren't treating vector splats properly. This patch makes us treat splats more properly. Additionally, this patch adds a new cast kind which allows a bool->int cast to result in -1 or 0, instead of 1 or 0 (for true and false, respectively), so we can sanely model OpenCL bool->int casts in the AST. Differential Revision: http://reviews.llvm.org/D14877 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@257559 91177308-0d34-0410-b5e6-96231b3b80d8
Showing
- include/clang/AST/ASTContext.h 6 additions, 2 deletionsinclude/clang/AST/ASTContext.h
- include/clang/AST/OperationKinds.h 5 additions, 1 deletioninclude/clang/AST/OperationKinds.h
- include/clang/Sema/Sema.h 4 additions, 0 deletionsinclude/clang/Sema/Sema.h
- lib/AST/Expr.cpp 3 additions, 0 deletionslib/AST/Expr.cpp
- lib/AST/ExprConstant.cpp 6 additions, 1 deletionlib/AST/ExprConstant.cpp
- lib/CodeGen/CGExpr.cpp 1 addition, 0 deletionslib/CodeGen/CGExpr.cpp
- lib/CodeGen/CGExprAgg.cpp 1 addition, 0 deletionslib/CodeGen/CGExprAgg.cpp
- lib/CodeGen/CGExprComplex.cpp 1 addition, 0 deletionslib/CodeGen/CGExprComplex.cpp
- lib/CodeGen/CGExprConstant.cpp 1 addition, 0 deletionslib/CodeGen/CGExprConstant.cpp
- lib/CodeGen/CGExprScalar.cpp 11 additions, 14 deletionslib/CodeGen/CGExprScalar.cpp
- lib/Edit/RewriteObjCFoundationAPI.cpp 3 additions, 0 deletionslib/Edit/RewriteObjCFoundationAPI.cpp
- lib/Sema/SemaCast.cpp 2 additions, 0 deletionslib/Sema/SemaCast.cpp
- lib/Sema/SemaChecking.cpp 2 additions, 1 deletionlib/Sema/SemaChecking.cpp
- lib/Sema/SemaExpr.cpp 38 additions, 16 deletionslib/Sema/SemaExpr.cpp
- lib/Sema/SemaExprCXX.cpp 5 additions, 12 deletionslib/Sema/SemaExprCXX.cpp
- lib/Sema/SemaOverload.cpp 1 addition, 0 deletionslib/Sema/SemaOverload.cpp
- lib/StaticAnalyzer/Core/ExprEngineC.cpp 4 additions, 0 deletionslib/StaticAnalyzer/Core/ExprEngineC.cpp
- test/CodeGenCXX/builtins-systemz-zvector.cpp 50 additions, 0 deletionstest/CodeGenCXX/builtins-systemz-zvector.cpp
- test/CodeGenCXX/vector-splat-conversion.cpp 43 additions, 11 deletionstest/CodeGenCXX/vector-splat-conversion.cpp
- test/CodeGenOpenCL/bool_cast.cl 6 additions, 0 deletionstest/CodeGenOpenCL/bool_cast.cl
Loading
Please register or sign in to comment