c-pretty-print.c (pp_c_primary_expression): Handle STMT_EXPR.
authorGabriel Dos Reis <gdr@nerim.net>
Tue, 30 Jul 2002 06:34:57 +0000 (06:34 +0000)
committerGabriel Dos Reis <gdr@gcc.gnu.org>
Tue, 30 Jul 2002 06:34:57 +0000 (06:34 +0000)
* c-pretty-print.c (pp_c_primary_expression): Handle STMT_EXPR.
(pp_c_postfix_expression): Handle ARROW_EXPR, FFS_EXPR,
COMPOUND_LITERAL_EXPR, VA_ARG_EXPR.
(pp_c_expression): Update.

From-SVN: r55864

gcc/ChangeLog
gcc/c-pretty-print.c

index d3b958a..f8e3ef6 100644 (file)
@@ -1,3 +1,10 @@
+2002-07-30  Gabriel Dos Reis  <gdr@nerim.net>
+
+       * c-pretty-print.c (pp_c_primary_expression): Handle STMT_EXPR.
+       (pp_c_postfix_expression): Handle ARROW_EXPR, FFS_EXPR,
+       COMPOUND_LITERAL_EXPR, VA_ARG_EXPR.
+       (pp_c_expression): Update.
+
 2002-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * alpha/vms-cc.c (preprocess_args, main): Use xstrdup and/or
index 20a8003..19c83d4 100644 (file)
@@ -335,6 +335,12 @@ pp_c_primary_expression (ppi, e)
        }
       pp_c_right_paren (ppi);
 
+    case STMT_EXPR:
+      pp_c_left_paren (ppi);
+      pp_statement (ppi, STMT_EXPR_STMT (e));
+      pp_c_right_paren (ppi);
+      break;
+
     default:
       /*  Make sure this call won't cause any infinite loop. */
       pp_c_left_paren (ppi);
@@ -416,6 +422,11 @@ pp_c_postfix_expression (ppi, e)
       pp_postfix_expression (ppi, TREE_OPERAND (e, 0));
       pp_identifier (ppi, code == POSTINCREMENT_EXPR ? "++" : "--");
       break;
+      
+    case ARROW_EXPR:
+      pp_postfix_expression (ppi, TREE_OPERAND (e, 0));
+      pp_arrow (ppi);
+      break;
 
     case ARRAY_REF:
       pp_postfix_expression (ppi, TREE_OPERAND (e, 0));
@@ -432,7 +443,9 @@ pp_c_postfix_expression (ppi, e)
       break;
 
     case ABS_EXPR:
-      pp_c_identifier (ppi, "abs");
+    case FFS_EXPR:
+      pp_c_identifier (ppi, 
+                      code == ABS_EXPR ? "__builtin_abs" : "__builtin_ffs");
       pp_c_left_paren (ppi);
       pp_c_expression (ppi, TREE_OPERAND (e, 0));
       pp_c_right_paren (ppi);
@@ -481,9 +494,21 @@ pp_c_postfix_expression (ppi, e)
       pp_right_brace (ppi);
       break;
 
+    case COMPOUND_LITERAL_EXPR:
+      e = DECL_INITIAL (e);
+      /* Fall through.  */
     case CONSTRUCTOR:
       pp_initializer (ppi, e);
       break;
+      
+    case VA_ARG_EXPR:
+      pp_c_identifier (ppi, "__builtin_va_arg");
+      pp_c_left_paren (ppi);
+      pp_assignment_expression (ppi, TREE_OPERAND (e, 0));
+      pp_separate_with (ppi, ',');
+      pp_type_id (ppi, TREE_TYPE (e));
+      pp_c_right_paren (ppi);
+      break;
 
     default:
       pp_primary_expression (ppi, e);
@@ -868,19 +893,24 @@ pp_c_expression (ppi, e)
     case LABEL_DECL:
     case ERROR_MARK:
     case TARGET_EXPR:
+    case STMT_EXPR:
       pp_c_primary_expression (ppi, e);
       break;
 
     case POSTINCREMENT_EXPR:
     case POSTDECREMENT_EXPR:
+    case ARROW_EXPR:
     case ARRAY_REF:
     case CALL_EXPR:
     case COMPONENT_REF:
     case COMPLEX_CST:
     case VECTOR_CST:
     case ABS_EXPR:
+    case FFS_EXPR:
     case CONSTRUCTOR:
+    case COMPOUND_LITERAL_EXPR:
     case COMPLEX_EXPR:
+    case VA_ARG_EXPR:
       pp_c_postfix_expression (ppi, e);
       break;