From 869bacd4652f1b0299dfad0af49f38d6638a4f60 Mon Sep 17 00:00:00 2001 From: Skip Montanaro Date: Thu, 13 Apr 2006 09:48:28 +0000 Subject: [PATCH] revert - breaks build of Python/ast.c w/ gcc --- Include/asdl.h | 10 +++------- Python/compile.c | 7 +++++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Include/asdl.h b/Include/asdl.h index 6a9adea99e5..d709d42c76d 100644 --- a/Include/asdl.h +++ b/Include/asdl.h @@ -19,22 +19,18 @@ typedef enum {false, true} bool; typedef struct { int size; - union { - void *elements[1]; - unsigned int enum_type[1]; - } elt; + void *elements[1]; } asdl_seq; asdl_seq *asdl_seq_new(int size, PyArena *arena); -#define asdl_seq_GET(S, I) (S)->elt.elements[(I)] -#define asdl_seq_GET_ENUM(S, I) (S)->elt.enum_type[(I)] +#define asdl_seq_GET(S, I) (S)->elements[(I)] #define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size) #ifdef Py_DEBUG #define asdl_seq_SET(S, I, V) { \ int _asdl_i = (I); \ assert((S) && _asdl_i < (S)->size); \ - (S)->elt.elements[_asdl_i] = (V); \ + (S)->elements[_asdl_i] = (V); \ } #else #define asdl_seq_SET(S, I, V) (S)->elements[I] = (V) diff --git a/Python/compile.c b/Python/compile.c index 0fc0200989d..1bbe73a0796 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3066,8 +3066,10 @@ 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)asdl_seq_GET_ENUM(e->v.Compare.ops, i - 1))); + cmpop((cmpop_ty)( CMPCAST asdl_seq_GET( + e->v.Compare.ops, i - 1)))); ADDOP_JREL(c, JUMP_IF_FALSE, cleanup); NEXT_BLOCK(c); ADDOP(c, POP_TOP); @@ -3078,7 +3080,8 @@ 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)asdl_seq_GET_ENUM(e->v.Compare.ops, n - 1))); + cmpop((cmpop_ty)( CMPCAST asdl_seq_GET(e->v.Compare.ops, + n - 1)))); if (n > 1) { basicblock *end = compiler_new_block(c); if (end == NULL)