From: Tom Wood Date: Sun, 12 Apr 1992 14:34:57 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cdc54cc9f9c16d7df406c8018a8d5a279be492dc;p=gcc.git *** empty log message *** From-SVN: r729 --- diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 5a54d8f0523..3a1c828be4a 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -4461,7 +4461,7 @@ digest_init (type, init, tail, require_constant, constructor_constant, ofwhat) if (TREE_CODE (init) == NON_LVALUE_EXPR) inside_init = TREE_OPERAND (init, 0); - if (init && raw_constructor + if (inside_init && raw_constructor && CONSTRUCTOR_ELTS (inside_init) != 0 && TREE_CHAIN (CONSTRUCTOR_ELTS (inside_init)) == 0) { @@ -4672,8 +4672,12 @@ digest_init (type, init, tail, require_constant, constructor_constant, ofwhat) ({ if (ofwhat) push_string (ofwhat); - inside_init = convert_for_assignment (type, default_conversion (init), - &initialization_message, NULL_TREE, 0); + inside_init + = convert_for_assignment (type, + default_conversion (raw_constructor + ? inside_init + : init), + &initialization_message, NULL_TREE, 0); }); if (require_constant && ! TREE_CONSTANT (inside_init)) diff --git a/gcc/fold-const.c b/gcc/fold-const.c index fab7300650f..80e329a37e1 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -3667,7 +3667,7 @@ fold (expr) case EQ_EXPR: return fold (build1 (NEGATE_EXPR, type, arg1)); case NE_EXPR: - return arg1; + return convert (type, arg1); case GE_EXPR: case GT_EXPR: return fold (build1 (ABS_EXPR, type, arg1)); @@ -3683,7 +3683,7 @@ fold (expr) if (integer_zerop (TREE_OPERAND (arg0, 1)) && integer_zerop (arg2)) { if (comp_code == NE_EXPR) - return arg1; + return convert (type, arg1); else if (comp_code == EQ_EXPR) return convert (type, integer_zero_node); } @@ -3696,9 +3696,9 @@ fold (expr) switch (comp_code) { case EQ_EXPR: - return arg2; + return convert (type, arg2); case NE_EXPR: - return arg1; + return convert (type, arg1); case LE_EXPR: case LT_EXPR: return fold (build (MIN_EXPR, type, arg1, arg2)); diff --git a/gcc/loop.c b/gcc/loop.c index 4f255ef24cd..526c6fd18e3 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -3187,8 +3187,8 @@ strength_reduce (scan_start, end, loop_top, insn_count, && GET_CODE (PATTERN (insn)) != RETURN && (! condjump_p (insn) || (JUMP_LABEL (insn) != 0 - && (INSN_UID (JUMP_LABEL (insn)) > max_uid_for_loop - || INSN_UID (insn) > max_uid_for_loop + && (INSN_UID (JUMP_LABEL (insn)) >= max_uid_for_loop + || INSN_UID (insn) >= max_uid_for_loop || (INSN_LUID (JUMP_LABEL (insn)) < INSN_LUID (insn)))))) { diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 35051be5ff0..c2cdae5ddc9 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -304,7 +304,7 @@ layout_record (rec) record_align = MAX (record_align, desired_align); #else if (PCC_BITFIELD_TYPE_MATTERS && TREE_TYPE (field) != error_mark_node - && DECL_BIT_FIELD (field) + && DECL_BIT_FIELD_TYPE (field) && ! integer_zerop (TYPE_SIZE (TREE_TYPE (field)))) { /* For these machines, a zero-length field does not @@ -354,7 +354,7 @@ layout_record (rec) if (PCC_BITFIELD_TYPE_MATTERS && TREE_CODE (field) == FIELD_DECL && TREE_TYPE (field) != error_mark_node - && DECL_BIT_FIELD (field) + && DECL_BIT_FIELD_TYPE (field) && !DECL_PACKED (field) && !integer_zerop (DECL_SIZE (field))) { @@ -376,7 +376,7 @@ layout_record (rec) if (BITFIELD_NBYTES_LIMITED && TREE_CODE (field) == FIELD_DECL && TREE_TYPE (field) != error_mark_node - && DECL_BIT_FIELD (field) + && DECL_BIT_FIELD_TYPE (field) && !DECL_PACKED (field) && !integer_zerop (DECL_SIZE (field))) { @@ -505,7 +505,7 @@ layout_union (rec) #ifdef PCC_BITFIELD_TYPE_MATTERS /* On the m88000, a bit field of declare type `int' forces the entire union to have `int' alignment. */ - if (PCC_BITFIELD_TYPE_MATTERS && DECL_BIT_FIELD (field)) + if (PCC_BITFIELD_TYPE_MATTERS && DECL_BIT_FIELD_TYPE (field)) union_align = MAX (union_align, TYPE_ALIGN (TREE_TYPE (field))); #endif