diff options
author | drh <drh@noemail.net> | 2008-12-15 15:27:51 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2008-12-15 15:27:51 +0000 |
commit | e99fa2af71b25fd822c576bc3f8e1c6ce1665120 (patch) | |
tree | 192f6d0d335dd96d4e028e054d544ef7fc65182c /src/expr.c | |
parent | 01ecbeeb57eb97b9889d2a0ba04375be7c8ae4e2 (diff) | |
download | sqlite-e99fa2af71b25fd822c576bc3f8e1c6ce1665120.tar.gz sqlite-e99fa2af71b25fd822c576bc3f8e1c6ce1665120.zip |
Convert the "~" and "NOT" operators to be two-address instructions.
Ticket #3541. (CVS 6028)
FossilOrigin-Name: ea9b747efb22fd3f679c3ef86ed51986c5ad9436
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/expr.c b/src/expr.c index f221a519a..1b59a4cf8 100644 --- a/src/expr.c +++ b/src/expr.c @@ -12,7 +12,7 @@ ** This file contains routines used for analyzing expressions and ** for generating VDBE code that evaluates expressions in SQLite. ** -** $Id: expr.c,v 1.407 2008/12/10 21:19:57 drh Exp $ +** $Id: expr.c,v 1.408 2008/12/15 15:27:52 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> @@ -1975,11 +1975,10 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){ assert( TK_NOT==OP_Not ); testcase( op==TK_BITNOT ); testcase( op==TK_NOT ); - inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target); - testcase( inReg==target ); - testcase( usedAsColumnCache(pParse, inReg, inReg) ); - inReg = sqlite3ExprWritableRegister(pParse, inReg, target); - sqlite3VdbeAddOp1(v, op, inReg); + r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, ®Free1); + testcase( regFree1==0 ); + inReg = target; + sqlite3VdbeAddOp2(v, op, r1, inReg); break; } case TK_ISNULL: |