Use union to discriminate pointer types from enum/int types.

This commit is contained in:
Skip Montanaro 2006-04-13 09:37:01 +00:00
parent 83687c98dc
commit b940671186
2 changed files with 9 additions and 8 deletions

View file

@ -3066,10 +3066,8 @@ compiler_compare(struct compiler *c, expr_ty e)
for (i = 1; i < n; i++) {
ADDOP(c, DUP_TOP);
ADDOP(c, ROT_THREE);
/* XXX We're casting a void* to cmpop_ty in the next stmt. */
ADDOP_I(c, COMPARE_OP,
cmpop((cmpop_ty)( CMPCAST asdl_seq_GET(
e->v.Compare.ops, i - 1))));
cmpop((cmpop_ty)asdl_seq_GET_ENUM(e->v.Compare.ops, i - 1)));
ADDOP_JREL(c, JUMP_IF_FALSE, cleanup);
NEXT_BLOCK(c);
ADDOP(c, POP_TOP);
@ -3080,8 +3078,7 @@ compiler_compare(struct compiler *c, expr_ty e)
VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Compare.comparators, n - 1));
ADDOP_I(c, COMPARE_OP,
/* XXX We're casting a void* to cmpop_ty in the next stmt. */
cmpop((cmpop_ty)( CMPCAST asdl_seq_GET(e->v.Compare.ops,
n - 1))));
cmpop((cmpop_ty)asdl_seq_GET_ENUM(e->v.Compare.ops, n - 1)));
if (n > 1) {
basicblock *end = compiler_new_block(c);
if (end == NULL)