]> granicus.if.org Git - clang/commit
[Bugfix] Fix ICE on constexpr vector splat.
authorGeorge Burgess IV <george.burgess.iv@gmail.com>
Wed, 13 Jan 2016 01:52:39 +0000 (01:52 +0000)
committerGeorge Burgess IV <george.burgess.iv@gmail.com>
Wed, 13 Jan 2016 01:52:39 +0000 (01:52 +0000)
commit2824a0744ca037a1b976efcc1d848aecb41dabd5
tree94b5b931d678a3e0c1b7b3d825f2930f48e00e4f
parent05d274ca67f6370f61ca426a0939e40f3489f248
[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
20 files changed:
include/clang/AST/ASTContext.h
include/clang/AST/OperationKinds.h
include/clang/Sema/Sema.h
lib/AST/Expr.cpp
lib/AST/ExprConstant.cpp
lib/CodeGen/CGExpr.cpp
lib/CodeGen/CGExprAgg.cpp
lib/CodeGen/CGExprComplex.cpp
lib/CodeGen/CGExprConstant.cpp
lib/CodeGen/CGExprScalar.cpp
lib/Edit/RewriteObjCFoundationAPI.cpp
lib/Sema/SemaCast.cpp
lib/Sema/SemaChecking.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaExprCXX.cpp
lib/Sema/SemaOverload.cpp
lib/StaticAnalyzer/Core/ExprEngineC.cpp
test/CodeGenCXX/builtins-systemz-zvector.cpp [new file with mode: 0644]
test/CodeGenCXX/vector-splat-conversion.cpp
test/CodeGenOpenCL/bool_cast.cl