static FILE *out;
static int indent;
+static int print_implicit_casts = 1;
static void print_statement(const statement_t *statement);
case EXPR_UNARY_DEREFERENCE: fputs("*", out); break;
case EXPR_UNARY_TAKE_ADDRESS: fputs("&", out); break;
+ case EXPR_UNARY_BITFIELD_EXTRACT:
+ print_expression(unexpr->value);
+ return;
+
case EXPR_UNARY_POSTFIX_INCREMENT:
fputs("(", out);
print_expression(unexpr->value);
fputs(")", out);
fputs("--", out);
return;
+ case EXPR_UNARY_CAST_IMPLICIT:
+ if(!print_implicit_casts) {
+ print_expression(unexpr->value);
+ return;
+ }
+ /* fallthrough */
case EXPR_UNARY_CAST:
fputs("(", out);
print_type(unexpr->expression.datatype);
fputs(")", out);
break;
- case EXPR_UNARY_CAST_IMPLICIT:
- print_expression(unexpr->value);
- return;
case EXPR_UNARY_ASSUME:
fputs("__assume", out);
break;
{
print_storage_class(declaration->storage_class);
if(declaration->is_inline) {
- if (declaration->decl_modifiers & DM_FORCEINLINE)
+ if (declaration->modifiers & DM_FORCEINLINE)
fputs("__forceinline ", out);
else
fputs("inline ", out);
case EXPR_UNARY_POSTFIX_DECREMENT:
case EXPR_UNARY_PREFIX_INCREMENT:
case EXPR_UNARY_PREFIX_DECREMENT:
+ case EXPR_UNARY_BITFIELD_EXTRACT:
case EXPR_UNARY_ASSUME: /* has VOID type */
case EXPR_BINARY_ASSIGN:
case EXPR_BINARY_MUL_ASSIGN: