| [0cbb4b7] | 1 | Submitted By: Jim Gifford (jim at cross-lfs dot org)
 | 
|---|
 | 2 | Date: 09-12-2009
 | 
|---|
 | 3 | Initial Package Version: 4.4.1
 | 
|---|
 | 4 | Origin: Upstream
 | 
|---|
 | 5 | Upstream Status: Applied
 | 
|---|
 | 6 | Description: This is a branch update for gcc-4.4.1, and should be
 | 
|---|
 | 7 |              rechecked periodically.
 | 
|---|
 | 8 | 
 | 
|---|
 | 9 | This patch was made from Revision # 151655.
 | 
|---|
 | 10 | 
 | 
|---|
 | 11 | diff -Naur gcc-4.4.1.orig/contrib/compare-debug gcc-4.4.1/contrib/compare-debug
 | 
|---|
 | 12 | --- gcc-4.4.1.orig/contrib/compare-debug        2007-11-25 22:40:31.000000000 -0800
 | 
|---|
 | 13 | +++ gcc-4.4.1/contrib/compare-debug     2009-08-18 12:46:20.000000000 -0700
 | 
|---|
 | 14 | @@ -2,7 +2,7 @@
 | 
|---|
 | 15 |  
 | 
|---|
 | 16 |  # Compare stripped copies of two given object files.
 | 
|---|
 | 17 |  
 | 
|---|
 | 18 | -# Copyright (C) 2007 Free Software Foundation
 | 
|---|
 | 19 | +# Copyright (C) 2007, 2008, 2009 Free Software Foundation
 | 
|---|
 | 20 |  # Originally by Alexandre Oliva <aoliva@redhat.com>
 | 
|---|
 | 21 |  
 | 
|---|
 | 22 |  # This file is part of GCC.
 | 
|---|
 | 23 | @@ -67,6 +67,74 @@
 | 
|---|
 | 24 |    status=0
 | 
|---|
 | 25 |  else
 | 
|---|
 | 26 |    status=1
 | 
|---|
 | 27 | +
 | 
|---|
 | 28 | +  # Assembler-generated CFI will add an .eh_frame section for -g not
 | 
|---|
 | 29 | +  # present in -g0.  Try to cope with it by checking that an .eh_frame
 | 
|---|
 | 30 | +  # section is present in either object file, and then stripping it
 | 
|---|
 | 31 | +  # off before re-comparing.
 | 
|---|
 | 32 | +
 | 
|---|
 | 33 | +  cmd=
 | 
|---|
 | 34 | +  cmp1=
 | 
|---|
 | 35 | +  cmp2=
 | 
|---|
 | 36 | +
 | 
|---|
 | 37 | +  for t in objdump readelf eu-readelf; do
 | 
|---|
 | 38 | +    if ($t --help) 2>&1 | grep -e '--\[*section-\]*headers' > /dev/null; then
 | 
|---|
 | 39 | +      cmd=$t
 | 
|---|
 | 40 | +
 | 
|---|
 | 41 | +      $cmd --section-headers "$1.$suf1" | grep '\.eh_frame' > /dev/null
 | 
|---|
 | 42 | +      cmp1=$?
 | 
|---|
 | 43 | +
 | 
|---|
 | 44 | +      $cmd --section-headers "$2.$suf2" | grep '\.eh_frame' > /dev/null
 | 
|---|
 | 45 | +      cmp2=$?
 | 
|---|
 | 46 | +
 | 
|---|
 | 47 | +      break
 | 
|---|
 | 48 | +    fi
 | 
|---|
 | 49 | +  done
 | 
|---|
 | 50 | +
 | 
|---|
 | 51 | +  # If we found .eh_frame in one but not the other, or if we could not
 | 
|---|
 | 52 | +  # find a command to tell, try to strip off the .eh_frame section
 | 
|---|
 | 53 | +  # from both.
 | 
|---|
 | 54 | +  if test "x$cmp1" != "x$cmp2" || test "x$cmd" = "x"; then
 | 
|---|
 | 55 | +    suf3=$suf1.
 | 
|---|
 | 56 | +    while test -f "$1.$suf3"; do
 | 
|---|
 | 57 | +      suf3=$suf3.
 | 
|---|
 | 58 | +    done
 | 
|---|
 | 59 | +
 | 
|---|
 | 60 | +    suf4=$suf2.
 | 
|---|
 | 61 | +    while test -f "$2.$suf4"; do
 | 
|---|
 | 62 | +      suf4=$suf4.
 | 
|---|
 | 63 | +    done
 | 
|---|
 | 64 | +
 | 
|---|
 | 65 | +    trap 'rm -f "$1.$suf1" "$2.$suf2" "$1.$suf3" "$2.$suf4"' 0 1 2 15
 | 
|---|
 | 66 | +
 | 
|---|
 | 67 | +    echo stripping off .eh_frame, then retrying >&2
 | 
|---|
 | 68 | +
 | 
|---|
 | 69 | +    if (objcopy -v) 2>&1 | grep -e "--remove-section" > /dev/null; then
 | 
|---|
 | 70 | +      objcopy --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$1.$suf1" "$1.$suf3"
 | 
|---|
 | 71 | +      mv "$1.$suf3" "$1.$suf1"
 | 
|---|
 | 72 | +
 | 
|---|
 | 73 | +      objcopy --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$2.$suf2" "$2.$suf4"
 | 
|---|
 | 74 | +      mv "$2.$suf4" "$2.$suf2"
 | 
|---|
 | 75 | +    elif (strip --help) 2>&1 | grep -e --remove-section > /dev/null; then
 | 
|---|
 | 76 | +      cp "$1.$suf1" "$1.$suf3"
 | 
|---|
 | 77 | +      strip --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$1.$suf3"
 | 
|---|
 | 78 | +      mv "$1.$suf3" "$1.$suf1"
 | 
|---|
 | 79 | +
 | 
|---|
 | 80 | +      cp "$2.$suf2" "$2.$suf4"
 | 
|---|
 | 81 | +      strip --remove-section .eh_frame --remove-section .rel.eh_frame --remove-section .rela.eh_frame "$2.$suf4"
 | 
|---|
 | 82 | +      mv "$2.$suf4" "$2.$suf2"
 | 
|---|
 | 83 | +    else
 | 
|---|
 | 84 | +      echo failed to strip off .eh_frame >&2
 | 
|---|
 | 85 | +    fi
 | 
|---|
 | 86 | +
 | 
|---|
 | 87 | +    trap 'rm -f "$1.$suf1" "$2.$suf2"' 0 1 2 15
 | 
|---|
 | 88 | +
 | 
|---|
 | 89 | +    if cmp "$1.$suf1" "$2.$suf2"; then
 | 
|---|
 | 90 | +      status=0
 | 
|---|
 | 91 | +    else
 | 
|---|
 | 92 | +      status=1
 | 
|---|
 | 93 | +    fi
 | 
|---|
 | 94 | +  fi
 | 
|---|
 | 95 |  fi
 | 
|---|
 | 96 |  
 | 
|---|
 | 97 |  $rm "$1.$suf1" "$2.$suf2"
 | 
|---|
 | 98 | diff -Naur gcc-4.4.1.orig/gcc/alias.c gcc-4.4.1/gcc/alias.c
 | 
|---|
 | 99 | --- gcc-4.4.1.orig/gcc/alias.c  2009-04-27 04:55:13.000000000 -0700
 | 
|---|
 | 100 | +++ gcc-4.4.1/gcc/alias.c       2009-08-12 23:28:28.000000000 -0700
 | 
|---|
 | 101 | @@ -1932,6 +1932,9 @@
 | 
|---|
 | 102 |  {
 | 
|---|
 | 103 |    const_tree fieldx, fieldy, typex, typey, orig_y;
 | 
|---|
 | 104 |  
 | 
|---|
 | 105 | +  if (!flag_strict_aliasing)
 | 
|---|
 | 106 | +    return false;
 | 
|---|
 | 107 | +
 | 
|---|
 | 108 |    do
 | 
|---|
 | 109 |      {
 | 
|---|
 | 110 |        /* The comparison has to be done at a common type, since we don't
 | 
|---|
 | 111 | diff -Naur gcc-4.4.1.orig/gcc/builtins.c gcc-4.4.1/gcc/builtins.c
 | 
|---|
 | 112 | --- gcc-4.4.1.orig/gcc/builtins.c       2009-05-29 08:47:31.000000000 -0700
 | 
|---|
 | 113 | +++ gcc-4.4.1/gcc/builtins.c    2009-08-24 02:52:03.000000000 -0700
 | 
|---|
 | 114 | @@ -8634,15 +8634,18 @@
 | 
|---|
 | 115 |             }
 | 
|---|
 | 116 |         }
 | 
|---|
 | 117 |  
 | 
|---|
 | 118 | -      /* Optimize pow(pow(x,y),z) = pow(x,y*z).  */
 | 
|---|
 | 119 | +      /* Optimize pow(pow(x,y),z) = pow(x,y*z) iff x is nonnegative.  */
 | 
|---|
 | 120 |        if (fcode == BUILT_IN_POW
 | 
|---|
 | 121 |           || fcode == BUILT_IN_POWF
 | 
|---|
 | 122 |           || fcode == BUILT_IN_POWL)
 | 
|---|
 | 123 |         {
 | 
|---|
 | 124 |           tree arg00 = CALL_EXPR_ARG (arg0, 0);
 | 
|---|
 | 125 | -         tree arg01 = CALL_EXPR_ARG (arg0, 1);
 | 
|---|
 | 126 | -         tree narg1 = fold_build2 (MULT_EXPR, type, arg01, arg1);
 | 
|---|
 | 127 | -         return build_call_expr (fndecl, 2, arg00, narg1);
 | 
|---|
 | 128 | +         if (tree_expr_nonnegative_p (arg00))
 | 
|---|
 | 129 | +           {
 | 
|---|
 | 130 | +             tree arg01 = CALL_EXPR_ARG (arg0, 1);
 | 
|---|
 | 131 | +             tree narg1 = fold_build2 (MULT_EXPR, type, arg01, arg1);
 | 
|---|
 | 132 | +             return build_call_expr (fndecl, 2, arg00, narg1);
 | 
|---|
 | 133 | +           }
 | 
|---|
 | 134 |         }
 | 
|---|
 | 135 |      }
 | 
|---|
 | 136 |  
 | 
|---|
 | 137 | diff -Naur gcc-4.4.1.orig/gcc/config/alpha/alpha.c gcc-4.4.1/gcc/config/alpha/alpha.c
 | 
|---|
 | 138 | --- gcc-4.4.1.orig/gcc/config/alpha/alpha.c     2009-03-17 13:18:21.000000000 -0700
 | 
|---|
 | 139 | +++ gcc-4.4.1/gcc/config/alpha/alpha.c  2009-08-28 02:57:51.000000000 -0700
 | 
|---|
 | 140 | @@ -2052,11 +2052,22 @@
 | 
|---|
 | 141 |  
 | 
|---|
 | 142 |    switch (GET_CODE (x))
 | 
|---|
 | 143 |      {
 | 
|---|
 | 144 | -    case CONST:
 | 
|---|
 | 145 |      case LABEL_REF:
 | 
|---|
 | 146 |      case HIGH:
 | 
|---|
 | 147 |        return true;
 | 
|---|
 | 148 |  
 | 
|---|
 | 149 | +    case CONST:
 | 
|---|
 | 150 | +      if (GET_CODE (XEXP (x, 0)) == PLUS
 | 
|---|
 | 151 | +         && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)
 | 
|---|
 | 152 | +       x = XEXP (XEXP (x, 0), 0);
 | 
|---|
 | 153 | +      else
 | 
|---|
 | 154 | +       return true;
 | 
|---|
 | 155 | +
 | 
|---|
 | 156 | +      if (GET_CODE (x) != SYMBOL_REF)
 | 
|---|
 | 157 | +       return true;
 | 
|---|
 | 158 | +
 | 
|---|
 | 159 | +      /* FALLTHRU */
 | 
|---|
 | 160 | +
 | 
|---|
 | 161 |      case SYMBOL_REF:
 | 
|---|
 | 162 |        /* TLS symbols are never valid.  */
 | 
|---|
 | 163 |        return SYMBOL_REF_TLS_MODEL (x) == 0;
 | 
|---|
 | 164 | @@ -3542,7 +3553,7 @@
 | 
|---|
 | 165 |               emit_insn (gen_insll_le (insl, gen_lowpart (SImode, src), addr));
 | 
|---|
 | 166 |               break;
 | 
|---|
 | 167 |             case 8:
 | 
|---|
 | 168 | -             emit_insn (gen_insql_le (insl, src, addr));
 | 
|---|
 | 169 | +             emit_insn (gen_insql_le (insl, gen_lowpart (DImode, src), addr));
 | 
|---|
 | 170 |               break;
 | 
|---|
 | 171 |             }
 | 
|---|
 | 172 |         }
 | 
|---|
 | 173 | @@ -8279,7 +8290,7 @@
 | 
|---|
 | 174 |    insn = get_last_insn ();
 | 
|---|
 | 175 |    if (!INSN_P (insn))
 | 
|---|
 | 176 |      insn = prev_active_insn (insn);
 | 
|---|
 | 177 | -  if (GET_CODE (insn) == CALL_INSN)
 | 
|---|
 | 178 | +  if (insn && GET_CODE (insn) == CALL_INSN)
 | 
|---|
 | 179 |      output_asm_insn (get_insn_template (CODE_FOR_nop, NULL), NULL);
 | 
|---|
 | 180 |  
 | 
|---|
 | 181 |  #if TARGET_ABI_OSF
 | 
|---|
 | 182 | diff -Naur gcc-4.4.1.orig/gcc/config/alpha/alpha.md gcc-4.4.1/gcc/config/alpha/alpha.md
 | 
|---|
 | 183 | --- gcc-4.4.1.orig/gcc/config/alpha/alpha.md    2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 184 | +++ gcc-4.4.1/gcc/config/alpha/alpha.md 2009-08-28 02:57:51.000000000 -0700
 | 
|---|
 | 185 | @@ -256,16 +256,7 @@
 | 
|---|
 | 186 |         (sign_extend:DI (match_dup 1)))]
 | 
|---|
 | 187 |    "")
 | 
|---|
 | 188 |  
 | 
|---|
 | 189 | -;; Don't say we have addsi3 if optimizing.  This generates better code.  We
 | 
|---|
 | 190 | -;; have the anonymous addsi3 pattern below in case combine wants to make it.
 | 
|---|
 | 191 | -(define_expand "addsi3"
 | 
|---|
 | 192 | -  [(set (match_operand:SI 0 "register_operand" "")
 | 
|---|
 | 193 | -       (plus:SI (match_operand:SI 1 "reg_or_0_operand" "")
 | 
|---|
 | 194 | -                (match_operand:SI 2 "add_operand" "")))]
 | 
|---|
 | 195 | -  "! optimize"
 | 
|---|
 | 196 | -  "")
 | 
|---|
 | 197 | -
 | 
|---|
 | 198 | -(define_insn "*addsi_internal"
 | 
|---|
 | 199 | +(define_insn "addsi3"
 | 
|---|
 | 200 |    [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
 | 
|---|
 | 201 |         (plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ,rJ,rJ")
 | 
|---|
 | 202 |                  (match_operand:SI 2 "add_operand" "rI,O,K,L")))]
 | 
|---|
 | 203 | @@ -619,14 +610,7 @@
 | 
|---|
 | 204 |    ""
 | 
|---|
 | 205 |    "subqv $31,%1,%0")
 | 
|---|
 | 206 |  
 | 
|---|
 | 207 | -(define_expand "subsi3"
 | 
|---|
 | 208 | -  [(set (match_operand:SI 0 "register_operand" "")
 | 
|---|
 | 209 | -       (minus:SI (match_operand:SI 1 "reg_or_0_operand" "")
 | 
|---|
 | 210 | -                 (match_operand:SI 2 "reg_or_8bit_operand" "")))]
 | 
|---|
 | 211 | -  "! optimize"
 | 
|---|
 | 212 | -  "")
 | 
|---|
 | 213 | -
 | 
|---|
 | 214 | -(define_insn "*subsi_internal"
 | 
|---|
 | 215 | +(define_insn "subsi3"
 | 
|---|
 | 216 |    [(set (match_operand:SI 0 "register_operand" "=r")
 | 
|---|
 | 217 |         (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")
 | 
|---|
 | 218 |                   (match_operand:SI 2 "reg_or_8bit_operand" "rI")))]
 | 
|---|
 | 219 | @@ -3716,19 +3700,7 @@
 | 
|---|
 | 220 |         (match_operator:DF 1 "alpha_fp_comparison_operator"
 | 
|---|
 | 221 |                            [(match_operand:DF 2 "reg_or_0_operand" "fG")
 | 
|---|
 | 222 |                             (match_operand:DF 3 "reg_or_0_operand" "fG")]))]
 | 
|---|
 | 223 | -  "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
 | 
|---|
 | 224 | -  "cmp%-%C1%/ %R2,%R3,%0"
 | 
|---|
 | 225 | -  [(set_attr "type" "fadd")
 | 
|---|
 | 226 | -   (set_attr "trap" "yes")
 | 
|---|
 | 227 | -   (set_attr "trap_suffix" "su")])
 | 
|---|
 | 228 | -
 | 
|---|
 | 229 | -(define_insn "*cmpdf_ieee_ext1"
 | 
|---|
 | 230 | -  [(set (match_operand:DF 0 "register_operand" "=&f")
 | 
|---|
 | 231 | -       (match_operator:DF 1 "alpha_fp_comparison_operator"
 | 
|---|
 | 232 | -                          [(float_extend:DF
 | 
|---|
 | 233 | -                            (match_operand:SF 2 "reg_or_0_operand" "fG"))
 | 
|---|
 | 234 | -                           (match_operand:DF 3 "reg_or_0_operand" "fG")]))]
 | 
|---|
 | 235 | -  "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
 | 
|---|
 | 236 | +  "TARGET_FP"
 | 
|---|
 | 237 |    "cmp%-%C1%/ %R2,%R3,%0"
 | 
|---|
 | 238 |    [(set_attr "type" "fadd")
 | 
|---|
 | 239 |     (set_attr "trap" "yes")
 | 
|---|
 | 240 | @@ -3746,18 +3718,6 @@
 | 
|---|
 | 241 |     (set_attr "trap" "yes")
 | 
|---|
 | 242 |     (set_attr "trap_suffix" "su")])
 | 
|---|
 | 243 |  
 | 
|---|
 | 244 | -(define_insn "*cmpdf_ieee_ext2"
 | 
|---|
 | 245 | -  [(set (match_operand:DF 0 "register_operand" "=&f")
 | 
|---|
 | 246 | -       (match_operator:DF 1 "alpha_fp_comparison_operator"
 | 
|---|
 | 247 | -                          [(match_operand:DF 2 "reg_or_0_operand" "fG")
 | 
|---|
 | 248 | -                           (float_extend:DF
 | 
|---|
 | 249 | -                            (match_operand:SF 3 "reg_or_0_operand" "fG"))]))]
 | 
|---|
 | 250 | -  "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
 | 
|---|
 | 251 | -  "cmp%-%C1%/ %R2,%R3,%0"
 | 
|---|
 | 252 | -  [(set_attr "type" "fadd")
 | 
|---|
 | 253 | -   (set_attr "trap" "yes")
 | 
|---|
 | 254 | -   (set_attr "trap_suffix" "su")])
 | 
|---|
 | 255 | -
 | 
|---|
 | 256 |  (define_insn "*cmpdf_ext2"
 | 
|---|
 | 257 |    [(set (match_operand:DF 0 "register_operand" "=f")
 | 
|---|
 | 258 |         (match_operator:DF 1 "alpha_fp_comparison_operator"
 | 
|---|
 | 259 | @@ -3770,19 +3730,6 @@
 | 
|---|
 | 260 |     (set_attr "trap" "yes")
 | 
|---|
 | 261 |     (set_attr "trap_suffix" "su")])
 | 
|---|
 | 262 |  
 | 
|---|
 | 263 | -(define_insn "*cmpdf_ieee_ext3"
 | 
|---|
 | 264 | -  [(set (match_operand:DF 0 "register_operand" "=&f")
 | 
|---|
 | 265 | -       (match_operator:DF 1 "alpha_fp_comparison_operator"
 | 
|---|
 | 266 | -                          [(float_extend:DF
 | 
|---|
 | 267 | -                            (match_operand:SF 2 "reg_or_0_operand" "fG"))
 | 
|---|
 | 268 | -                           (float_extend:DF
 | 
|---|
 | 269 | -                            (match_operand:SF 3 "reg_or_0_operand" "fG"))]))]
 | 
|---|
 | 270 | -  "TARGET_FP && alpha_fptm >= ALPHA_FPTM_SU"
 | 
|---|
 | 271 | -  "cmp%-%C1%/ %R2,%R3,%0"
 | 
|---|
 | 272 | -  [(set_attr "type" "fadd")
 | 
|---|
 | 273 | -   (set_attr "trap" "yes")
 | 
|---|
 | 274 | -   (set_attr "trap_suffix" "su")])
 | 
|---|
 | 275 | -
 | 
|---|
 | 276 |  (define_insn "*cmpdf_ext3"
 | 
|---|
 | 277 |    [(set (match_operand:DF 0 "register_operand" "=f")
 | 
|---|
 | 278 |         (match_operator:DF 1 "alpha_fp_comparison_operator"
 | 
|---|
 | 279 | @@ -3832,7 +3779,7 @@
 | 
|---|
 | 280 |                           (match_operand:DF 2 "const0_operand" "G,G")])
 | 
|---|
 | 281 |          (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG,0"))
 | 
|---|
 | 282 |          (match_operand:DF 5 "reg_or_0_operand" "0,fG")))]
 | 
|---|
 | 283 | -  "TARGET_FP"
 | 
|---|
 | 284 | +  "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
 | 
|---|
 | 285 |    "@
 | 
|---|
 | 286 |     fcmov%C3 %R4,%R1,%0
 | 
|---|
 | 287 |     fcmov%D3 %R4,%R5,%0"
 | 
|---|
 | 288 | @@ -3847,7 +3794,7 @@
 | 
|---|
 | 289 |                           (match_operand:DF 2 "const0_operand" "G,G")])
 | 
|---|
 | 290 |          (match_operand:DF 1 "reg_or_0_operand" "fG,0")
 | 
|---|
 | 291 |          (match_operand:DF 5 "reg_or_0_operand" "0,fG")))]
 | 
|---|
 | 292 | -  "TARGET_FP"
 | 
|---|
 | 293 | +  "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
 | 
|---|
 | 294 |    "@
 | 
|---|
 | 295 |     fcmov%C3 %R4,%R1,%0
 | 
|---|
 | 296 |     fcmov%D3 %R4,%R5,%0"
 | 
|---|
 | 297 | @@ -3862,7 +3809,7 @@
 | 
|---|
 | 298 |                           (match_operand:DF 2 "const0_operand" "G,G")])
 | 
|---|
 | 299 |          (match_operand:SF 1 "reg_or_0_operand" "fG,0")
 | 
|---|
 | 300 |          (match_operand:SF 5 "reg_or_0_operand" "0,fG")))]
 | 
|---|
 | 301 | -  "TARGET_FP"
 | 
|---|
 | 302 | +  "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
 | 
|---|
 | 303 |    "@
 | 
|---|
 | 304 |     fcmov%C3 %R4,%R1,%0
 | 
|---|
 | 305 |     fcmov%D3 %R4,%R5,%0"
 | 
|---|
 | 306 | @@ -3877,7 +3824,7 @@
 | 
|---|
 | 307 |                           (match_operand:DF 2 "const0_operand" "G,G")])
 | 
|---|
 | 308 |          (float_extend:DF (match_operand:SF 1 "reg_or_0_operand" "fG,0"))
 | 
|---|
 | 309 |          (match_operand:DF 5 "reg_or_0_operand" "0,fG")))]
 | 
|---|
 | 310 | -  "TARGET_FP"
 | 
|---|
 | 311 | +  "TARGET_FP && alpha_fptm < ALPHA_FPTM_SU"
 | 
|---|
 | 312 |    "@
 | 
|---|
 | 313 |     fcmov%C3 %R4,%R1,%0
 | 
|---|
 | 314 |     fcmov%D3 %R4,%R5,%0"
 | 
|---|
 | 315 | diff -Naur gcc-4.4.1.orig/gcc/config/alpha/sync.md gcc-4.4.1/gcc/config/alpha/sync.md
 | 
|---|
 | 316 | --- gcc-4.4.1.orig/gcc/config/alpha/sync.md     2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 317 | +++ gcc-4.4.1/gcc/config/alpha/sync.md  2009-08-28 02:57:51.000000000 -0700
 | 
|---|
 | 318 | @@ -62,11 +62,8 @@
 | 
|---|
 | 319 |    [(set_attr "type" "st_c")])
 | 
|---|
 | 320 |  
 | 
|---|
 | 321 |  ;; The Alpha Architecture Handbook says that it is UNPREDICTABLE whether
 | 
|---|
 | 322 | -;; the lock is cleared by a TAKEN branch.  If we were to honor that, it
 | 
|---|
 | 323 | -;; would mean that we could not expand a ll/sc sequence until after the
 | 
|---|
 | 324 | -;; final basic-block reordering pass.  Fortunately, it appears that no
 | 
|---|
 | 325 | -;; Alpha implementation ever built actually clears the lock on branches,
 | 
|---|
 | 326 | -;; taken or not.
 | 
|---|
 | 327 | +;; the lock is cleared by a TAKEN branch.  This means that we can not
 | 
|---|
 | 328 | +;; expand a ll/sc sequence until after the final basic-block reordering pass.
 | 
|---|
 | 329 |  
 | 
|---|
 | 330 |  (define_insn_and_split "sync_<fetchop_name><mode>"
 | 
|---|
 | 331 |    [(set (match_operand:I48MODE 0 "memory_operand" "+m")
 | 
|---|
 | 332 | @@ -77,7 +74,7 @@
 | 
|---|
 | 333 |     (clobber (match_scratch:I48MODE 2 "=&r"))]
 | 
|---|
 | 334 |    ""
 | 
|---|
 | 335 |    "#"
 | 
|---|
 | 336 | -  "reload_completed"
 | 
|---|
 | 337 | +  "epilogue_completed"
 | 
|---|
 | 338 |    [(const_int 0)]
 | 
|---|
 | 339 |  {
 | 
|---|
 | 340 |    alpha_split_atomic_op (<CODE>, operands[0], operands[1],
 | 
|---|
 | 341 | @@ -96,7 +93,7 @@
 | 
|---|
 | 342 |     (clobber (match_scratch:I48MODE 2 "=&r"))]
 | 
|---|
 | 343 |    ""
 | 
|---|
 | 344 |    "#"
 | 
|---|
 | 345 | -  "reload_completed"
 | 
|---|
 | 346 | +  "epilogue_completed"
 | 
|---|
 | 347 |    [(const_int 0)]
 | 
|---|
 | 348 |  {
 | 
|---|
 | 349 |    alpha_split_atomic_op (NOT, operands[0], operands[1],
 | 
|---|
 | 350 | @@ -116,7 +113,7 @@
 | 
|---|
 | 351 |     (clobber (match_scratch:I48MODE 3 "=&r"))]
 | 
|---|
 | 352 |    ""
 | 
|---|
 | 353 |    "#"
 | 
|---|
 | 354 | -  "reload_completed"
 | 
|---|
 | 355 | +  "epilogue_completed"
 | 
|---|
 | 356 |    [(const_int 0)]
 | 
|---|
 | 357 |  {
 | 
|---|
 | 358 |    alpha_split_atomic_op (<CODE>, operands[1], operands[2],
 | 
|---|
 | 359 | @@ -137,7 +134,7 @@
 | 
|---|
 | 360 |     (clobber (match_scratch:I48MODE 3 "=&r"))]
 | 
|---|
 | 361 |    ""
 | 
|---|
 | 362 |    "#"
 | 
|---|
 | 363 | -  "reload_completed"
 | 
|---|
 | 364 | +  "epilogue_completed"
 | 
|---|
 | 365 |    [(const_int 0)]
 | 
|---|
 | 366 |  {
 | 
|---|
 | 367 |    alpha_split_atomic_op (NOT, operands[1], operands[2],
 | 
|---|
 | 368 | @@ -158,7 +155,7 @@
 | 
|---|
 | 369 |     (clobber (match_scratch:I48MODE 3 "=&r"))]
 | 
|---|
 | 370 |    ""
 | 
|---|
 | 371 |    "#"
 | 
|---|
 | 372 | -  "reload_completed"
 | 
|---|
 | 373 | +  "epilogue_completed"
 | 
|---|
 | 374 |    [(const_int 0)]
 | 
|---|
 | 375 |  {
 | 
|---|
 | 376 |    alpha_split_atomic_op (<CODE>, operands[1], operands[2],
 | 
|---|
 | 377 | @@ -179,7 +176,7 @@
 | 
|---|
 | 378 |     (clobber (match_scratch:I48MODE 3 "=&r"))]
 | 
|---|
 | 379 |    ""
 | 
|---|
 | 380 |    "#"
 | 
|---|
 | 381 | -  "reload_completed"
 | 
|---|
 | 382 | +  "epilogue_completed"
 | 
|---|
 | 383 |    [(const_int 0)]
 | 
|---|
 | 384 |  {
 | 
|---|
 | 385 |    alpha_split_atomic_op (NOT, operands[1], operands[2],
 | 
|---|
 | 386 | @@ -214,7 +211,7 @@
 | 
|---|
 | 387 |     (clobber (match_scratch:DI 6 "=X,&r"))]
 | 
|---|
 | 388 |    ""
 | 
|---|
 | 389 |    "#"
 | 
|---|
 | 390 | -  "reload_completed"
 | 
|---|
 | 391 | +  "epilogue_completed"
 | 
|---|
 | 392 |    [(const_int 0)]
 | 
|---|
 | 393 |  {
 | 
|---|
 | 394 |    alpha_split_compare_and_swap_12 (<MODE>mode, operands[0], operands[1],
 | 
|---|
 | 395 | @@ -251,7 +248,7 @@
 | 
|---|
 | 396 |     (clobber (match_scratch:I48MODE 4 "=&r"))]
 | 
|---|
 | 397 |    ""
 | 
|---|
 | 398 |    "#"
 | 
|---|
 | 399 | -  "reload_completed"
 | 
|---|
 | 400 | +  "epilogue_completed"
 | 
|---|
 | 401 |    [(const_int 0)]
 | 
|---|
 | 402 |  {
 | 
|---|
 | 403 |    alpha_split_compare_and_swap (operands[0], operands[1], operands[2],
 | 
|---|
 | 404 | @@ -282,7 +279,7 @@
 | 
|---|
 | 405 |     (clobber (match_scratch:DI 4 "=&r"))]
 | 
|---|
 | 406 |    ""
 | 
|---|
 | 407 |    "#"
 | 
|---|
 | 408 | -  "reload_completed"
 | 
|---|
 | 409 | +  "epilogue_completed"
 | 
|---|
 | 410 |    [(const_int 0)]
 | 
|---|
 | 411 |  {
 | 
|---|
 | 412 |    alpha_split_lock_test_and_set_12 (<MODE>mode, operands[0], operands[1],
 | 
|---|
 | 413 | @@ -301,7 +298,7 @@
 | 
|---|
 | 414 |     (clobber (match_scratch:I48MODE 3 "=&r"))]
 | 
|---|
 | 415 |    ""
 | 
|---|
 | 416 |    "#"
 | 
|---|
 | 417 | -  "reload_completed"
 | 
|---|
 | 418 | +  "epilogue_completed"
 | 
|---|
 | 419 |    [(const_int 0)]
 | 
|---|
 | 420 |  {
 | 
|---|
 | 421 |    alpha_split_lock_test_and_set (operands[0], operands[1],
 | 
|---|
 | 422 | diff -Naur gcc-4.4.1.orig/gcc/config/arm/arm.md gcc-4.4.1/gcc/config/arm/arm.md
 | 
|---|
 | 423 | --- gcc-4.4.1.orig/gcc/config/arm/arm.md        2009-05-16 06:28:27.000000000 -0700
 | 
|---|
 | 424 | +++ gcc-4.4.1/gcc/config/arm/arm.md     2009-08-05 09:11:25.000000000 -0700
 | 
|---|
 | 425 | @@ -472,9 +472,9 @@
 | 
|---|
 | 426 |    if (TARGET_THUMB1)
 | 
|---|
 | 427 |      {
 | 
|---|
 | 428 |        if (GET_CODE (operands[1]) != REG)
 | 
|---|
 | 429 | -        operands[1] = force_reg (SImode, operands[1]);
 | 
|---|
 | 430 | +        operands[1] = force_reg (DImode, operands[1]);
 | 
|---|
 | 431 |        if (GET_CODE (operands[2]) != REG)
 | 
|---|
 | 432 | -        operands[2] = force_reg (SImode, operands[2]);
 | 
|---|
 | 433 | +        operands[2] = force_reg (DImode, operands[2]);
 | 
|---|
 | 434 |       }
 | 
|---|
 | 435 |    "
 | 
|---|
 | 436 |  )
 | 
|---|
 | 437 | diff -Naur gcc-4.4.1.orig/gcc/config/avr/avr.c gcc-4.4.1/gcc/config/avr/avr.c
 | 
|---|
 | 438 | --- gcc-4.4.1.orig/gcc/config/avr/avr.c 2009-04-01 00:18:47.000000000 -0700
 | 
|---|
 | 439 | +++ gcc-4.4.1/gcc/config/avr/avr.c      2009-08-25 12:03:53.000000000 -0700
 | 
|---|
 | 440 | @@ -996,7 +996,7 @@
 | 
|---|
 | 441 |               start_sequence ();
 | 
|---|
 | 442 |  
 | 
|---|
 | 443 |               emit_move_insn (myfp,
 | 
|---|
 | 444 | -                             gen_rtx_PLUS (HImode, myfp,
 | 
|---|
 | 445 | +                             gen_rtx_PLUS (GET_MODE (myfp), myfp,
 | 
|---|
 | 446 |                                             gen_int_mode (size, 
 | 
|---|
 | 447 |                                                           GET_MODE(myfp))));
 | 
|---|
 | 448 |  
 | 
|---|
 | 449 | diff -Naur gcc-4.4.1.orig/gcc/config/i386/i386.c gcc-4.4.1/gcc/config/i386/i386.c
 | 
|---|
 | 450 | --- gcc-4.4.1.orig/gcc/config/i386/i386.c       2009-07-21 00:22:51.000000000 -0700
 | 
|---|
 | 451 | +++ gcc-4.4.1/gcc/config/i386/i386.c    2009-09-09 12:08:31.000000000 -0700
 | 
|---|
 | 452 | @@ -7340,7 +7340,8 @@
 | 
|---|
 | 453 |      return 0;
 | 
|---|
 | 454 |  
 | 
|---|
 | 455 |    ix86_compute_frame_layout (&frame);
 | 
|---|
 | 456 | -  return frame.to_allocate == 0 && (frame.nregs + frame.nsseregs) == 0;
 | 
|---|
 | 457 | +  return frame.to_allocate == 0 && frame.padding0 == 0
 | 
|---|
 | 458 | +         && (frame.nregs + frame.nsseregs) == 0;
 | 
|---|
 | 459 |  }
 | 
|---|
 | 460 |   | 
|---|
 | 461 | 
 | 
|---|
 | 462 |  /* Value should be nonzero if functions must have frame pointers.
 | 
|---|
 | 463 | @@ -8328,7 +8329,7 @@
 | 
|---|
 | 464 |           && (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)))
 | 
|---|
 | 465 |      {
 | 
|---|
 | 466 |        if (!frame_pointer_needed
 | 
|---|
 | 467 | -         || !frame.to_allocate
 | 
|---|
 | 468 | +         || !(frame.to_allocate + frame.padding0)
 | 
|---|
 | 469 |           || crtl->stack_realign_needed)
 | 
|---|
 | 470 |          ix86_emit_save_regs_using_mov (stack_pointer_rtx,
 | 
|---|
 | 471 |                                        frame.to_allocate
 | 
|---|
 | 472 | @@ -8338,7 +8339,7 @@
 | 
|---|
 | 473 |                                        -frame.nregs * UNITS_PER_WORD);
 | 
|---|
 | 474 |      }
 | 
|---|
 | 475 |    if (!frame_pointer_needed
 | 
|---|
 | 476 | -      || !frame.to_allocate
 | 
|---|
 | 477 | +      || !(frame.to_allocate + frame.padding0)
 | 
|---|
 | 478 |        || crtl->stack_realign_needed)
 | 
|---|
 | 479 |      ix86_emit_save_sse_regs_using_mov (stack_pointer_rtx,
 | 
|---|
 | 480 |                                        frame.to_allocate);
 | 
|---|
 | 481 | @@ -8524,8 +8525,10 @@
 | 
|---|
 | 482 |    if ((!sp_valid && (frame.nregs + frame.nsseregs) <= 1)
 | 
|---|
 | 483 |        || (TARGET_EPILOGUE_USING_MOVE
 | 
|---|
 | 484 |           && cfun->machine->use_fast_prologue_epilogue
 | 
|---|
 | 485 | -         && ((frame.nregs + frame.nsseregs) > 1 || frame.to_allocate))
 | 
|---|
 | 486 | -      || (frame_pointer_needed && !(frame.nregs + frame.nsseregs) && frame.to_allocate)
 | 
|---|
 | 487 | +         && ((frame.nregs + frame.nsseregs) > 1
 | 
|---|
 | 488 | +             || (frame.to_allocate + frame.padding0) != 0))
 | 
|---|
 | 489 | +      || (frame_pointer_needed && !(frame.nregs + frame.nsseregs)
 | 
|---|
 | 490 | +          && (frame.to_allocate + frame.padding0) != 0)
 | 
|---|
 | 491 |        || (frame_pointer_needed && TARGET_USE_LEAVE
 | 
|---|
 | 492 |           && cfun->machine->use_fast_prologue_epilogue
 | 
|---|
 | 493 |           && (frame.nregs + frame.nsseregs) == 1)
 | 
|---|
 | 494 | @@ -8535,13 +8538,13 @@
 | 
|---|
 | 495 |          locations.  If both are available, default to ebp, since offsets
 | 
|---|
 | 496 |          are known to be small.  Only exception is esp pointing directly
 | 
|---|
 | 497 |          to the end of block of saved registers, where we may simplify
 | 
|---|
 | 498 | -        addressing mode.  
 | 
|---|
 | 499 | +        addressing mode.
 | 
|---|
 | 500 |  
 | 
|---|
 | 501 |          If we are realigning stack with bp and sp, regs restore can't
 | 
|---|
 | 502 |          be addressed by bp. sp must be used instead.  */
 | 
|---|
 | 503 |  
 | 
|---|
 | 504 |        if (!frame_pointer_needed
 | 
|---|
 | 505 | -         || (sp_valid && !frame.to_allocate) 
 | 
|---|
 | 506 | +         || (sp_valid && !(frame.to_allocate + frame.padding0))
 | 
|---|
 | 507 |           || stack_realign_fp)
 | 
|---|
 | 508 |         {
 | 
|---|
 | 509 |           ix86_emit_restore_sse_regs_using_mov (stack_pointer_rtx,
 | 
|---|
 | 510 | @@ -8630,9 +8633,10 @@
 | 
|---|
 | 511 |            ix86_emit_restore_sse_regs_using_mov (stack_pointer_rtx,
 | 
|---|
 | 512 |                                                 frame.to_allocate, style == 2);
 | 
|---|
 | 513 |           pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
 | 
|---|
 | 514 | -                                    GEN_INT (frame.nsseregs * 16), style);
 | 
|---|
 | 515 | +                                    GEN_INT (frame.nsseregs * 16 +
 | 
|---|
 | 516 | +                                      frame.padding0), style);
 | 
|---|
 | 517 |         }
 | 
|---|
 | 518 | -      else if (frame.to_allocate || frame.nsseregs)
 | 
|---|
 | 519 | +      else if (frame.to_allocate || frame.padding0 || frame.nsseregs)
 | 
|---|
 | 520 |         {
 | 
|---|
 | 521 |            ix86_emit_restore_sse_regs_using_mov (stack_pointer_rtx,
 | 
|---|
 | 522 |                                                 frame.to_allocate,
 | 
|---|
 | 523 | @@ -12090,16 +12094,18 @@
 | 
|---|
 | 524 |  output_387_ffreep (rtx *operands ATTRIBUTE_UNUSED, int opno)
 | 
|---|
 | 525 |  {
 | 
|---|
 | 526 |    if (TARGET_USE_FFREEP)
 | 
|---|
 | 527 | -#if HAVE_AS_IX86_FFREEP
 | 
|---|
 | 528 | +#ifdef HAVE_AS_IX86_FFREEP
 | 
|---|
 | 529 |      return opno ? "ffreep\t%y1" : "ffreep\t%y0";
 | 
|---|
 | 530 |  #else
 | 
|---|
 | 531 |      {
 | 
|---|
 | 532 | -      static char retval[] = ".word\t0xc_df";
 | 
|---|
 | 533 | +      static char retval[32];
 | 
|---|
 | 534 |        int regno = REGNO (operands[opno]);
 | 
|---|
 | 535 |  
 | 
|---|
 | 536 |        gcc_assert (FP_REGNO_P (regno));
 | 
|---|
 | 537 |  
 | 
|---|
 | 538 | -      retval[9] = '0' + (regno - FIRST_STACK_REG);
 | 
|---|
 | 539 | +      regno -= FIRST_STACK_REG;
 | 
|---|
 | 540 | +
 | 
|---|
 | 541 | +      snprintf (retval, sizeof (retval), ASM_SHORT "0xc%ddf", regno);
 | 
|---|
 | 542 |        return retval;
 | 
|---|
 | 543 |      }
 | 
|---|
 | 544 |  #endif
 | 
|---|
 | 545 | @@ -16307,10 +16313,20 @@
 | 
|---|
 | 546 |    /* When emitting push, take care for source operands on the stack.  */
 | 
|---|
 | 547 |    if (push && MEM_P (operands[1])
 | 
|---|
 | 548 |        && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
 | 
|---|
 | 549 | -    for (i = 0; i < nparts - 1; i++)
 | 
|---|
 | 550 | -      part[1][i] = change_address (part[1][i],
 | 
|---|
 | 551 | -                                  GET_MODE (part[1][i]),
 | 
|---|
 | 552 | -                                  XEXP (part[1][i + 1], 0));
 | 
|---|
 | 553 | +    {
 | 
|---|
 | 554 | +      rtx src_base = XEXP (part[1][nparts - 1], 0);
 | 
|---|
 | 555 | +
 | 
|---|
 | 556 | +      /* Compensate for the stack decrement by 4.  */
 | 
|---|
 | 557 | +      if (!TARGET_64BIT && nparts == 3
 | 
|---|
 | 558 | +         && mode == XFmode && TARGET_128BIT_LONG_DOUBLE)
 | 
|---|
 | 559 | +       src_base = plus_constant (src_base, 4);
 | 
|---|
 | 560 | +
 | 
|---|
 | 561 | +      /* src_base refers to the stack pointer and is
 | 
|---|
 | 562 | +        automatically decreased by emitted push.  */
 | 
|---|
 | 563 | +      for (i = 0; i < nparts; i++)
 | 
|---|
 | 564 | +       part[1][i] = change_address (part[1][i],
 | 
|---|
 | 565 | +                                    GET_MODE (part[1][i]), src_base);
 | 
|---|
 | 566 | +    }
 | 
|---|
 | 567 |  
 | 
|---|
 | 568 |    /* We need to do copy in the right order in case an address register
 | 
|---|
 | 569 |       of the source overlaps the destination.  */
 | 
|---|
 | 570 | @@ -16380,7 +16396,8 @@
 | 
|---|
 | 571 |           if (nparts == 3)
 | 
|---|
 | 572 |             {
 | 
|---|
 | 573 |               if (TARGET_128BIT_LONG_DOUBLE && mode == XFmode)
 | 
|---|
 | 574 | -                emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, GEN_INT (-4)));
 | 
|---|
 | 575 | +                emit_insn (gen_addsi3 (stack_pointer_rtx,
 | 
|---|
 | 576 | +                                      stack_pointer_rtx, GEN_INT (-4)));
 | 
|---|
 | 577 |               emit_move_insn (part[0][2], part[1][2]);
 | 
|---|
 | 578 |             }
 | 
|---|
 | 579 |           else if (nparts == 4)
 | 
|---|
 | 580 | @@ -25306,7 +25323,7 @@
 | 
|---|
 | 581 |  static tree
 | 
|---|
 | 582 |  ix86_vectorize_builtin_conversion (unsigned int code, tree type)
 | 
|---|
 | 583 |  {
 | 
|---|
 | 584 | -  if (TREE_CODE (type) != VECTOR_TYPE
 | 
|---|
 | 585 | +  if (!TARGET_SSE2 || TREE_CODE (type) != VECTOR_TYPE
 | 
|---|
 | 586 |        /* There are only conversions from/to signed integers.  */
 | 
|---|
 | 587 |        || TYPE_UNSIGNED (TREE_TYPE (type)))
 | 
|---|
 | 588 |      return NULL_TREE;
 | 
|---|
 | 589 | diff -Naur gcc-4.4.1.orig/gcc/config/i386/i386.md gcc-4.4.1/gcc/config/i386/i386.md
 | 
|---|
 | 590 | --- gcc-4.4.1.orig/gcc/config/i386/i386.md      2009-07-08 09:59:15.000000000 -0700
 | 
|---|
 | 591 | +++ gcc-4.4.1/gcc/config/i386/i386.md   2009-08-23 05:47:57.000000000 -0700
 | 
|---|
 | 592 | @@ -14973,22 +14973,25 @@
 | 
|---|
 | 593 |          (match_operand:SI 1 "" ""))
 | 
|---|
 | 594 |     (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG)
 | 
|---|
 | 595 |                             (match_operand:SI 2 "immediate_operand" "i")))]
 | 
|---|
 | 596 | -  "!TARGET_64BIT"
 | 
|---|
 | 597 | +  "!SIBLING_CALL_P (insn) && !TARGET_64BIT"
 | 
|---|
 | 598 |  {
 | 
|---|
 | 599 |    if (constant_call_address_operand (operands[0], Pmode))
 | 
|---|
 | 600 | -    {
 | 
|---|
 | 601 | -      if (SIBLING_CALL_P (insn))
 | 
|---|
 | 602 | -       return "jmp\t%P0";
 | 
|---|
 | 603 | -      else
 | 
|---|
 | 604 | -       return "call\t%P0";
 | 
|---|
 | 605 | -    }
 | 
|---|
 | 606 | -  if (SIBLING_CALL_P (insn))
 | 
|---|
 | 607 | -    return "jmp\t%A0";
 | 
|---|
 | 608 | -  else
 | 
|---|
 | 609 | -    return "call\t%A0";
 | 
|---|
 | 610 | +    return "call\t%P0";
 | 
|---|
 | 611 | +  return "call\t%A0";
 | 
|---|
 | 612 |  }
 | 
|---|
 | 613 |    [(set_attr "type" "call")])
 | 
|---|
 | 614 |  
 | 
|---|
 | 615 | +(define_insn "*sibcall_pop_1"
 | 
|---|
 | 616 | +  [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "s,U"))
 | 
|---|
 | 617 | +        (match_operand:SI 1 "" ""))
 | 
|---|
 | 618 | +   (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG)
 | 
|---|
 | 619 | +                           (match_operand:SI 2 "immediate_operand" "i,i")))]
 | 
|---|
 | 620 | +  "SIBLING_CALL_P (insn) && !TARGET_64BIT"
 | 
|---|
 | 621 | +  "@
 | 
|---|
 | 622 | +   jmp\t%P0
 | 
|---|
 | 623 | +   jmp\t%A0"
 | 
|---|
 | 624 | +  [(set_attr "type" "call")])
 | 
|---|
 | 625 | +
 | 
|---|
 | 626 |  (define_expand "call"
 | 
|---|
 | 627 |    [(call (match_operand:QI 0 "" "")
 | 
|---|
 | 628 |          (match_operand 1 "" ""))
 | 
|---|
 | 629 | @@ -15920,7 +15923,7 @@
 | 
|---|
 | 630 |     (unspec:DI [(match_operand:DI 1 "tls_symbolic_operand" "")]
 | 
|---|
 | 631 |               UNSPEC_TLS_GD)]
 | 
|---|
 | 632 |    "TARGET_64BIT"
 | 
|---|
 | 633 | -  ".byte\t0x66\;lea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\;.word\t0x6666\;rex64\;call\t%P2"
 | 
|---|
 | 634 | +  { return ".byte\t0x66\n\tlea{q}\t{%a1@TLSGD(%%rip), %%rdi|rdi, %a1@TLSGD[rip]}\n" ASM_SHORT "0x6666\n\trex64\n\tcall\t%P2"; }
 | 
|---|
 | 635 |    [(set_attr "type" "multi")
 | 
|---|
 | 636 |     (set_attr "length" "16")])
 | 
|---|
 | 637 |  
 | 
|---|
 | 638 | @@ -21469,22 +21472,26 @@
 | 
|---|
 | 639 |               (match_operand:SI 2 "" "")))
 | 
|---|
 | 640 |     (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG)
 | 
|---|
 | 641 |                             (match_operand:SI 3 "immediate_operand" "i")))]
 | 
|---|
 | 642 | -  "!TARGET_64BIT"
 | 
|---|
 | 643 | +  "!SIBLING_CALL_P (insn) && !TARGET_64BIT"
 | 
|---|
 | 644 |  {
 | 
|---|
 | 645 |    if (constant_call_address_operand (operands[1], Pmode))
 | 
|---|
 | 646 | -    {
 | 
|---|
 | 647 | -      if (SIBLING_CALL_P (insn))
 | 
|---|
 | 648 | -       return "jmp\t%P1";
 | 
|---|
 | 649 | -      else
 | 
|---|
 | 650 | -       return "call\t%P1";
 | 
|---|
 | 651 | -    }
 | 
|---|
 | 652 | -  if (SIBLING_CALL_P (insn))
 | 
|---|
 | 653 | -    return "jmp\t%A1";
 | 
|---|
 | 654 | -  else
 | 
|---|
 | 655 | -    return "call\t%A1";
 | 
|---|
 | 656 | +    return "call\t%P1";
 | 
|---|
 | 657 | +  return "call\t%A1";
 | 
|---|
 | 658 |  }
 | 
|---|
 | 659 |    [(set_attr "type" "callv")])
 | 
|---|
 | 660 |  
 | 
|---|
 | 661 | +(define_insn "*sibcall_value_pop_1"
 | 
|---|
 | 662 | +  [(set (match_operand 0 "" "")
 | 
|---|
 | 663 | +       (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "s,U"))
 | 
|---|
 | 664 | +             (match_operand:SI 2 "" "")))
 | 
|---|
 | 665 | +   (set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG)
 | 
|---|
 | 666 | +                           (match_operand:SI 3 "immediate_operand" "i,i")))]
 | 
|---|
 | 667 | +  "SIBLING_CALL_P (insn) && !TARGET_64BIT"
 | 
|---|
 | 668 | +  "@
 | 
|---|
 | 669 | +   jmp\t%P1
 | 
|---|
 | 670 | +   jmp\t%A1"
 | 
|---|
 | 671 | +  [(set_attr "type" "callv")])
 | 
|---|
 | 672 | +
 | 
|---|
 | 673 |  (define_insn "*call_value_0"
 | 
|---|
 | 674 |    [(set (match_operand 0 "" "")
 | 
|---|
 | 675 |         (call (mem:QI (match_operand:SI 1 "constant_call_address_operand" ""))
 | 
|---|
 | 676 | diff -Naur gcc-4.4.1.orig/gcc/config/i386/netware.c gcc-4.4.1/gcc/config/i386/netware.c
 | 
|---|
 | 677 | --- gcc-4.4.1.orig/gcc/config/i386/netware.c    2008-07-01 23:43:45.000000000 -0700
 | 
|---|
 | 678 | +++ gcc-4.4.1/gcc/config/i386/netware.c 2009-08-28 08:40:31.000000000 -0700
 | 
|---|
 | 679 | @@ -30,6 +30,7 @@
 | 
|---|
 | 680 |  #include "flags.h"
 | 
|---|
 | 681 |  #include "tm_p.h"
 | 
|---|
 | 682 |  #include "toplev.h"
 | 
|---|
 | 683 | +#include "langhooks.h"
 | 
|---|
 | 684 |  #include "ggc.h"
 | 
|---|
 | 685 |  
 | 
|---|
 | 686 |  /* Return string which is the function name, identified by ID, modified
 | 
|---|
 | 687 | @@ -179,16 +180,15 @@
 | 
|---|
 | 688 |  {
 | 
|---|
 | 689 |    default_encode_section_info (decl, rtl, first);
 | 
|---|
 | 690 |  
 | 
|---|
 | 691 | -  if (first
 | 
|---|
 | 692 | -      && TREE_CODE (decl) == FUNCTION_DECL
 | 
|---|
 | 693 | +  if (TREE_CODE (decl) == FUNCTION_DECL
 | 
|---|
 | 694 |        /* Do not change the identifier if a verbatim asmspec
 | 
|---|
 | 695 |          or if stdcall suffix already added.  */
 | 
|---|
 | 696 |        && *IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)) != '*'
 | 
|---|
 | 697 | -      && !strchr (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), '@'))
 | 
|---|
 | 698 | +      && !strchr (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)), '@')
 | 
|---|
 | 699 | +      /* FIXME:  Imported stdcall names are not modified by the Ada frontend.
 | 
|---|
 | 700 | +        Check and decorate the RTL name now.  */
 | 
|---|
 | 701 | +      && strcmp (lang_hooks.name, "GNU Ada") == 0)
 | 
|---|
 | 702 |      {
 | 
|---|
 | 703 | -      /* FIXME: In Ada, and perhaps other language frontends,
 | 
|---|
 | 704 | -        imported stdcall names may not yet have been modified.
 | 
|---|
 | 705 | -        Check and do it know.  */
 | 
|---|
 | 706 |        rtx symbol = XEXP (rtl, 0);
 | 
|---|
 | 707 |        tree new_id;
 | 
|---|
 | 708 |        tree old_id = DECL_ASSEMBLER_NAME (decl);
 | 
|---|
 | 709 | @@ -196,14 +196,7 @@
 | 
|---|
 | 710 |        gcc_assert (GET_CODE (symbol) == SYMBOL_REF);
 | 
|---|
 | 711 |  
 | 
|---|
 | 712 |        if ((new_id = i386_nlm_maybe_mangle_decl_assembler_name (decl, old_id)))
 | 
|---|
 | 713 | -       {
 | 
|---|
 | 714 | -         /* These attributes must be present on first declaration,
 | 
|---|
 | 715 | -            change_decl_assembler_name will warn if they are added
 | 
|---|
 | 716 | -            later and the decl has been referenced, but duplicate_decls
 | 
|---|
 | 717 | -            should catch the mismatch first.  */
 | 
|---|
 | 718 | -         change_decl_assembler_name (decl, new_id);
 | 
|---|
 | 719 | -         XSTR (symbol, 0) = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
 | 
|---|
 | 720 | -       }
 | 
|---|
 | 721 | +       XSTR (symbol, 0) = IDENTIFIER_POINTER (new_id);
 | 
|---|
 | 722 |      }
 | 
|---|
 | 723 |  }
 | 
|---|
 | 724 |  
 | 
|---|
 | 725 | @@ -233,24 +226,3 @@
 | 
|---|
 | 726 |      }
 | 
|---|
 | 727 |    return name;
 | 
|---|
 | 728 |  }
 | 
|---|
 | 729 | -
 | 
|---|
 | 730 | -/* Sometimes certain combinations of command options do not make
 | 
|---|
 | 731 | -   sense on a particular target machine.  You can define a macro
 | 
|---|
 | 732 | -   `OVERRIDE_OPTIONS' to take account of this.  This macro, if
 | 
|---|
 | 733 | -   defined, is executed once just after all the command options have
 | 
|---|
 | 734 | -   been parsed.
 | 
|---|
 | 735 | -
 | 
|---|
 | 736 | -   Don't use this macro to turn on various extra optimizations for
 | 
|---|
 | 737 | -   `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.  */
 | 
|---|
 | 738 | -
 | 
|---|
 | 739 | -void
 | 
|---|
 | 740 | -netware_override_options (void)
 | 
|---|
 | 741 | -{
 | 
|---|
 | 742 | -  override_options ();
 | 
|---|
 | 743 | -
 | 
|---|
 | 744 | -  if (flag_pic)
 | 
|---|
 | 745 | -    {
 | 
|---|
 | 746 | -      error ("-fPIC and -fpic are not supported for this target");
 | 
|---|
 | 747 | -      flag_pic = 0;
 | 
|---|
 | 748 | -    }
 | 
|---|
 | 749 | -}
 | 
|---|
 | 750 | diff -Naur gcc-4.4.1.orig/gcc/config/i386/netware.h gcc-4.4.1/gcc/config/i386/netware.h
 | 
|---|
 | 751 | --- gcc-4.4.1.orig/gcc/config/i386/netware.h    2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 752 | +++ gcc-4.4.1/gcc/config/i386/netware.h 2009-08-28 08:40:31.000000000 -0700
 | 
|---|
 | 753 | @@ -72,17 +72,16 @@
 | 
|---|
 | 754 |  #define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | \
 | 
|---|
 | 755 |         MASK_FLOAT_RETURNS | MASK_ALIGN_DOUBLE | MASK_MS_BITFIELD_LAYOUT)
 | 
|---|
 | 756 |  
 | 
|---|
 | 757 | -/* Sometimes certain combinations of command options do not make
 | 
|---|
 | 758 | -   sense on a particular target machine.  You can define a macro
 | 
|---|
 | 759 | -   `OVERRIDE_OPTIONS' to take account of this.  This macro, if
 | 
|---|
 | 760 | -   defined, is executed once just after all the command options have
 | 
|---|
 | 761 | -   been parsed.
 | 
|---|
 | 762 | -
 | 
|---|
 | 763 | -   Don't use this macro to turn on various extra optimizations for
 | 
|---|
 | 764 | -   `-O'.  That is what `OPTIMIZATION_OPTIONS' is for.  */
 | 
|---|
 | 765 | -#undef  OVERRIDE_OPTIONS
 | 
|---|
 | 766 | -extern void netware_override_options (void);
 | 
|---|
 | 767 | -#define OVERRIDE_OPTIONS netware_override_options ()
 | 
|---|
 | 768 | +/* Don't allow flag_pic to propagate since invalid relocations will
 | 
|---|
 | 769 | +   result otherwise.  */
 | 
|---|
 | 770 | +#define SUBTARGET_OVERRIDE_OPTIONS                                     \
 | 
|---|
 | 771 | +do {                                                                   \
 | 
|---|
 | 772 | +  if (flag_pic)                                                                \
 | 
|---|
 | 773 | +    {                                                                  \
 | 
|---|
 | 774 | +      error ("-fPIC and -fpic are not supported for this target");     \
 | 
|---|
 | 775 | +      flag_pic = 0;                                                    \
 | 
|---|
 | 776 | +    }                                                                  \
 | 
|---|
 | 777 | +} while (0)
 | 
|---|
 | 778 |  
 | 
|---|
 | 779 |  #undef MATH_LIBRARY
 | 
|---|
 | 780 |  #define MATH_LIBRARY ""
 | 
|---|
 | 781 | @@ -99,6 +98,9 @@
 | 
|---|
 | 782 |  #undef KEEP_AGGREGATE_RETURN_POINTER
 | 
|---|
 | 783 |  #define KEEP_AGGREGATE_RETURN_POINTER 1
 | 
|---|
 | 784 |  
 | 
|---|
 | 785 | +#undef ASM_COMMENT_START
 | 
|---|
 | 786 | +#define ASM_COMMENT_START "#"
 | 
|---|
 | 787 | +
 | 
|---|
 | 788 |  #undef DBX_REGISTER_NUMBER
 | 
|---|
 | 789 |  #define DBX_REGISTER_NUMBER(n) (svr4_dbx_register_map[n])
 | 
|---|
 | 790 |  
 | 
|---|
 | 791 | diff -Naur gcc-4.4.1.orig/gcc/config/i386/nwld.h gcc-4.4.1/gcc/config/i386/nwld.h
 | 
|---|
 | 792 | --- gcc-4.4.1.orig/gcc/config/i386/nwld.h       2007-08-02 03:49:31.000000000 -0700
 | 
|---|
 | 793 | +++ gcc-4.4.1/gcc/config/i386/nwld.h    2009-08-28 08:40:31.000000000 -0700
 | 
|---|
 | 794 | @@ -55,6 +55,13 @@
 | 
|---|
 | 795 |  #define TARGET_ASM_CONSTRUCTOR nwld_named_section_asm_out_constructor
 | 
|---|
 | 796 |  #define TARGET_ASM_DESTRUCTOR  nwld_named_section_asm_out_destructor
 | 
|---|
 | 797 |  
 | 
|---|
 | 798 | +#define SUBSUBTARGET_OVERRIDE_OPTIONS                                  \
 | 
|---|
 | 799 | +do {                                                                   \
 | 
|---|
 | 800 | +  /* XXX This can be enabled once gas output meets nwld's needs. */    \
 | 
|---|
 | 801 | +  /* if (!flag_unwind_tables && !flag_exceptions) */                   \
 | 
|---|
 | 802 | +    flag_dwarf2_cfi_asm = 0;                                           \
 | 
|---|
 | 803 | +} while (0)
 | 
|---|
 | 804 | +
 | 
|---|
 | 805 |  #undef  EH_FRAME_SECTION_NAME
 | 
|---|
 | 806 |  #define EH_FRAME_SECTION_NAME ".eh_frame"TARGET_SUB_SECTION_SEPARATOR
 | 
|---|
 | 807 |  
 | 
|---|
 | 808 | diff -Naur gcc-4.4.1.orig/gcc/config/i386/sse.md gcc-4.4.1/gcc/config/i386/sse.md
 | 
|---|
 | 809 | --- gcc-4.4.1.orig/gcc/config/i386/sse.md       2009-05-06 06:20:41.000000000 -0700
 | 
|---|
 | 810 | +++ gcc-4.4.1/gcc/config/i386/sse.md    2009-08-16 12:34:49.000000000 -0700
 | 
|---|
 | 811 | @@ -64,6 +64,10 @@
 | 
|---|
 | 812 |  (define_mode_iterator SSEMODE4S [V4SF V4SI])
 | 
|---|
 | 813 |  (define_mode_iterator SSEMODE2D [V2DF V2DI])
 | 
|---|
 | 814 |  
 | 
|---|
 | 815 | +;; Modes handled by integer vcond pattern
 | 
|---|
 | 816 | +(define_mode_iterator SSEMODE124C8 [V16QI V8HI V4SI
 | 
|---|
 | 817 | +                                   (V2DI "TARGET_SSE4_2 || TARGET_SSE5")])
 | 
|---|
 | 818 | +
 | 
|---|
 | 819 |  ;; Mapping from float mode to required SSE level
 | 
|---|
 | 820 |  (define_mode_attr sse [(SF "sse") (DF "sse2") (V4SF "sse") (V2DF "sse2")])
 | 
|---|
 | 821 |  
 | 
|---|
 | 822 | @@ -1493,10 +1497,9 @@
 | 
|---|
 | 823 |            (match_operand:SSEMODEF2P 2 "general_operand" "")))]
 | 
|---|
 | 824 |    "SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
 | 
|---|
 | 825 |  {
 | 
|---|
 | 826 | -  if (ix86_expand_fp_vcond (operands))
 | 
|---|
 | 827 | -    DONE;
 | 
|---|
 | 828 | -  else
 | 
|---|
 | 829 | -    FAIL;
 | 
|---|
 | 830 | +  bool ok = ix86_expand_fp_vcond (operands);
 | 
|---|
 | 831 | +  gcc_assert (ok);
 | 
|---|
 | 832 | +  DONE;
 | 
|---|
 | 833 |  })
 | 
|---|
 | 834 |  
 | 
|---|
 | 835 |  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
|---|
 | 836 | @@ -5837,35 +5840,33 @@
 | 
|---|
 | 837 |     (set_attr "mode" "TI")])
 | 
|---|
 | 838 |  
 | 
|---|
 | 839 |  (define_expand "vcond<mode>"
 | 
|---|
 | 840 | -  [(set (match_operand:SSEMODEI 0 "register_operand" "")
 | 
|---|
 | 841 | -        (if_then_else:SSEMODEI
 | 
|---|
 | 842 | +  [(set (match_operand:SSEMODE124C8 0 "register_operand" "")
 | 
|---|
 | 843 | +        (if_then_else:SSEMODE124C8
 | 
|---|
 | 844 |            (match_operator 3 ""
 | 
|---|
 | 845 | -            [(match_operand:SSEMODEI 4 "nonimmediate_operand" "")
 | 
|---|
 | 846 | -             (match_operand:SSEMODEI 5 "nonimmediate_operand" "")])
 | 
|---|
 | 847 | -          (match_operand:SSEMODEI 1 "general_operand" "")
 | 
|---|
 | 848 | -          (match_operand:SSEMODEI 2 "general_operand" "")))]
 | 
|---|
 | 849 | +            [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "")
 | 
|---|
 | 850 | +             (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")])
 | 
|---|
 | 851 | +          (match_operand:SSEMODE124C8 1 "general_operand" "")
 | 
|---|
 | 852 | +          (match_operand:SSEMODE124C8 2 "general_operand" "")))]
 | 
|---|
 | 853 |    "TARGET_SSE2"
 | 
|---|
 | 854 |  {
 | 
|---|
 | 855 | -  if (ix86_expand_int_vcond (operands))
 | 
|---|
 | 856 | -    DONE;
 | 
|---|
 | 857 | -  else
 | 
|---|
 | 858 | -    FAIL;
 | 
|---|
 | 859 | +  bool ok = ix86_expand_int_vcond (operands);
 | 
|---|
 | 860 | +  gcc_assert (ok);
 | 
|---|
 | 861 | +  DONE;
 | 
|---|
 | 862 |  })
 | 
|---|
 | 863 |  
 | 
|---|
 | 864 |  (define_expand "vcondu<mode>"
 | 
|---|
 | 865 | -  [(set (match_operand:SSEMODEI 0 "register_operand" "")
 | 
|---|
 | 866 | -        (if_then_else:SSEMODEI
 | 
|---|
 | 867 | +  [(set (match_operand:SSEMODE124C8 0 "register_operand" "")
 | 
|---|
 | 868 | +        (if_then_else:SSEMODE124C8
 | 
|---|
 | 869 |            (match_operator 3 ""
 | 
|---|
 | 870 | -            [(match_operand:SSEMODEI 4 "nonimmediate_operand" "")
 | 
|---|
 | 871 | -             (match_operand:SSEMODEI 5 "nonimmediate_operand" "")])
 | 
|---|
 | 872 | -          (match_operand:SSEMODEI 1 "general_operand" "")
 | 
|---|
 | 873 | -          (match_operand:SSEMODEI 2 "general_operand" "")))]
 | 
|---|
 | 874 | +            [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "")
 | 
|---|
 | 875 | +             (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")])
 | 
|---|
 | 876 | +          (match_operand:SSEMODE124C8 1 "general_operand" "")
 | 
|---|
 | 877 | +          (match_operand:SSEMODE124C8 2 "general_operand" "")))]
 | 
|---|
 | 878 |    "TARGET_SSE2"
 | 
|---|
 | 879 |  {
 | 
|---|
 | 880 | -  if (ix86_expand_int_vcond (operands))
 | 
|---|
 | 881 | -    DONE;
 | 
|---|
 | 882 | -  else
 | 
|---|
 | 883 | -    FAIL;
 | 
|---|
 | 884 | +  bool ok = ix86_expand_int_vcond (operands);
 | 
|---|
 | 885 | +  gcc_assert (ok);
 | 
|---|
 | 886 | +  DONE;
 | 
|---|
 | 887 |  })
 | 
|---|
 | 888 |  
 | 
|---|
 | 889 |  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
|---|
 | 890 | diff -Naur gcc-4.4.1.orig/gcc/config/pa/pa.c gcc-4.4.1/gcc/config/pa/pa.c
 | 
|---|
 | 891 | --- gcc-4.4.1.orig/gcc/config/pa/pa.c   2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 892 | +++ gcc-4.4.1/gcc/config/pa/pa.c        2009-07-27 08:26:05.000000000 -0700
 | 
|---|
 | 893 | @@ -2217,9 +2217,9 @@
 | 
|---|
 | 894 |    else
 | 
|---|
 | 895 |      {
 | 
|---|
 | 896 |        /* Find the width of the bitstring in IMM.  */
 | 
|---|
 | 897 | -      for (len = 5; len < 32; len++)
 | 
|---|
 | 898 | +      for (len = 5; len < 32 - lsb; len++)
 | 
|---|
 | 899 |         {
 | 
|---|
 | 900 | -         if ((imm & (1 << len)) == 0)
 | 
|---|
 | 901 | +         if ((imm & ((unsigned HOST_WIDE_INT) 1 << len)) == 0)
 | 
|---|
 | 902 |             break;
 | 
|---|
 | 903 |         }
 | 
|---|
 | 904 |  
 | 
|---|
 | 905 | @@ -2238,10 +2238,12 @@
 | 
|---|
 | 906 |  void
 | 
|---|
 | 907 |  compute_zdepdi_operands (unsigned HOST_WIDE_INT imm, unsigned *op)
 | 
|---|
 | 908 |  {
 | 
|---|
 | 909 | -  HOST_WIDE_INT lsb, len;
 | 
|---|
 | 910 | +  int lsb, len, maxlen;
 | 
|---|
 | 911 | +
 | 
|---|
 | 912 | +  maxlen = MIN (HOST_BITS_PER_WIDE_INT, 64);
 | 
|---|
 | 913 |  
 | 
|---|
 | 914 |    /* Find the least significant set bit in IMM.  */
 | 
|---|
 | 915 | -  for (lsb = 0; lsb < HOST_BITS_PER_WIDE_INT; lsb++)
 | 
|---|
 | 916 | +  for (lsb = 0; lsb < maxlen; lsb++)
 | 
|---|
 | 917 |      {
 | 
|---|
 | 918 |        if ((imm & 1) != 0)
 | 
|---|
 | 919 |          break;
 | 
|---|
 | 920 | @@ -2250,17 +2252,20 @@
 | 
|---|
 | 921 |  
 | 
|---|
 | 922 |    /* Choose variants based on *sign* of the 5-bit field.  */
 | 
|---|
 | 923 |    if ((imm & 0x10) == 0)
 | 
|---|
 | 924 | -    len = ((lsb <= HOST_BITS_PER_WIDE_INT - 4)
 | 
|---|
 | 925 | -          ? 4 : HOST_BITS_PER_WIDE_INT - lsb);
 | 
|---|
 | 926 | +    len = (lsb <= maxlen - 4) ? 4 : maxlen - lsb;
 | 
|---|
 | 927 |    else
 | 
|---|
 | 928 |      {
 | 
|---|
 | 929 |        /* Find the width of the bitstring in IMM.  */
 | 
|---|
 | 930 | -      for (len = 5; len < HOST_BITS_PER_WIDE_INT; len++)
 | 
|---|
 | 931 | +      for (len = 5; len < maxlen - lsb; len++)
 | 
|---|
 | 932 |         {
 | 
|---|
 | 933 |           if ((imm & ((unsigned HOST_WIDE_INT) 1 << len)) == 0)
 | 
|---|
 | 934 |             break;
 | 
|---|
 | 935 |         }
 | 
|---|
 | 936 |  
 | 
|---|
 | 937 | +      /* Extend length if host is narrow and IMM is negative.  */
 | 
|---|
 | 938 | +      if (HOST_BITS_PER_WIDE_INT == 32 && len == maxlen - lsb)
 | 
|---|
 | 939 | +       len += 32;
 | 
|---|
 | 940 | +
 | 
|---|
 | 941 |        /* Sign extend IMM as a 5-bit value.  */
 | 
|---|
 | 942 |        imm = (imm & 0xf) - 0x10;
 | 
|---|
 | 943 |      }
 | 
|---|
 | 944 | diff -Naur gcc-4.4.1.orig/gcc/config/rs6000/freebsd.h gcc-4.4.1/gcc/config/rs6000/freebsd.h
 | 
|---|
 | 945 | --- gcc-4.4.1.orig/gcc/config/rs6000/freebsd.h  2007-08-02 03:49:31.000000000 -0700
 | 
|---|
 | 946 | +++ gcc-4.4.1/gcc/config/rs6000/freebsd.h       2009-08-10 11:22:22.000000000 -0700
 | 
|---|
 | 947 | @@ -1,5 +1,5 @@
 | 
|---|
 | 948 |  /* Definitions for PowerPC running FreeBSD using the ELF format
 | 
|---|
 | 949 | -   Copyright (C) 2001, 2003, 2007 Free Software Foundation, Inc.
 | 
|---|
 | 950 | +   Copyright (C) 2001, 2003, 2007, 2009 Free Software Foundation, Inc.
 | 
|---|
 | 951 |     Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
 | 
|---|
 | 952 |  
 | 
|---|
 | 953 |     This file is part of GCC.
 | 
|---|
 | 954 | @@ -69,3 +69,6 @@
 | 
|---|
 | 955 |  /* Override rs6000.h definition.  */
 | 
|---|
 | 956 |  #undef  ASM_APP_OFF
 | 
|---|
 | 957 |  #define ASM_APP_OFF "#NO_APP\n"
 | 
|---|
 | 958 | +/* Define SVR4_ASM_SPEC, we use GAS by default. See svr4.h for details.  */
 | 
|---|
 | 959 | +#define SVR4_ASM_SPEC \
 | 
|---|
 | 960 | +  "%{v:-V} %{Wa,*:%*}"
 | 
|---|
 | 961 | diff -Naur gcc-4.4.1.orig/gcc/config/rs6000/rs6000.c gcc-4.4.1/gcc/config/rs6000/rs6000.c
 | 
|---|
 | 962 | --- gcc-4.4.1.orig/gcc/config/rs6000/rs6000.c   2009-03-17 13:18:21.000000000 -0700
 | 
|---|
 | 963 | +++ gcc-4.4.1/gcc/config/rs6000/rs6000.c        2009-08-18 04:43:16.000000000 -0700
 | 
|---|
 | 964 | @@ -3808,6 +3808,8 @@
 | 
|---|
 | 965 |  rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
 | 
|---|
 | 966 |                            enum machine_mode mode)
 | 
|---|
 | 967 |  {
 | 
|---|
 | 968 | +  unsigned int extra = 0;
 | 
|---|
 | 969 | +
 | 
|---|
 | 970 |    if (GET_CODE (x) == SYMBOL_REF)
 | 
|---|
 | 971 |      {
 | 
|---|
 | 972 |        enum tls_model model = SYMBOL_REF_TLS_MODEL (x);
 | 
|---|
 | 973 | @@ -3815,10 +3817,32 @@
 | 
|---|
 | 974 |         return rs6000_legitimize_tls_address (x, model);
 | 
|---|
 | 975 |      }
 | 
|---|
 | 976 |  
 | 
|---|
 | 977 | +  switch (mode)
 | 
|---|
 | 978 | +    {
 | 
|---|
 | 979 | +    case DFmode:
 | 
|---|
 | 980 | +    case DDmode:
 | 
|---|
 | 981 | +      extra = 4;
 | 
|---|
 | 982 | +      break;
 | 
|---|
 | 983 | +    case DImode:
 | 
|---|
 | 984 | +      if (!TARGET_POWERPC64)
 | 
|---|
 | 985 | +       extra = 4;
 | 
|---|
 | 986 | +      break;
 | 
|---|
 | 987 | +    case TFmode:
 | 
|---|
 | 988 | +    case TDmode:
 | 
|---|
 | 989 | +      extra = 12;
 | 
|---|
 | 990 | +      break;
 | 
|---|
 | 991 | +    case TImode:
 | 
|---|
 | 992 | +      extra = TARGET_POWERPC64 ? 8 : 12;
 | 
|---|
 | 993 | +      break;
 | 
|---|
 | 994 | +    default:
 | 
|---|
 | 995 | +      break;
 | 
|---|
 | 996 | +    }
 | 
|---|
 | 997 | +
 | 
|---|
 | 998 |    if (GET_CODE (x) == PLUS
 | 
|---|
 | 999 |        && GET_CODE (XEXP (x, 0)) == REG
 | 
|---|
 | 1000 |        && GET_CODE (XEXP (x, 1)) == CONST_INT
 | 
|---|
 | 1001 | -      && (unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000) >= 0x10000
 | 
|---|
 | 1002 | +      && ((unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000)
 | 
|---|
 | 1003 | +         >= 0x10000 - extra)
 | 
|---|
 | 1004 |        && !((TARGET_POWERPC64
 | 
|---|
 | 1005 |             && (mode == DImode || mode == TImode)
 | 
|---|
 | 1006 |             && (INTVAL (XEXP (x, 1)) & 3) != 0)
 | 
|---|
 | 1007 | @@ -3831,10 +3855,12 @@
 | 
|---|
 | 1008 |        HOST_WIDE_INT high_int, low_int;
 | 
|---|
 | 1009 |        rtx sum;
 | 
|---|
 | 1010 |        low_int = ((INTVAL (XEXP (x, 1)) & 0xffff) ^ 0x8000) - 0x8000;
 | 
|---|
 | 1011 | +      if (low_int >= 0x8000 - extra)
 | 
|---|
 | 1012 | +       low_int = 0;
 | 
|---|
 | 1013 |        high_int = INTVAL (XEXP (x, 1)) - low_int;
 | 
|---|
 | 1014 |        sum = force_operand (gen_rtx_PLUS (Pmode, XEXP (x, 0),
 | 
|---|
 | 1015 |                                          GEN_INT (high_int)), 0);
 | 
|---|
 | 1016 | -      return gen_rtx_PLUS (Pmode, sum, GEN_INT (low_int));
 | 
|---|
 | 1017 | +      return plus_constant (sum, low_int);
 | 
|---|
 | 1018 |      }
 | 
|---|
 | 1019 |    else if (GET_CODE (x) == PLUS
 | 
|---|
 | 1020 |            && GET_CODE (XEXP (x, 0)) == REG
 | 
|---|
 | 1021 | diff -Naur gcc-4.4.1.orig/gcc/config/s390/2084.md gcc-4.4.1/gcc/config/s390/2084.md
 | 
|---|
 | 1022 | --- gcc-4.4.1.orig/gcc/config/s390/2084.md      2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 1023 | +++ gcc-4.4.1/gcc/config/s390/2084.md   2009-09-04 03:05:45.000000000 -0700
 | 
|---|
 | 1024 | @@ -163,17 +163,17 @@
 | 
|---|
 | 1025 |  
 | 
|---|
 | 1026 |  (define_insn_reservation "x_fsimptf" 7 
 | 
|---|
 | 1027 |    (and (eq_attr "cpu" "z990,z9_109")
 | 
|---|
 | 1028 | -       (eq_attr "type" "fsimptf"))
 | 
|---|
 | 1029 | +       (eq_attr "type" "fsimptf,fhex"))
 | 
|---|
 | 1030 |    "x_e1_t*2,x-wr-fp") 
 | 
|---|
 | 1031 |  
 | 
|---|
 | 1032 |  (define_insn_reservation "x_fsimpdf" 6 
 | 
|---|
 | 1033 |    (and (eq_attr "cpu" "z990,z9_109")
 | 
|---|
 | 1034 | -       (eq_attr "type" "fsimpdf,fmuldf"))
 | 
|---|
 | 1035 | +       (eq_attr "type" "fsimpdf,fmuldf,fhex"))
 | 
|---|
 | 1036 |    "x_e1_t,x-wr-fp") 
 | 
|---|
 | 1037 |  
 | 
|---|
 | 1038 |  (define_insn_reservation "x_fsimpsf" 6 
 | 
|---|
 | 1039 |    (and (eq_attr "cpu" "z990,z9_109")
 | 
|---|
 | 1040 | -       (eq_attr "type" "fsimpsf,fmulsf"))
 | 
|---|
 | 1041 | +       (eq_attr "type" "fsimpsf,fmulsf,fhex"))
 | 
|---|
 | 1042 |    "x_e1_t,x-wr-fp") 
 | 
|---|
 | 1043 |  
 | 
|---|
 | 1044 |  
 | 
|---|
 | 1045 | diff -Naur gcc-4.4.1.orig/gcc/config/s390/2097.md gcc-4.4.1/gcc/config/s390/2097.md
 | 
|---|
 | 1046 | --- gcc-4.4.1.orig/gcc/config/s390/2097.md      2008-08-15 00:36:40.000000000 -0700
 | 
|---|
 | 1047 | +++ gcc-4.4.1/gcc/config/s390/2097.md   2009-09-04 03:05:45.000000000 -0700
 | 
|---|
 | 1048 | @@ -463,29 +463,34 @@
 | 
|---|
 | 1049 |  
 | 
|---|
 | 1050 |  ; BFP multiplication and general instructions
 | 
|---|
 | 1051 |  
 | 
|---|
 | 1052 | -(define_insn_reservation "z10_fsimpdf" 12
 | 
|---|
 | 1053 | +(define_insn_reservation "z10_fsimpdf" 6
 | 
|---|
 | 1054 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1055 |         (eq_attr "type" "fsimpdf,fmuldf"))
 | 
|---|
 | 1056 |    "z10_e1_BOTH, z10_Gate_FP")
 | 
|---|
 | 1057 | -; Wg "z10_e1_T, z10_Gate_FP")
 | 
|---|
 | 1058 |  
 | 
|---|
 | 1059 | -(define_insn_reservation "z10_fsimpsf" 12
 | 
|---|
 | 1060 | +; LOAD ZERO produces a hex value but we need bin. Using the stage 7
 | 
|---|
 | 1061 | +; bypass causes an exception for format conversion which is very
 | 
|---|
 | 1062 | +; expensive. So, make sure subsequent instructions only get the zero
 | 
|---|
 | 1063 | +; in the normal way.
 | 
|---|
 | 1064 | +(define_insn_reservation "z10_fhex" 12
 | 
|---|
 | 1065 | +  (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1066 | +       (eq_attr "type" "fhex"))
 | 
|---|
 | 1067 | +  "z10_e1_BOTH, z10_Gate_FP")
 | 
|---|
 | 1068 | +
 | 
|---|
 | 1069 | +(define_insn_reservation "z10_fsimpsf" 6
 | 
|---|
 | 1070 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1071 |         (eq_attr "type" "fsimpsf,fmulsf"))
 | 
|---|
 | 1072 |    "z10_e1_BOTH, z10_Gate_FP")
 | 
|---|
 | 1073 | -; Wg "z10_e1_T, z10_Gate_FP")
 | 
|---|
 | 1074 |  
 | 
|---|
 | 1075 |  (define_insn_reservation "z10_fmultf" 52
 | 
|---|
 | 1076 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1077 |         (eq_attr "type" "fmultf"))
 | 
|---|
 | 1078 |    "z10_e1_BOTH*4, z10_Gate_FP")
 | 
|---|
 | 1079 | -; Wg  "z10_e1_T*4, z10_Gate_FP")
 | 
|---|
 | 1080 |  
 | 
|---|
 | 1081 |  (define_insn_reservation "z10_fsimptf" 14
 | 
|---|
 | 1082 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1083 |         (eq_attr "type" "fsimptf"))
 | 
|---|
 | 1084 |    "z10_e1_BOTH*2, z10_Gate_FP")
 | 
|---|
 | 1085 | -; Wg  "z10_e1_T*2, z10_Gate_FP")
 | 
|---|
 | 1086 |  
 | 
|---|
 | 1087 |  
 | 
|---|
 | 1088 |  ; BFP division
 | 
|---|
 | 1089 | @@ -531,12 +536,12 @@
 | 
|---|
 | 1090 |         (eq_attr "type" "floadtf"))
 | 
|---|
 | 1091 |    "z10_e1_T, z10_Gate_FP")
 | 
|---|
 | 1092 |  
 | 
|---|
 | 1093 | -(define_insn_reservation "z10_floaddf" 12
 | 
|---|
 | 1094 | +(define_insn_reservation "z10_floaddf" 1
 | 
|---|
 | 1095 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1096 |         (eq_attr "type" "floaddf"))
 | 
|---|
 | 1097 |    "z10_e1_T, z10_Gate_FP")
 | 
|---|
 | 1098 |  
 | 
|---|
 | 1099 | -(define_insn_reservation "z10_floadsf" 12
 | 
|---|
 | 1100 | +(define_insn_reservation "z10_floadsf" 1
 | 
|---|
 | 1101 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1102 |         (eq_attr "type" "floadsf"))
 | 
|---|
 | 1103 |    "z10_e1_T, z10_Gate_FP")
 | 
|---|
 | 1104 | @@ -553,12 +558,12 @@
 | 
|---|
 | 1105 |  
 | 
|---|
 | 1106 |  
 | 
|---|
 | 1107 |  ; BFP truncate
 | 
|---|
 | 1108 | -(define_insn_reservation "z10_ftrunctf" 12
 | 
|---|
 | 1109 | +(define_insn_reservation "z10_ftrunctf" 16
 | 
|---|
 | 1110 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1111 |         (eq_attr "type" "ftrunctf"))
 | 
|---|
 | 1112 |    "z10_e1_T, z10_Gate_FP")
 | 
|---|
 | 1113 |  
 | 
|---|
 | 1114 | -(define_insn_reservation "z10_ftruncdf" 16
 | 
|---|
 | 1115 | +(define_insn_reservation "z10_ftruncdf" 12
 | 
|---|
 | 1116 |    (and (eq_attr "cpu" "z10")
 | 
|---|
 | 1117 |         (eq_attr "type" "ftruncdf"))
 | 
|---|
 | 1118 |    "z10_e1_T, z10_Gate_FP")
 | 
|---|
 | 1119 | @@ -585,8 +590,8 @@
 | 
|---|
 | 1120 |  ; BFP-related bypasses.  There is no bypass for extended mode.
 | 
|---|
 | 1121 |  (define_bypass 1 "z10_fsimpdf" "z10_fstoredf")
 | 
|---|
 | 1122 |  (define_bypass 1 "z10_fsimpsf" "z10_fstoresf")
 | 
|---|
 | 1123 | -(define_bypass 1 "z10_floaddf" "z10_fsimpdf, z10_fstoredf, z10_floaddf")
 | 
|---|
 | 1124 | -(define_bypass 1 "z10_floadsf" "z10_fsimpsf, z10_fstoresf, z10_floadsf")
 | 
|---|
 | 1125 | +(define_bypass 1 "z10_floaddf" "z10_fsimpdf, z10_fstoredf")
 | 
|---|
 | 1126 | +(define_bypass 1 "z10_floadsf" "z10_fsimpsf, z10_fstoresf")
 | 
|---|
 | 1127 |  
 | 
|---|
 | 1128 |  
 | 
|---|
 | 1129 |  ;
 | 
|---|
 | 1130 | diff -Naur gcc-4.4.1.orig/gcc/config/s390/constraints.md gcc-4.4.1/gcc/config/s390/constraints.md
 | 
|---|
 | 1131 | --- gcc-4.4.1.orig/gcc/config/s390/constraints.md       2009-04-24 07:51:17.000000000 -0700
 | 
|---|
 | 1132 | +++ gcc-4.4.1/gcc/config/s390/constraints.md    2009-07-30 05:32:19.000000000 -0700
 | 
|---|
 | 1133 | @@ -66,9 +66,14 @@
 | 
|---|
 | 1134 |  ;;    B -- Multiple letter constraint followed by Q, R, S, or T:
 | 
|---|
 | 1135 |  ;;         Memory reference of the type specified by second letter that
 | 
|---|
 | 1136 |  ;;         does *not* refer to a literal pool entry.
 | 
|---|
 | 1137 | -;;    U -- Pointer with short displacement.
 | 
|---|
 | 1138 | -;;    W -- Pointer with long displacement.
 | 
|---|
 | 1139 | +;;    U -- Pointer with short displacement. (deprecated - use ZQZR)
 | 
|---|
 | 1140 | +;;    W -- Pointer with long displacement. (deprecated - use ZSZT)
 | 
|---|
 | 1141 |  ;;    Y -- Shift count operand.
 | 
|---|
 | 1142 | +;;    ZQ -- Pointer without index register and with short displacement.
 | 
|---|
 | 1143 | +;;    ZR -- Pointer with index register and short displacement.
 | 
|---|
 | 1144 | +;;    ZS -- Pointer without index register but with long displacement.
 | 
|---|
 | 1145 | +;;    ZT -- Pointer with index register and long displacement.
 | 
|---|
 | 1146 | +;;
 | 
|---|
 | 1147 |  ;;
 | 
|---|
 | 1148 |  
 | 
|---|
 | 1149 |  
 | 
|---|
 | 1150 | @@ -462,11 +467,26 @@
 | 
|---|
 | 1151 |  
 | 
|---|
 | 1152 |  
 | 
|---|
 | 1153 |  (define_address_constraint "U"
 | 
|---|
 | 1154 | -  "Pointer with short displacement"
 | 
|---|
 | 1155 | +  "Pointer with short displacement. (deprecated - use ZQZR)"
 | 
|---|
 | 1156 |    (match_test "s390_mem_constraint (\"U\", op)"))
 | 
|---|
 | 1157 |  
 | 
|---|
 | 1158 | -
 | 
|---|
 | 1159 | -
 | 
|---|
 | 1160 |  (define_address_constraint "W"
 | 
|---|
 | 1161 | -  "Pointer with long displacement"
 | 
|---|
 | 1162 | +  "Pointer with long displacement. (deprecated - use ZSZT)"
 | 
|---|
 | 1163 |    (match_test "s390_mem_constraint (\"W\", op)"))
 | 
|---|
 | 1164 | +
 | 
|---|
 | 1165 | +
 | 
|---|
 | 1166 | +(define_address_constraint "ZQ"
 | 
|---|
 | 1167 | +  "Pointer without index register and with short displacement."
 | 
|---|
 | 1168 | +  (match_test "s390_mem_constraint (\"ZQ\", op)"))
 | 
|---|
 | 1169 | +
 | 
|---|
 | 1170 | +(define_address_constraint "ZR"
 | 
|---|
 | 1171 | +  "Pointer with index register and short displacement."
 | 
|---|
 | 1172 | +  (match_test "s390_mem_constraint (\"ZR\", op)"))
 | 
|---|
 | 1173 | +
 | 
|---|
 | 1174 | +(define_address_constraint "ZS"
 | 
|---|
 | 1175 | +  "Pointer without index register but with long displacement."
 | 
|---|
 | 1176 | +  (match_test "s390_mem_constraint (\"ZS\", op)"))
 | 
|---|
 | 1177 | +
 | 
|---|
 | 1178 | +(define_address_constraint "ZT"
 | 
|---|
 | 1179 | +  "Pointer with index register and long displacement."
 | 
|---|
 | 1180 | +  (match_test "s390_mem_constraint (\"ZT\", op)"))
 | 
|---|
 | 1181 | diff -Naur gcc-4.4.1.orig/gcc/config/s390/s390.c gcc-4.4.1/gcc/config/s390/s390.c
 | 
|---|
 | 1182 | --- gcc-4.4.1.orig/gcc/config/s390/s390.c       2009-02-27 06:56:19.000000000 -0800
 | 
|---|
 | 1183 | +++ gcc-4.4.1/gcc/config/s390/s390.c    2009-09-04 03:05:45.000000000 -0700
 | 
|---|
 | 1184 | @@ -52,6 +52,7 @@
 | 
|---|
 | 1185 |  #include "optabs.h"
 | 
|---|
 | 1186 |  #include "gimple.h"
 | 
|---|
 | 1187 |  #include "df.h"
 | 
|---|
 | 1188 | +#include "params.h"
 | 
|---|
 | 1189 |  
 | 
|---|
 | 1190 |  
 | 
|---|
 | 1191 |  /* Define the specific costs for a given cpu.  */
 | 
|---|
 | 1192 | @@ -204,13 +205,13 @@
 | 
|---|
 | 1193 |    COSTS_N_INSNS (10),    /* MSGFR */
 | 
|---|
 | 1194 |    COSTS_N_INSNS (10),    /* MSGR  */
 | 
|---|
 | 1195 |    COSTS_N_INSNS (10),    /* MSR   */
 | 
|---|
 | 1196 | -  COSTS_N_INSNS (10),    /* multiplication in DFmode */
 | 
|---|
 | 1197 | +  COSTS_N_INSNS (1) ,    /* multiplication in DFmode */
 | 
|---|
 | 1198 |    COSTS_N_INSNS (50),    /* MXBR */
 | 
|---|
 | 1199 |    COSTS_N_INSNS (120),   /* SQXBR */
 | 
|---|
 | 1200 |    COSTS_N_INSNS (52),    /* SQDBR */
 | 
|---|
 | 1201 |    COSTS_N_INSNS (38),    /* SQEBR */
 | 
|---|
 | 1202 | -  COSTS_N_INSNS (10),    /* MADBR */
 | 
|---|
 | 1203 | -  COSTS_N_INSNS (10),    /* MAEBR */
 | 
|---|
 | 1204 | +  COSTS_N_INSNS (1),     /* MADBR */
 | 
|---|
 | 1205 | +  COSTS_N_INSNS (1),     /* MAEBR */
 | 
|---|
 | 1206 |    COSTS_N_INSNS (111),   /* DXBR */
 | 
|---|
 | 1207 |    COSTS_N_INSNS (39),    /* DDBR */
 | 
|---|
 | 1208 |    COSTS_N_INSNS (32),    /* DEBR */
 | 
|---|
 | 1209 | @@ -352,6 +353,10 @@
 | 
|---|
 | 1210 |  #define REGNO_PAIR_OK(REGNO, MODE)                               \
 | 
|---|
 | 1211 |    (HARD_REGNO_NREGS ((REGNO), (MODE)) == 1 || !((REGNO) & 1))
 | 
|---|
 | 1212 |  
 | 
|---|
 | 1213 | +/* That's the read ahead of the dynamic branch prediction unit in
 | 
|---|
 | 1214 | +   bytes on a z10 CPU.  */
 | 
|---|
 | 1215 | +#define Z10_PREDICT_DISTANCE 384
 | 
|---|
 | 1216 | +
 | 
|---|
 | 1217 |  static enum machine_mode
 | 
|---|
 | 1218 |  s390_libgcc_cmp_return_mode (void)
 | 
|---|
 | 1219 |  {
 | 
|---|
 | 1220 | @@ -1641,6 +1646,10 @@
 | 
|---|
 | 1221 |    if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
 | 
|---|
 | 1222 |      target_flags |= MASK_LONG_DOUBLE_128;
 | 
|---|
 | 1223 |  #endif
 | 
|---|
 | 1224 | +
 | 
|---|
 | 1225 | +  if (s390_tune == PROCESSOR_2097_Z10
 | 
|---|
 | 1226 | +      && !PARAM_SET_P (PARAM_MAX_UNROLLED_INSNS))
 | 
|---|
 | 1227 | +    set_param_value ("max-unrolled-insns", 100);
 | 
|---|
 | 1228 |  }
 | 
|---|
 | 1229 |  
 | 
|---|
 | 1230 |  /* Map for smallest class containing reg regno.  */
 | 
|---|
 | 1231 | @@ -1678,6 +1687,11 @@
 | 
|---|
 | 1232 |    if (!disp)
 | 
|---|
 | 1233 |      return true;
 | 
|---|
 | 1234 |  
 | 
|---|
 | 1235 | +  /* Without the long displacement facility we don't need to
 | 
|---|
 | 1236 | +     distingiush between long and short displacement.  */
 | 
|---|
 | 1237 | +  if (!TARGET_LONG_DISPLACEMENT)
 | 
|---|
 | 1238 | +    return true;
 | 
|---|
 | 1239 | +
 | 
|---|
 | 1240 |    /* Integer displacement in range.  */
 | 
|---|
 | 1241 |    if (GET_CODE (disp) == CONST_INT)
 | 
|---|
 | 1242 |      return INTVAL (disp) >= 0 && INTVAL (disp) < 4096;
 | 
|---|
 | 1243 | @@ -2046,79 +2060,93 @@
 | 
|---|
 | 1244 |  }
 | 
|---|
 | 1245 |  
 | 
|---|
 | 1246 |  
 | 
|---|
 | 1247 | -/* Evaluates constraint strings described by the regular expression
 | 
|---|
 | 1248 | -   ([A|B](Q|R|S|T))|U|W and returns 1 if OP is a valid operand for the
 | 
|---|
 | 1249 | -   constraint given in STR, or 0 else.  */
 | 
|---|
 | 1250 | +/* Return true if ADDR is of kind symbol_ref or symbol_ref + const_int
 | 
|---|
 | 1251 | +   and return these parts in SYMREF and ADDEND.  You can pass NULL in
 | 
|---|
 | 1252 | +   SYMREF and/or ADDEND if you are not interested in these values.  */
 | 
|---|
 | 1253 |  
 | 
|---|
 | 1254 | -int
 | 
|---|
 | 1255 | -s390_mem_constraint (const char *str, rtx op)
 | 
|---|
 | 1256 | +static bool
 | 
|---|
 | 1257 | +s390_symref_operand_p (rtx addr, rtx *symref, HOST_WIDE_INT *addend)
 | 
|---|
 | 1258 |  {
 | 
|---|
 | 1259 | -  struct s390_address addr;
 | 
|---|
 | 1260 | -  char c = str[0];
 | 
|---|
 | 1261 | +  HOST_WIDE_INT tmpaddend = 0;
 | 
|---|
 | 1262 |  
 | 
|---|
 | 1263 | -  /* Check for offsettable variants of memory constraints.  */
 | 
|---|
 | 1264 | -  if (c == 'A')
 | 
|---|
 | 1265 | +  if (GET_CODE (addr) == CONST)
 | 
|---|
 | 1266 | +    addr = XEXP (addr, 0);
 | 
|---|
 | 1267 | +
 | 
|---|
 | 1268 | +  if (GET_CODE (addr) == PLUS)
 | 
|---|
 | 1269 |      {
 | 
|---|
 | 1270 | -      /* Only accept non-volatile MEMs.  */
 | 
|---|
 | 1271 | -      if (!MEM_P (op) || MEM_VOLATILE_P (op))
 | 
|---|
 | 1272 | -       return 0;
 | 
|---|
 | 1273 | +      if (GET_CODE (XEXP (addr, 0)) == SYMBOL_REF
 | 
|---|
 | 1274 | +         && CONST_INT_P (XEXP (addr, 1)))
 | 
|---|
 | 1275 | +       {
 | 
|---|
 | 1276 | +         tmpaddend = INTVAL (XEXP (addr, 1));
 | 
|---|
 | 1277 | +         addr = XEXP (addr, 0);
 | 
|---|
 | 1278 | +       }
 | 
|---|
 | 1279 | +      else
 | 
|---|
 | 1280 | +       return false;
 | 
|---|
 | 1281 | +    }
 | 
|---|
 | 1282 | +  else
 | 
|---|
 | 1283 | +    if (GET_CODE (addr) != SYMBOL_REF)
 | 
|---|
 | 1284 | +       return false;
 | 
|---|
 | 1285 |  
 | 
|---|
 | 1286 | -      if ((reload_completed || reload_in_progress)
 | 
|---|
 | 1287 | -         ? !offsettable_memref_p (op) : !offsettable_nonstrict_memref_p (op))
 | 
|---|
 | 1288 | -       return 0;
 | 
|---|
 | 1289 | +  if (symref)
 | 
|---|
 | 1290 | +    *symref = addr;
 | 
|---|
 | 1291 | +  if (addend)
 | 
|---|
 | 1292 | +    *addend = tmpaddend;
 | 
|---|
 | 1293 | +
 | 
|---|
 | 1294 | +  return true;
 | 
|---|
 | 1295 | +}
 | 
|---|
 | 1296 |  
 | 
|---|
 | 1297 | -      c = str[1];
 | 
|---|
 | 1298 | -    }
 | 
|---|
 | 1299 |  
 | 
|---|
 | 1300 | -  /* Check for non-literal-pool variants of memory constraints.  */
 | 
|---|
 | 1301 | -  else if (c == 'B')
 | 
|---|
 | 1302 | +/* Return true if the address in OP is valid for constraint letter C
 | 
|---|
 | 1303 | +   if wrapped in a MEM rtx.  Set LIT_POOL_OK to true if it literal
 | 
|---|
 | 1304 | +   pool MEMs should be accepted.  Only the Q, R, S, T constraint
 | 
|---|
 | 1305 | +   letters are allowed for C.  */
 | 
|---|
 | 1306 | +
 | 
|---|
 | 1307 | +static int
 | 
|---|
 | 1308 | +s390_check_qrst_address (char c, rtx op, bool lit_pool_ok)
 | 
|---|
 | 1309 | +{
 | 
|---|
 | 1310 | +  struct s390_address addr;
 | 
|---|
 | 1311 | +  bool decomposed = false;
 | 
|---|
 | 1312 | +
 | 
|---|
 | 1313 | +  /* This check makes sure that no symbolic address (except literal
 | 
|---|
 | 1314 | +     pool references) are accepted by the R or T constraints.  */
 | 
|---|
 | 1315 | +  if (s390_symref_operand_p (op, NULL, NULL))
 | 
|---|
 | 1316 |      {
 | 
|---|
 | 1317 | -      if (GET_CODE (op) != MEM)
 | 
|---|
 | 1318 | +      if (!lit_pool_ok)
 | 
|---|
 | 1319 |         return 0;
 | 
|---|
 | 1320 | -      if (!s390_decompose_address (XEXP (op, 0), &addr))
 | 
|---|
 | 1321 | +      if (!s390_decompose_address (op, &addr))
 | 
|---|
 | 1322 |         return 0;
 | 
|---|
 | 1323 | -      if (addr.literal_pool)
 | 
|---|
 | 1324 | +      if (!addr.literal_pool)
 | 
|---|
 | 1325 |         return 0;
 | 
|---|
 | 1326 | -
 | 
|---|
 | 1327 | -      c = str[1];
 | 
|---|
 | 1328 | +      decomposed = true;
 | 
|---|
 | 1329 |      }
 | 
|---|
 | 1330 |  
 | 
|---|
 | 1331 |    switch (c)
 | 
|---|
 | 1332 |      {
 | 
|---|
 | 1333 | -    case 'Q':
 | 
|---|
 | 1334 | -      if (GET_CODE (op) != MEM)
 | 
|---|
 | 1335 | -       return 0;
 | 
|---|
 | 1336 | -      if (!s390_decompose_address (XEXP (op, 0), &addr))
 | 
|---|
 | 1337 | +    case 'Q': /* no index short displacement */
 | 
|---|
 | 1338 | +      if (!decomposed && !s390_decompose_address (op, &addr))
 | 
|---|
 | 1339 |         return 0;
 | 
|---|
 | 1340 |        if (addr.indx)
 | 
|---|
 | 1341 |         return 0;
 | 
|---|
 | 1342 | -
 | 
|---|
 | 1343 | -      if (TARGET_LONG_DISPLACEMENT)
 | 
|---|
 | 1344 | -       {
 | 
|---|
 | 1345 | -         if (!s390_short_displacement (addr.disp))
 | 
|---|
 | 1346 | -           return 0;
 | 
|---|
 | 1347 | -       }
 | 
|---|
 | 1348 | -      break;
 | 
|---|
 | 1349 | -
 | 
|---|
 | 1350 | -    case 'R':
 | 
|---|
 | 1351 | -      if (GET_CODE (op) != MEM)
 | 
|---|
 | 1352 | +      if (!s390_short_displacement (addr.disp))
 | 
|---|
 | 1353 |         return 0;
 | 
|---|
 | 1354 | +      break;
 | 
|---|
 | 1355 |  
 | 
|---|
 | 1356 | +    case 'R': /* with index short displacement */
 | 
|---|
 | 1357 |        if (TARGET_LONG_DISPLACEMENT)
 | 
|---|
 | 1358 |         {
 | 
|---|
 | 1359 | -         if (!s390_decompose_address (XEXP (op, 0), &addr))
 | 
|---|
 | 1360 | +         if (!decomposed && !s390_decompose_address (op, &addr))
 | 
|---|
 | 1361 |             return 0;
 | 
|---|
 | 1362 |           if (!s390_short_displacement (addr.disp))
 | 
|---|
 | 1363 |             return 0;
 | 
|---|
 | 1364 |         }
 | 
|---|
 | 1365 | +      /* Any invalid address here will be fixed up by reload,
 | 
|---|
 | 1366 | +        so accept it for the most generic constraint.  */
 | 
|---|
 | 1367 |        break;
 | 
|---|
 | 1368 |  
 | 
|---|
 | 1369 | -    case 'S':
 | 
|---|
 | 1370 | +    case 'S': /* no index long displacement */
 | 
|---|
 | 1371 |        if (!TARGET_LONG_DISPLACEMENT)
 | 
|---|
 | 1372 |         return 0;
 | 
|---|
 | 1373 | -      if (GET_CODE (op) != MEM)
 | 
|---|
 | 1374 | -       return 0;
 | 
|---|
 | 1375 | -      if (!s390_decompose_address (XEXP (op, 0), &addr))
 | 
|---|
 | 1376 | +      if (!decomposed && !s390_decompose_address (op, &addr))
 | 
|---|
 | 1377 |         return 0;
 | 
|---|
 | 1378 |        if (addr.indx)
 | 
|---|
 | 1379 |         return 0;
 | 
|---|
 | 1380 | @@ -2126,52 +2154,74 @@
 | 
|---|
 | 1381 |         return 0;
 | 
|---|
 | 1382 |        break;
 | 
|---|
 | 1383 |  
 | 
|---|
 | 1384 | -    case 'T':
 | 
|---|
 | 1385 | +    case 'T': /* with index long displacement */
 | 
|---|
 | 1386 |        if (!TARGET_LONG_DISPLACEMENT)
 | 
|---|
 | 1387 |         return 0;
 | 
|---|
 | 1388 | -      if (GET_CODE (op) != MEM)
 | 
|---|
 | 1389 | -       return 0;
 | 
|---|
 | 1390 | -      if (!s390_decompose_address (XEXP (op, 0), &addr))
 | 
|---|
 | 1391 | -       return 0;
 | 
|---|
 | 1392 | -      if (s390_short_displacement (addr.disp))
 | 
|---|
 | 1393 | +      /* Any invalid address here will be fixed up by reload,
 | 
|---|
 | 1394 | +        so accept it for the most generic constraint.  */
 | 
|---|
 | 1395 | +      if ((decomposed || s390_decompose_address (op, &addr))
 | 
|---|
 | 1396 | +         && s390_short_displacement (addr.disp))
 | 
|---|
 | 1397 |         return 0;
 | 
|---|
 | 1398 |        break;
 | 
|---|
 | 1399 | +    default:
 | 
|---|
 | 1400 | +      return 0;
 | 
|---|
 | 1401 | +    }
 | 
|---|
 | 1402 | +  return 1;
 | 
|---|
 | 1403 | +}
 | 
|---|
 | 1404 |  
 | 
|---|
 | 1405 | -    case 'U':
 | 
|---|
 | 1406 | -      if (TARGET_LONG_DISPLACEMENT)
 | 
|---|
 | 1407 | -       {
 | 
|---|
 | 1408 | -         if (!s390_decompose_address (op, &addr))
 | 
|---|
 | 1409 | -           return 0;
 | 
|---|
 | 1410 | -         if (!s390_short_displacement (addr.disp))
 | 
|---|
 | 1411 | -           return 0;
 | 
|---|
 | 1412 | -       }
 | 
|---|
 | 1413 | -      break;
 | 
|---|
 | 1414 |  
 | 
|---|
 | 1415 | -    case 'W':
 | 
|---|
 | 1416 | -      if (!TARGET_LONG_DISPLACEMENT)
 | 
|---|
 | 1417 | +/* Evaluates constraint strings described by the regular expression
 | 
|---|
 | 1418 | +   ([A|B|Z](Q|R|S|T))|U|W|Y and returns 1 if OP is a valid operand for
 | 
|---|
 | 1419 | +   the constraint given in STR, or 0 else.  */
 | 
|---|
 | 1420 | +
 | 
|---|
 | 1421 | +int
 | 
|---|
 | 1422 | +s390_mem_constraint (const char *str, rtx op)
 | 
|---|
 | 1423 | +{
 | 
|---|
 | 1424 | +  char c = str[0];
 | 
|---|
 | 1425 | +
 | 
|---|
 | 1426 | +  switch (c)
 | 
|---|
 | 1427 | +    {
 | 
|---|
 | 1428 | +    case 'A':
 | 
|---|
 | 1429 | +      /* Check for offsettable variants of memory constraints.  */
 | 
|---|
 | 1430 | +      if (!MEM_P (op) || MEM_VOLATILE_P (op))
 | 
|---|
 | 1431 |         return 0;
 | 
|---|
 | 1432 | -      if (!s390_decompose_address (op, &addr))
 | 
|---|
 | 1433 | +      if ((reload_completed || reload_in_progress)
 | 
|---|
 | 1434 | +         ? !offsettable_memref_p (op) : !offsettable_nonstrict_memref_p (op))
 | 
|---|
 | 1435 |         return 0;
 | 
|---|
 | 1436 | -      if (s390_short_displacement (addr.disp))
 | 
|---|
 | 1437 | +      return s390_check_qrst_address (str[1], XEXP (op, 0), true);
 | 
|---|
 | 1438 | +    case 'B':
 | 
|---|
 | 1439 | +      /* Check for non-literal-pool variants of memory constraints.  */
 | 
|---|
 | 1440 | +      if (!MEM_P (op))
 | 
|---|
 | 1441 |         return 0;
 | 
|---|
 | 1442 | -      break;
 | 
|---|
 | 1443 | -
 | 
|---|
 | 1444 | +      return s390_check_qrst_address (str[1], XEXP (op, 0), false);
 | 
|---|
 | 1445 | +    case 'Q':
 | 
|---|
 | 1446 | +    case 'R':
 | 
|---|
 | 1447 | +    case 'S':
 | 
|---|
 | 1448 | +    case 'T':
 | 
|---|
 | 1449 | +      if (GET_CODE (op) != MEM)
 | 
|---|
 | 1450 | +       return 0;
 | 
|---|
 | 1451 | +      return s390_check_qrst_address (c, XEXP (op, 0), true);
 | 
|---|
 | 1452 | +    case 'U':
 | 
|---|
 | 1453 | +      return (s390_check_qrst_address ('Q', op, true)
 | 
|---|
 | 1454 | +             || s390_check_qrst_address ('R', op, true));
 | 
|---|
 | 1455 | +    case 'W':
 | 
|---|
 | 1456 | +      return (s390_check_qrst_address ('S', op, true)
 | 
|---|
 | 1457 | +             || s390_check_qrst_address ('T', op, true));
 | 
|---|
 | 1458 |      case 'Y':
 | 
|---|
 | 1459 |        /* Simply check for the basic form of a shift count.  Reload will
 | 
|---|
 | 1460 |          take care of making sure we have a proper base register.  */
 | 
|---|
 | 1461 |        if (!s390_decompose_shift_count (op, NULL, NULL))
 | 
|---|
 | 1462 |         return 0;
 | 
|---|
 | 1463 |        break;
 | 
|---|
 | 1464 | -
 | 
|---|
 | 1465 | +    case 'Z':
 | 
|---|
 | 1466 | +      return s390_check_qrst_address (str[1], op, true);
 | 
|---|
 | 1467 |      default:
 | 
|---|
 | 1468 |        return 0;
 | 
|---|
 | 1469 |      }
 | 
|---|
 | 1470 | -
 | 
|---|
 | 1471 |    return 1;
 | 
|---|
 | 1472 |  }
 | 
|---|
 | 1473 |  
 | 
|---|
 | 1474 |  
 | 
|---|
 | 1475 | -
 | 
|---|
 | 1476 |  /* Evaluates constraint strings starting with letter O.  Input
 | 
|---|
 | 1477 |     parameter C is the second letter following the "O" in the constraint
 | 
|---|
 | 1478 |     string. Returns 1 if VALUE meets the respective constraint and 0
 | 
|---|
 | 1479 | @@ -2789,41 +2839,6 @@
 | 
|---|
 | 1480 |    return rclass;
 | 
|---|
 | 1481 |  }
 | 
|---|
 | 1482 |  
 | 
|---|
 | 1483 | -/* Return true if ADDR is of kind symbol_ref or symbol_ref + const_int
 | 
|---|
 | 1484 | -   and return these parts in SYMREF and ADDEND.  You can pass NULL in
 | 
|---|
 | 1485 | -   SYMREF and/or ADDEND if you are not interested in these values.  */
 | 
|---|
 | 1486 | -
 | 
|---|
 | 1487 | -static bool
 | 
|---|
 | 1488 | -s390_symref_operand_p (rtx addr, rtx *symref, HOST_WIDE_INT *addend)
 | 
|---|
 | 1489 | -{
 | 
|---|
 | 1490 | -  HOST_WIDE_INT tmpaddend = 0;
 | 
|---|
 | 1491 | -
 | 
|---|
 | 1492 | -  if (GET_CODE (addr) == CONST)
 | 
|---|
 | 1493 | -    addr = XEXP (addr, 0);
 | 
|---|
 | 1494 | -
 | 
|---|
 | 1495 | -  if (GET_CODE (addr) == PLUS)
 | 
|---|
 | 1496 | -    {
 | 
|---|
 | 1497 | -      if (GET_CODE (XEXP (addr, 0)) == SYMBOL_REF
 | 
|---|
 | 1498 | -         && CONST_INT_P (XEXP (addr, 1)))
 | 
|---|
 | 1499 | -       {
 | 
|---|
 | 1500 | -         tmpaddend = INTVAL (XEXP (addr, 1));
 | 
|---|
 | 1501 | -         addr = XEXP (addr, 0);
 | 
|---|
 | 1502 | -       }
 | 
|---|
 | 1503 | -      else
 | 
|---|
 | 1504 | -       return false;
 | 
|---|
 | 1505 | -    }
 | 
|---|
 | 1506 | -  else
 | 
|---|
 | 1507 | -    if (GET_CODE (addr) != SYMBOL_REF)
 | 
|---|
 | 1508 | -       return false;
 | 
|---|
 | 1509 | -
 | 
|---|
 | 1510 | -  if (symref)
 | 
|---|
 | 1511 | -    *symref = addr;
 | 
|---|
 | 1512 | -  if (addend)
 | 
|---|
 | 1513 | -    *addend = tmpaddend;
 | 
|---|
 | 1514 | -
 | 
|---|
 | 1515 | -  return true;
 | 
|---|
 | 1516 | -}
 | 
|---|
 | 1517 | -
 | 
|---|
 | 1518 |  /* Return true if ADDR is SYMBOL_REF + addend with addend being a
 | 
|---|
 | 1519 |     multiple of ALIGNMENT and the SYMBOL_REF being naturally
 | 
|---|
 | 1520 |     aligned.  */
 | 
|---|
 | 1521 | @@ -5276,6 +5291,7 @@
 | 
|---|
 | 1522 |     A STD instruction should be scheduled earlier,
 | 
|---|
 | 1523 |     in order to use the bypass.  */
 | 
|---|
 | 1524 |  
 | 
|---|
 | 1525 | +
 | 
|---|
 | 1526 |  static int
 | 
|---|
 | 1527 |  s390_adjust_priority (rtx insn ATTRIBUTE_UNUSED, int priority)
 | 
|---|
 | 1528 |  {
 | 
|---|
 | 1529 | @@ -5283,7 +5299,8 @@
 | 
|---|
 | 1530 |      return priority;
 | 
|---|
 | 1531 |  
 | 
|---|
 | 1532 |    if (s390_tune != PROCESSOR_2084_Z990
 | 
|---|
 | 1533 | -      && s390_tune != PROCESSOR_2094_Z9_109)
 | 
|---|
 | 1534 | +      && s390_tune != PROCESSOR_2094_Z9_109
 | 
|---|
 | 1535 | +      && s390_tune != PROCESSOR_2097_Z10)
 | 
|---|
 | 1536 |      return priority;
 | 
|---|
 | 1537 |  
 | 
|---|
 | 1538 |    switch (s390_safe_attr_type (insn))
 | 
|---|
 | 1539 | @@ -5302,6 +5319,7 @@
 | 
|---|
 | 1540 |    return priority;
 | 
|---|
 | 1541 |  }
 | 
|---|
 | 1542 |  
 | 
|---|
 | 1543 | +
 | 
|---|
 | 1544 |  /* The number of instructions that can be issued per cycle.  */
 | 
|---|
 | 1545 |  
 | 
|---|
 | 1546 |  static int
 | 
|---|
 | 1547 | @@ -9589,6 +9607,66 @@
 | 
|---|
 | 1548 |      }
 | 
|---|
 | 1549 |  }
 | 
|---|
 | 1550 |  
 | 
|---|
 | 1551 | +/* On z10 the dynamic branch prediction must see the backward jump in
 | 
|---|
 | 1552 | +   a window of 384 bytes. If not it falls back to the static
 | 
|---|
 | 1553 | +   prediction.  This function rearranges the loop backward branch in a
 | 
|---|
 | 1554 | +   way which makes the static prediction always correct.  The function
 | 
|---|
 | 1555 | +   returns true if it added an instruction.  */
 | 
|---|
 | 1556 | +static bool
 | 
|---|
 | 1557 | +s390_z10_fix_long_loop_prediction (rtx insn)
 | 
|---|
 | 1558 | +{
 | 
|---|
 | 1559 | +  rtx set = single_set (insn);
 | 
|---|
 | 1560 | +  rtx code_label, label_ref, new_label;
 | 
|---|
 | 1561 | +  rtx uncond_jump;
 | 
|---|
 | 1562 | +  rtx cur_insn;
 | 
|---|
 | 1563 | +  rtx tmp;
 | 
|---|
 | 1564 | +  int distance;
 | 
|---|
 | 1565 | +
 | 
|---|
 | 1566 | +  /* This will exclude branch on count and branch on index patterns
 | 
|---|
 | 1567 | +     since these are correctly statically predicted.  */
 | 
|---|
 | 1568 | +  if (!set
 | 
|---|
 | 1569 | +      || SET_DEST (set) != pc_rtx
 | 
|---|
 | 1570 | +      || GET_CODE (SET_SRC(set)) != IF_THEN_ELSE)
 | 
|---|
 | 1571 | +    return false;
 | 
|---|
 | 1572 | +
 | 
|---|
 | 1573 | +  label_ref = (GET_CODE (XEXP (SET_SRC (set), 1)) == LABEL_REF ?
 | 
|---|
 | 1574 | +              XEXP (SET_SRC (set), 1) : XEXP (SET_SRC (set), 2));
 | 
|---|
 | 1575 | +
 | 
|---|
 | 1576 | +  gcc_assert (GET_CODE (label_ref) == LABEL_REF);
 | 
|---|
 | 1577 | +
 | 
|---|
 | 1578 | +  code_label = XEXP (label_ref, 0);
 | 
|---|
 | 1579 | +
 | 
|---|
 | 1580 | +  if (INSN_ADDRESSES (INSN_UID (code_label)) == -1
 | 
|---|
 | 1581 | +      || INSN_ADDRESSES (INSN_UID (insn)) == -1
 | 
|---|
 | 1582 | +      || (INSN_ADDRESSES (INSN_UID (insn))
 | 
|---|
 | 1583 | +         - INSN_ADDRESSES (INSN_UID (code_label)) < Z10_PREDICT_DISTANCE))
 | 
|---|
 | 1584 | +    return false;
 | 
|---|
 | 1585 | +
 | 
|---|
 | 1586 | +  for (distance = 0, cur_insn = PREV_INSN (insn);
 | 
|---|
 | 1587 | +       distance < Z10_PREDICT_DISTANCE - 6;
 | 
|---|
 | 1588 | +       distance += get_attr_length (cur_insn), cur_insn = PREV_INSN (cur_insn))
 | 
|---|
 | 1589 | +    if (!cur_insn || JUMP_P (cur_insn) || LABEL_P (cur_insn))
 | 
|---|
 | 1590 | +      return false;
 | 
|---|
 | 1591 | +
 | 
|---|
 | 1592 | +  new_label = gen_label_rtx ();
 | 
|---|
 | 1593 | +  uncond_jump = emit_jump_insn_after (
 | 
|---|
 | 1594 | +                 gen_rtx_SET (VOIDmode, pc_rtx,
 | 
|---|
 | 1595 | +                              gen_rtx_LABEL_REF (VOIDmode, code_label)),
 | 
|---|
 | 1596 | +                 insn);
 | 
|---|
 | 1597 | +  emit_label_after (new_label, uncond_jump);
 | 
|---|
 | 1598 | +
 | 
|---|
 | 1599 | +  tmp = XEXP (SET_SRC (set), 1);
 | 
|---|
 | 1600 | +  XEXP (SET_SRC (set), 1) = XEXP (SET_SRC (set), 2);
 | 
|---|
 | 1601 | +  XEXP (SET_SRC (set), 2) = tmp;
 | 
|---|
 | 1602 | +  INSN_CODE (insn) = -1;
 | 
|---|
 | 1603 | +
 | 
|---|
 | 1604 | +  XEXP (label_ref, 0) = new_label;
 | 
|---|
 | 1605 | +  JUMP_LABEL (insn) = new_label;
 | 
|---|
 | 1606 | +  JUMP_LABEL (uncond_jump) = code_label;
 | 
|---|
 | 1607 | +
 | 
|---|
 | 1608 | +  return true;
 | 
|---|
 | 1609 | +}
 | 
|---|
 | 1610 | +
 | 
|---|
 | 1611 |  /* Returns 1 if INSN reads the value of REG for purposes not related
 | 
|---|
 | 1612 |     to addressing of memory, and 0 otherwise.  */
 | 
|---|
 | 1613 |  static int
 | 
|---|
 | 1614 | @@ -9671,97 +9749,87 @@
 | 
|---|
 | 1615 |     if that register's value is delivered via a bypass, then the
 | 
|---|
 | 1616 |     pipeline recycles, thereby causing significant performance decline.
 | 
|---|
 | 1617 |     This function locates such situations and exchanges the two
 | 
|---|
 | 1618 | -   operands of the compare.  */
 | 
|---|
 | 1619 | -static void
 | 
|---|
 | 1620 | -s390_z10_optimize_cmp (void)
 | 
|---|
 | 1621 | +   operands of the compare.  The function return true whenever it
 | 
|---|
 | 1622 | +   added an insn.  */
 | 
|---|
 | 1623 | +static bool
 | 
|---|
 | 1624 | +s390_z10_optimize_cmp (rtx insn)
 | 
|---|
 | 1625 |  {
 | 
|---|
 | 1626 | -  rtx insn, prev_insn, next_insn;
 | 
|---|
 | 1627 | -  int added_NOPs = 0;
 | 
|---|
 | 1628 | +  rtx prev_insn, next_insn;
 | 
|---|
 | 1629 | +  bool insn_added_p = false;
 | 
|---|
 | 1630 | +  rtx cond, *op0, *op1;
 | 
|---|
 | 1631 |  
 | 
|---|
 | 1632 | -  for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
 | 
|---|
 | 1633 | +  if (GET_CODE (PATTERN (insn)) == PARALLEL)
 | 
|---|
 | 1634 |      {
 | 
|---|
 | 1635 | -      rtx cond, *op0, *op1;
 | 
|---|
 | 1636 | -
 | 
|---|
 | 1637 | -      if (!INSN_P (insn) || INSN_CODE (insn) <= 0)
 | 
|---|
 | 1638 | -       continue;
 | 
|---|
 | 1639 | -
 | 
|---|
 | 1640 | -      if (GET_CODE (PATTERN (insn)) == PARALLEL)
 | 
|---|
 | 1641 | -       {
 | 
|---|
 | 1642 | -         /* Handle compare and branch and branch on count
 | 
|---|
 | 1643 | -            instructions.  */
 | 
|---|
 | 1644 | -         rtx pattern = single_set (insn);
 | 
|---|
 | 1645 | -
 | 
|---|
 | 1646 | -         if (!pattern
 | 
|---|
 | 1647 | -             || SET_DEST (pattern) != pc_rtx
 | 
|---|
 | 1648 | -             || GET_CODE (SET_SRC (pattern)) != IF_THEN_ELSE)
 | 
|---|
 | 1649 | -           continue;
 | 
|---|
 | 1650 | +      /* Handle compare and branch and branch on count
 | 
|---|
 | 1651 | +        instructions.  */
 | 
|---|
 | 1652 | +      rtx pattern = single_set (insn);
 | 
|---|
 | 1653 | +
 | 
|---|
 | 1654 | +      if (!pattern
 | 
|---|
 | 1655 | +         || SET_DEST (pattern) != pc_rtx
 | 
|---|
 | 1656 | +         || GET_CODE (SET_SRC (pattern)) != IF_THEN_ELSE)
 | 
|---|
 | 1657 | +       return false;
 | 
|---|
 | 1658 |  
 | 
|---|
 | 1659 | -         cond = XEXP (SET_SRC (pattern), 0);
 | 
|---|
 | 1660 | -         op0 = &XEXP (cond, 0);
 | 
|---|
 | 1661 | -         op1 = &XEXP (cond, 1);
 | 
|---|
 | 1662 | -       }
 | 
|---|
 | 1663 | -      else if (GET_CODE (PATTERN (insn)) == SET)
 | 
|---|
 | 1664 | -       {
 | 
|---|
 | 1665 | -         rtx src, dest;
 | 
|---|
 | 1666 | +      cond = XEXP (SET_SRC (pattern), 0);
 | 
|---|
 | 1667 | +      op0 = &XEXP (cond, 0);
 | 
|---|
 | 1668 | +      op1 = &XEXP (cond, 1);
 | 
|---|
 | 1669 | +    }
 | 
|---|
 | 1670 | +  else if (GET_CODE (PATTERN (insn)) == SET)
 | 
|---|
 | 1671 | +    {
 | 
|---|
 | 1672 | +      rtx src, dest;
 | 
|---|
 | 1673 |  
 | 
|---|
 | 1674 | -         /* Handle normal compare instructions.  */
 | 
|---|
 | 1675 | -         src = SET_SRC (PATTERN (insn));
 | 
|---|
 | 1676 | -         dest = SET_DEST (PATTERN (insn));
 | 
|---|
 | 1677 | +      /* Handle normal compare instructions.  */
 | 
|---|
 | 1678 | +      src = SET_SRC (PATTERN (insn));
 | 
|---|
 | 1679 | +      dest = SET_DEST (PATTERN (insn));
 | 
|---|
 | 1680 |  
 | 
|---|
 | 1681 | -         if (!REG_P (dest)
 | 
|---|
 | 1682 | -             || !CC_REGNO_P (REGNO (dest))
 | 
|---|
 | 1683 | -             || GET_CODE (src) != COMPARE)
 | 
|---|
 | 1684 | -           continue;
 | 
|---|
 | 1685 | +      if (!REG_P (dest)
 | 
|---|
 | 1686 | +         || !CC_REGNO_P (REGNO (dest))
 | 
|---|
 | 1687 | +         || GET_CODE (src) != COMPARE)
 | 
|---|
 | 1688 | +       return false;
 | 
|---|
 | 1689 |  
 | 
|---|
 | 1690 | -         /* s390_swap_cmp will try to find the conditional
 | 
|---|
 | 1691 | -            jump when passing NULL_RTX as condition.  */
 | 
|---|
 | 1692 | -         cond = NULL_RTX;
 | 
|---|
 | 1693 | -         op0 = &XEXP (src, 0);
 | 
|---|
 | 1694 | -         op1 = &XEXP (src, 1);
 | 
|---|
 | 1695 | -       }
 | 
|---|
 | 1696 | -      else
 | 
|---|
 | 1697 | -       continue;
 | 
|---|
 | 1698 | +      /* s390_swap_cmp will try to find the conditional
 | 
|---|
 | 1699 | +        jump when passing NULL_RTX as condition.  */
 | 
|---|
 | 1700 | +      cond = NULL_RTX;
 | 
|---|
 | 1701 | +      op0 = &XEXP (src, 0);
 | 
|---|
 | 1702 | +      op1 = &XEXP (src, 1);
 | 
|---|
 | 1703 | +    }
 | 
|---|
 | 1704 | +  else
 | 
|---|
 | 1705 | +    return false;
 | 
|---|
 | 1706 |  
 | 
|---|
 | 1707 | -      if (!REG_P (*op0) || !REG_P (*op1))
 | 
|---|
 | 1708 | -       continue;
 | 
|---|
 | 1709 | +  if (!REG_P (*op0) || !REG_P (*op1))
 | 
|---|
 | 1710 | +    return false;
 | 
|---|
 | 1711 |  
 | 
|---|
 | 1712 | -      /* Swap the COMPARE arguments and its mask if there is a
 | 
|---|
 | 1713 | -        conflicting access in the previous insn.  */
 | 
|---|
 | 1714 | -      prev_insn = PREV_INSN (insn);
 | 
|---|
 | 1715 | +  /* Swap the COMPARE arguments and its mask if there is a
 | 
|---|
 | 1716 | +     conflicting access in the previous insn.  */
 | 
|---|
 | 1717 | +  prev_insn = PREV_INSN (insn);
 | 
|---|
 | 1718 | +  if (prev_insn != NULL_RTX && INSN_P (prev_insn)
 | 
|---|
 | 1719 | +      && reg_referenced_p (*op1, PATTERN (prev_insn)))
 | 
|---|
 | 1720 | +    s390_swap_cmp (cond, op0, op1, insn);
 | 
|---|
 | 1721 | +
 | 
|---|
 | 1722 | +  /* Check if there is a conflict with the next insn. If there
 | 
|---|
 | 1723 | +     was no conflict with the previous insn, then swap the
 | 
|---|
 | 1724 | +     COMPARE arguments and its mask.  If we already swapped
 | 
|---|
 | 1725 | +     the operands, or if swapping them would cause a conflict
 | 
|---|
 | 1726 | +     with the previous insn, issue a NOP after the COMPARE in
 | 
|---|
 | 1727 | +     order to separate the two instuctions.  */
 | 
|---|
 | 1728 | +  next_insn = NEXT_INSN (insn);
 | 
|---|
 | 1729 | +  if (next_insn != NULL_RTX && INSN_P (next_insn)
 | 
|---|
 | 1730 | +      && s390_non_addr_reg_read_p (*op1, next_insn))
 | 
|---|
 | 1731 | +    {
 | 
|---|
 | 1732 |        if (prev_insn != NULL_RTX && INSN_P (prev_insn)
 | 
|---|
 | 1733 | -         && reg_referenced_p (*op1, PATTERN (prev_insn)))
 | 
|---|
 | 1734 | -       s390_swap_cmp (cond, op0, op1, insn);
 | 
|---|
 | 1735 | -
 | 
|---|
 | 1736 | -      /* Check if there is a conflict with the next insn. If there
 | 
|---|
 | 1737 | -        was no conflict with the previous insn, then swap the
 | 
|---|
 | 1738 | -        COMPARE arguments and its mask.  If we already swapped
 | 
|---|
 | 1739 | -        the operands, or if swapping them would cause a conflict
 | 
|---|
 | 1740 | -        with the previous insn, issue a NOP after the COMPARE in
 | 
|---|
 | 1741 | -        order to separate the two instuctions.  */
 | 
|---|
 | 1742 | -      next_insn = NEXT_INSN (insn);
 | 
|---|
 | 1743 | -      if (next_insn != NULL_RTX && INSN_P (next_insn)
 | 
|---|
 | 1744 | -         && s390_non_addr_reg_read_p (*op1, next_insn))
 | 
|---|
 | 1745 | +         && s390_non_addr_reg_read_p (*op0, prev_insn))
 | 
|---|
 | 1746 |         {
 | 
|---|
 | 1747 | -         if (prev_insn != NULL_RTX && INSN_P (prev_insn)
 | 
|---|
 | 1748 | -             && s390_non_addr_reg_read_p (*op0, prev_insn))
 | 
|---|
 | 1749 | -           {
 | 
|---|
 | 1750 | -             if (REGNO (*op1) == 0)
 | 
|---|
 | 1751 | -               emit_insn_after (gen_nop1 (), insn);
 | 
|---|
 | 1752 | -             else
 | 
|---|
 | 1753 | -               emit_insn_after (gen_nop (), insn);
 | 
|---|
 | 1754 | -             added_NOPs = 1;
 | 
|---|
 | 1755 | -           }
 | 
|---|
 | 1756 | +         if (REGNO (*op1) == 0)
 | 
|---|
 | 1757 | +           emit_insn_after (gen_nop1 (), insn);
 | 
|---|
 | 1758 |           else
 | 
|---|
 | 1759 | -           s390_swap_cmp (cond, op0, op1, insn);
 | 
|---|
 | 1760 | +           emit_insn_after (gen_nop (), insn);
 | 
|---|
 | 1761 | +         insn_added_p = true;
 | 
|---|
 | 1762 |         }
 | 
|---|
 | 1763 | +      else
 | 
|---|
 | 1764 | +       s390_swap_cmp (cond, op0, op1, insn);
 | 
|---|
 | 1765 |      }
 | 
|---|
 | 1766 | -
 | 
|---|
 | 1767 | -  /* Adjust branches if we added new instructions.  */
 | 
|---|
 | 1768 | -  if (added_NOPs)
 | 
|---|
 | 1769 | -    shorten_branches (get_insns ());
 | 
|---|
 | 1770 | +  return insn_added_p;
 | 
|---|
 | 1771 |  }
 | 
|---|
 | 1772 |  
 | 
|---|
 | 1773 | -
 | 
|---|
 | 1774 |  /* Perform machine-dependent processing.  */
 | 
|---|
 | 1775 |  
 | 
|---|
 | 1776 |  static void
 | 
|---|
 | 1777 | @@ -9872,10 +9940,33 @@
 | 
|---|
 | 1778 |    /* Try to optimize prologue and epilogue further.  */
 | 
|---|
 | 1779 |    s390_optimize_prologue ();
 | 
|---|
 | 1780 |  
 | 
|---|
 | 1781 | -  /* Eliminate z10-specific pipeline recycles related to some compare
 | 
|---|
 | 1782 | -     instructions.  */
 | 
|---|
 | 1783 | +  /* Walk over the insns and do some z10 specific changes.  */
 | 
|---|
 | 1784 |    if (s390_tune == PROCESSOR_2097_Z10)
 | 
|---|
 | 1785 | -    s390_z10_optimize_cmp ();
 | 
|---|
 | 1786 | +    {
 | 
|---|
 | 1787 | +      rtx insn;
 | 
|---|
 | 1788 | +      bool insn_added_p = false;
 | 
|---|
 | 1789 | +
 | 
|---|
 | 1790 | +      /* The insn lengths and addresses have to be up to date for the
 | 
|---|
 | 1791 | +        following manipulations.  */
 | 
|---|
 | 1792 | +      shorten_branches (get_insns ());
 | 
|---|
 | 1793 | +
 | 
|---|
 | 1794 | +      for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
 | 
|---|
 | 1795 | +       {
 | 
|---|
 | 1796 | +         if (!INSN_P (insn) || INSN_CODE (insn) <= 0)
 | 
|---|
 | 1797 | +           continue;
 | 
|---|
 | 1798 | +
 | 
|---|
 | 1799 | +         if (JUMP_P (insn))
 | 
|---|
 | 1800 | +           insn_added_p |= s390_z10_fix_long_loop_prediction (insn);
 | 
|---|
 | 1801 | +
 | 
|---|
 | 1802 | +         if (GET_CODE (PATTERN (insn)) == PARALLEL
 | 
|---|
 | 1803 | +             || GET_CODE (PATTERN (insn)) == SET)
 | 
|---|
 | 1804 | +           insn_added_p |= s390_z10_optimize_cmp (insn);
 | 
|---|
 | 1805 | +       }
 | 
|---|
 | 1806 | +
 | 
|---|
 | 1807 | +      /* Adjust branches if we added new instructions.  */
 | 
|---|
 | 1808 | +      if (insn_added_p)
 | 
|---|
 | 1809 | +       shorten_branches (get_insns ());
 | 
|---|
 | 1810 | +    }
 | 
|---|
 | 1811 |  }
 | 
|---|
 | 1812 |  
 | 
|---|
 | 1813 |  
 | 
|---|
 | 1814 | diff -Naur gcc-4.4.1.orig/gcc/config/s390/s390.md gcc-4.4.1/gcc/config/s390/s390.md
 | 
|---|
 | 1815 | --- gcc-4.4.1.orig/gcc/config/s390/s390.md      2009-06-15 02:27:22.000000000 -0700
 | 
|---|
 | 1816 | +++ gcc-4.4.1/gcc/config/s390/s390.md   2009-09-04 03:05:45.000000000 -0700
 | 
|---|
 | 1817 | @@ -202,7 +202,7 @@
 | 
|---|
 | 1818 |  (define_attr "type" "none,integer,load,lr,la,larl,lm,stm,
 | 
|---|
 | 1819 |                      cs,vs,store,sem,idiv,
 | 
|---|
 | 1820 |                       imulhi,imulsi,imuldi,
 | 
|---|
 | 1821 | -                    branch,jsr,fsimptf,fsimpdf,fsimpsf,
 | 
|---|
 | 1822 | +                    branch,jsr,fsimptf,fsimpdf,fsimpsf,fhex,
 | 
|---|
 | 1823 |                      floadtf,floaddf,floadsf,fstoredf,fstoresf,
 | 
|---|
 | 1824 |                      fmultf,fmuldf,fmulsf,fdivtf,fdivdf,fdivsf,
 | 
|---|
 | 1825 |                      ftoi,fsqrttf,fsqrtdf,fsqrtsf,
 | 
|---|
 | 1826 | @@ -1076,6 +1076,64 @@
 | 
|---|
 | 1827 |                        (const_int 6) (const_int 12)))]) ; 8 byte for clr/jg
 | 
|---|
 | 1828 |                                                         ; 10 byte for clgr/jg
 | 
|---|
 | 1829 |  
 | 
|---|
 | 1830 | +; And now the same two patterns as above but with a negated CC mask.
 | 
|---|
 | 1831 | +
 | 
|---|
 | 1832 | +; cij, cgij, crj, cgrj, cfi, cgfi, cr, cgr
 | 
|---|
 | 1833 | +; The following instructions do a complementary access of their second
 | 
|---|
 | 1834 | +; operand (z01 only): crj_c, cgrjc, cr, cgr
 | 
|---|
 | 1835 | +(define_insn "*icmp_and_br_signed_<mode>"
 | 
|---|
 | 1836 | +  [(set (pc)
 | 
|---|
 | 1837 | +       (if_then_else (match_operator 0 "s390_signed_integer_comparison"
 | 
|---|
 | 1838 | +                       [(match_operand:GPR 1 "register_operand"  "d,d")
 | 
|---|
 | 1839 | +                        (match_operand:GPR 2 "nonmemory_operand" "d,C")])
 | 
|---|
 | 1840 | +                     (pc)
 | 
|---|
 | 1841 | +                     (label_ref (match_operand 3 "" ""))))
 | 
|---|
 | 1842 | +   (clobber (reg:CC CC_REGNUM))]
 | 
|---|
 | 1843 | +  "TARGET_Z10"
 | 
|---|
 | 1844 | +{
 | 
|---|
 | 1845 | +  if (get_attr_length (insn) == 6)
 | 
|---|
 | 1846 | +    return which_alternative ?
 | 
|---|
 | 1847 | +      "c<g>ij%D0\t%1,%c2,%l3" : "c<g>rj%D0\t%1,%2,%l3";
 | 
|---|
 | 1848 | +  else
 | 
|---|
 | 1849 | +    return which_alternative ?
 | 
|---|
 | 1850 | +      "c<g>fi\t%1,%c2\;jg%D0\t%l3" : "c<g>r\t%1,%2\;jg%D0\t%l3";
 | 
|---|
 | 1851 | +}
 | 
|---|
 | 1852 | +  [(set_attr "op_type" "RIE")
 | 
|---|
 | 1853 | +   (set_attr "type"    "branch")
 | 
|---|
 | 1854 | +   (set_attr "z10prop" "z10_super_c,z10_super")
 | 
|---|
 | 1855 | +   (set (attr "length")
 | 
|---|
 | 1856 | +        (if_then_else (lt (abs (minus (pc) (match_dup 3))) (const_int 60000))
 | 
|---|
 | 1857 | +                      (const_int 6) (const_int 12)))]) ; 8 byte for cr/jg
 | 
|---|
 | 1858 | +                                                       ; 10 byte for cgr/jg
 | 
|---|
 | 1859 | +
 | 
|---|
 | 1860 | +; clij, clgij, clrj, clgrj, clfi, clgfi, clr, clgr
 | 
|---|
 | 1861 | +; The following instructions do a complementary access of their second
 | 
|---|
 | 1862 | +; operand (z10 only): clrj, clgrj, clr, clgr
 | 
|---|
 | 1863 | +(define_insn "*icmp_and_br_unsigned_<mode>"
 | 
|---|
 | 1864 | +  [(set (pc)
 | 
|---|
 | 1865 | +       (if_then_else (match_operator 0 "s390_unsigned_integer_comparison"
 | 
|---|
 | 1866 | +                       [(match_operand:GPR 1 "register_operand"  "d,d")
 | 
|---|
 | 1867 | +                        (match_operand:GPR 2 "nonmemory_operand" "d,I")])
 | 
|---|
 | 1868 | +                     (pc)
 | 
|---|
 | 1869 | +                     (label_ref (match_operand 3 "" ""))))
 | 
|---|
 | 1870 | +   (clobber (reg:CC CC_REGNUM))]
 | 
|---|
 | 1871 | +  "TARGET_Z10"
 | 
|---|
 | 1872 | +{
 | 
|---|
 | 1873 | +  if (get_attr_length (insn) == 6)
 | 
|---|
 | 1874 | +    return which_alternative ?
 | 
|---|
 | 1875 | +      "cl<g>ij%D0\t%1,%b2,%l3" : "cl<g>rj%D0\t%1,%2,%l3";
 | 
|---|
 | 1876 | +  else
 | 
|---|
 | 1877 | +    return which_alternative ?
 | 
|---|
 | 1878 | +      "cl<g>fi\t%1,%b2\;jg%D0\t%l3" : "cl<g>r\t%1,%2\;jg%D0\t%l3";
 | 
|---|
 | 1879 | +}
 | 
|---|
 | 1880 | +  [(set_attr "op_type" "RIE")
 | 
|---|
 | 1881 | +   (set_attr "type"    "branch")
 | 
|---|
 | 1882 | +   (set_attr "z10prop" "z10_super_c,z10_super")
 | 
|---|
 | 1883 | +   (set (attr "length")
 | 
|---|
 | 1884 | +        (if_then_else (lt (abs (minus (pc) (match_dup 3))) (const_int 60000))
 | 
|---|
 | 1885 | +                      (const_int 6) (const_int 12)))]) ; 8 byte for clr/jg
 | 
|---|
 | 1886 | +                                                       ; 10 byte for clgr/jg
 | 
|---|
 | 1887 | +
 | 
|---|
 | 1888 |  ;;
 | 
|---|
 | 1889 |  ;;- Move instructions.
 | 
|---|
 | 1890 |  ;;
 | 
|---|
 | 1891 | @@ -1470,7 +1528,7 @@
 | 
|---|
 | 1892 |  
 | 
|---|
 | 1893 |  (define_insn "*la_64"
 | 
|---|
 | 1894 |    [(set (match_operand:DI 0 "register_operand" "=d,d")
 | 
|---|
 | 1895 | -        (match_operand:QI 1 "address_operand" "U,W"))]
 | 
|---|
 | 1896 | +        (match_operand:QI 1 "address_operand" "ZQZR,ZSZT"))]
 | 
|---|
 | 1897 |    "TARGET_64BIT"
 | 
|---|
 | 1898 |    "@
 | 
|---|
 | 1899 |     la\t%0,%a1
 | 
|---|
 | 1900 | @@ -1653,7 +1711,7 @@
 | 
|---|
 | 1901 |  
 | 
|---|
 | 1902 |  (define_insn "*la_31"
 | 
|---|
 | 1903 |    [(set (match_operand:SI 0 "register_operand" "=d,d")
 | 
|---|
 | 1904 | -        (match_operand:QI 1 "address_operand" "U,W"))]
 | 
|---|
 | 1905 | +        (match_operand:QI 1 "address_operand" "ZQZR,ZSZT"))]
 | 
|---|
 | 1906 |    "!TARGET_64BIT && legitimate_la_operand_p (operands[1])"
 | 
|---|
 | 1907 |    "@
 | 
|---|
 | 1908 |     la\t%0,%a1
 | 
|---|
 | 1909 | @@ -1688,7 +1746,7 @@
 | 
|---|
 | 1910 |  
 | 
|---|
 | 1911 |  (define_insn "*la_31_and"
 | 
|---|
 | 1912 |    [(set (match_operand:SI 0 "register_operand" "=d,d")
 | 
|---|
 | 1913 | -        (and:SI (match_operand:QI 1 "address_operand" "U,W")
 | 
|---|
 | 1914 | +        (and:SI (match_operand:QI 1 "address_operand" "ZQZR,ZSZT")
 | 
|---|
 | 1915 |                  (const_int 2147483647)))]
 | 
|---|
 | 1916 |    "!TARGET_64BIT"
 | 
|---|
 | 1917 |    "@
 | 
|---|
 | 1918 | @@ -1714,7 +1772,7 @@
 | 
|---|
 | 1919 |  
 | 
|---|
 | 1920 |  (define_insn "force_la_31"
 | 
|---|
 | 1921 |    [(set (match_operand:SI 0 "register_operand" "=d,d")
 | 
|---|
 | 1922 | -        (match_operand:QI 1 "address_operand" "U,W"))
 | 
|---|
 | 1923 | +        (match_operand:QI 1 "address_operand" "ZQZR,ZSZT"))
 | 
|---|
 | 1924 |     (use (const_int 0))]
 | 
|---|
 | 1925 |    "!TARGET_64BIT"
 | 
|---|
 | 1926 |    "@
 | 
|---|
 | 1927 | @@ -1909,7 +1967,7 @@
 | 
|---|
 | 1928 |     #
 | 
|---|
 | 1929 |     #"
 | 
|---|
 | 1930 |    [(set_attr "op_type" "RRE,RRE,*,*,RSY,RSY,*,*")
 | 
|---|
 | 1931 | -   (set_attr "type"    "fsimptf,fsimptf,*,*,lm,stm,*,*")])
 | 
|---|
 | 1932 | +   (set_attr "type"    "fhex,fsimptf,*,*,lm,stm,*,*")])
 | 
|---|
 | 1933 |  
 | 
|---|
 | 1934 |  (define_insn "*mov<mode>_31"
 | 
|---|
 | 1935 |    [(set (match_operand:TD_TF 0 "nonimmediate_operand" "=f,f,f,o")
 | 
|---|
 | 1936 | @@ -1921,7 +1979,7 @@
 | 
|---|
 | 1937 |     #
 | 
|---|
 | 1938 |     #"
 | 
|---|
 | 1939 |    [(set_attr "op_type" "RRE,RRE,*,*")
 | 
|---|
 | 1940 | -   (set_attr "type"    "fsimptf,fsimptf,*,*")])
 | 
|---|
 | 1941 | +   (set_attr "type"    "fhex,fsimptf,*,*")])
 | 
|---|
 | 1942 |  
 | 
|---|
 | 1943 |  ; TFmode in GPRs splitters
 | 
|---|
 | 1944 |  
 | 
|---|
 | 1945 | @@ -2029,7 +2087,7 @@
 | 
|---|
 | 1946 |     lg\t%0,%1
 | 
|---|
 | 1947 |     stg\t%1,%0"
 | 
|---|
 | 1948 |    [(set_attr "op_type" "RRE,RR,RRE,RRE,RX,RXY,RX,RXY,RRE,RXY,RXY")
 | 
|---|
 | 1949 | -   (set_attr "type" "fsimpdf,floaddf,floaddf,floaddf,floaddf,floaddf,
 | 
|---|
 | 1950 | +   (set_attr "type" "fhex,floaddf,floaddf,floaddf,floaddf,floaddf,
 | 
|---|
 | 1951 |                       fstoredf,fstoredf,lr,load,store")
 | 
|---|
 | 1952 |     (set_attr "z10prop" "*,
 | 
|---|
 | 1953 |                          *,
 | 
|---|
 | 1954 | @@ -2059,7 +2117,7 @@
 | 
|---|
 | 1955 |     lg\t%0,%1
 | 
|---|
 | 1956 |     stg\t%1,%0"
 | 
|---|
 | 1957 |    [(set_attr "op_type" "RRE,RR,RX,RXY,RX,RXY,RRE,RXY,RXY")
 | 
|---|
 | 1958 | -   (set_attr "type" "fsimp<mode>,fload<mode>,fload<mode>,fload<mode>,
 | 
|---|
 | 1959 | +   (set_attr "type" "fhex,fload<mode>,fload<mode>,fload<mode>,
 | 
|---|
 | 1960 |                       fstore<mode>,fstore<mode>,lr,load,store")
 | 
|---|
 | 1961 |     (set_attr "z10prop" "*,
 | 
|---|
 | 1962 |                          *,
 | 
|---|
 | 1963 | @@ -2091,7 +2149,7 @@
 | 
|---|
 | 1964 |     #
 | 
|---|
 | 1965 |     #"
 | 
|---|
 | 1966 |    [(set_attr "op_type" "RRE,RR,RX,RXY,RX,RXY,RS,RSY,RS,RSY,*,*")
 | 
|---|
 | 1967 | -   (set_attr "type" "fsimp<mode>,fload<mode>,fload<mode>,fload<mode>,
 | 
|---|
 | 1968 | +   (set_attr "type" "fhex,fload<mode>,fload<mode>,fload<mode>,
 | 
|---|
 | 1969 |                       fstore<mode>,fstore<mode>,lm,lm,stm,stm,*,*")])
 | 
|---|
 | 1970 |  
 | 
|---|
 | 1971 |  (define_split
 | 
|---|
 | 1972 | @@ -2158,7 +2216,7 @@
 | 
|---|
 | 1973 |     st\t%1,%0
 | 
|---|
 | 1974 |     sty\t%1,%0"
 | 
|---|
 | 1975 |    [(set_attr "op_type" "RRE,RR,RX,RXY,RX,RXY,RR,RX,RXY,RX,RXY")
 | 
|---|
 | 1976 | -   (set_attr "type" "fsimp<mode>,fload<mode>,fload<mode>,fload<mode>,
 | 
|---|
 | 1977 | +   (set_attr "type" "fhex,fload<mode>,fload<mode>,fload<mode>,
 | 
|---|
 | 1978 |                       fstore<mode>,fstore<mode>,lr,load,load,store,store")
 | 
|---|
 | 1979 |     (set_attr "z10prop" "*,
 | 
|---|
 | 1980 |                          *,
 | 
|---|
 | 1981 | @@ -7407,7 +7465,7 @@
 | 
|---|
 | 1982 |    [(set (pc)
 | 
|---|
 | 1983 |          (if_then_else
 | 
|---|
 | 1984 |            (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
 | 
|---|
 | 1985 | -          (match_operand 0 "address_operand" "U")
 | 
|---|
 | 1986 | +          (match_operand 0 "address_operand" "ZQZR")
 | 
|---|
 | 1987 |            (pc)))]
 | 
|---|
 | 1988 |    ""
 | 
|---|
 | 1989 |  {
 | 
|---|
 | 1990 | @@ -7471,7 +7529,7 @@
 | 
|---|
 | 1991 |          (if_then_else
 | 
|---|
 | 1992 |            (match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
 | 
|---|
 | 1993 |            (pc)
 | 
|---|
 | 1994 | -          (match_operand 0 "address_operand" "U")))]
 | 
|---|
 | 1995 | +          (match_operand 0 "address_operand" "ZQZR")))]
 | 
|---|
 | 1996 |    ""
 | 
|---|
 | 1997 |  {
 | 
|---|
 | 1998 |    if (get_attr_op_type (insn) == OP_TYPE_RR)
 | 
|---|
 | 1999 | @@ -7660,7 +7718,7 @@
 | 
|---|
 | 2000 |          (if_then_else
 | 
|---|
 | 2001 |            (ne (match_operand:SI 1 "register_operand" "d")
 | 
|---|
 | 2002 |                (const_int 1))
 | 
|---|
 | 2003 | -          (match_operand 0 "address_operand" "U")
 | 
|---|
 | 2004 | +          (match_operand 0 "address_operand" "ZQZR")
 | 
|---|
 | 2005 |            (pc)))
 | 
|---|
 | 2006 |     (set (match_operand:SI 2 "register_operand" "=1")
 | 
|---|
 | 2007 |          (plus:SI (match_dup 1) (const_int -1)))
 | 
|---|
 | 2008 | @@ -7771,7 +7829,7 @@
 | 
|---|
 | 2009 |  ;
 | 
|---|
 | 2010 |  
 | 
|---|
 | 2011 |  (define_insn "indirect_jump"
 | 
|---|
 | 2012 | - [(set (pc) (match_operand 0 "address_operand" "U"))]
 | 
|---|
 | 2013 | + [(set (pc) (match_operand 0 "address_operand" "ZQZR"))]
 | 
|---|
 | 2014 |    ""
 | 
|---|
 | 2015 |  {
 | 
|---|
 | 2016 |    if (get_attr_op_type (insn) == OP_TYPE_RR)
 | 
|---|
 | 2017 | @@ -7790,7 +7848,7 @@
 | 
|---|
 | 2018 |  ;
 | 
|---|
 | 2019 |  
 | 
|---|
 | 2020 |  (define_insn "casesi_jump"
 | 
|---|
 | 2021 | - [(set (pc) (match_operand 0 "address_operand" "U"))
 | 
|---|
 | 2022 | + [(set (pc) (match_operand 0 "address_operand" "ZQZR"))
 | 
|---|
 | 2023 |     (use (label_ref (match_operand 1 "" "")))]
 | 
|---|
 | 2024 |    ""
 | 
|---|
 | 2025 |  {
 | 
|---|
 | 2026 | @@ -8012,7 +8070,7 @@
 | 
|---|
 | 2027 |     (set_attr "type"    "jsr")])
 | 
|---|
 | 2028 |  
 | 
|---|
 | 2029 |  (define_insn "*basr"
 | 
|---|
 | 2030 | -  [(call (mem:QI (match_operand 0 "address_operand" "U"))
 | 
|---|
 | 2031 | +  [(call (mem:QI (match_operand 0 "address_operand" "ZQZR"))
 | 
|---|
 | 2032 |           (match_operand 1 "const_int_operand" "n"))
 | 
|---|
 | 2033 |     (clobber (match_operand 2 "register_operand" "=r"))]
 | 
|---|
 | 2034 |    "!SIBLING_CALL_P (insn) && GET_MODE (operands[2]) == Pmode"
 | 
|---|
 | 2035 | @@ -8070,7 +8128,7 @@
 | 
|---|
 | 2036 |  
 | 
|---|
 | 2037 |  (define_insn "*basr_r"
 | 
|---|
 | 2038 |    [(set (match_operand 0 "" "")
 | 
|---|
 | 2039 | -        (call (mem:QI (match_operand 1 "address_operand" "U"))
 | 
|---|
 | 2040 | +        (call (mem:QI (match_operand 1 "address_operand" "ZQZR"))
 | 
|---|
 | 2041 |                (match_operand 2 "const_int_operand" "n")))
 | 
|---|
 | 2042 |     (clobber (match_operand 3 "register_operand" "=r"))]
 | 
|---|
 | 2043 |    "!SIBLING_CALL_P (insn) && GET_MODE (operands[3]) == Pmode"
 | 
|---|
 | 2044 | @@ -8170,7 +8228,7 @@
 | 
|---|
 | 2045 |  
 | 
|---|
 | 2046 |  (define_insn "*basr_tls"
 | 
|---|
 | 2047 |    [(set (match_operand 0 "" "")
 | 
|---|
 | 2048 | -        (call (mem:QI (match_operand 1 "address_operand" "U"))
 | 
|---|
 | 2049 | +        (call (mem:QI (match_operand 1 "address_operand" "ZQZR"))
 | 
|---|
 | 2050 |                (match_operand 2 "const_int_operand" "n")))
 | 
|---|
 | 2051 |     (clobber (match_operand 3 "register_operand" "=r"))
 | 
|---|
 | 2052 |     (use (match_operand 4 "" ""))]
 | 
|---|
 | 2053 | @@ -8720,27 +8778,32 @@
 | 
|---|
 | 2054 |  ;
 | 
|---|
 | 2055 |  
 | 
|---|
 | 2056 |  (define_insn "prefetch"
 | 
|---|
 | 2057 | -  [(prefetch (match_operand 0 "address_operand" "UW,X")
 | 
|---|
 | 2058 | -            (match_operand:SI 1 "const_int_operand" "n,n")
 | 
|---|
 | 2059 | -            (match_operand:SI 2 "const_int_operand" "n,n"))]
 | 
|---|
 | 2060 | -  "TARGET_Z10"
 | 
|---|
 | 2061 | +  [(prefetch (match_operand 0    "address_operand"   "ZQZS,ZRZT,X")
 | 
|---|
 | 2062 | +            (match_operand:SI 1 "const_int_operand" "   n,   n,n")
 | 
|---|
 | 2063 | +            (match_operand:SI 2 "const_int_operand" "   n,   n,n"))]
 | 
|---|
 | 2064 | +  "TARGET_ZARCH && s390_tune == PROCESSOR_2097_Z10"
 | 
|---|
 | 2065 |  {
 | 
|---|
 | 2066 | -  if (larl_operand (operands[0], Pmode))
 | 
|---|
 | 2067 | -    return INTVAL (operands[1]) == 1 ? "pfdrl\t2,%a0" : "pfdrl\t1,%a0";
 | 
|---|
 | 2068 | +  switch (which_alternative)
 | 
|---|
 | 2069 | +    {
 | 
|---|
 | 2070 | +      case 0:
 | 
|---|
 | 2071 | +        return INTVAL (operands[1]) == 1 ? "stcmh\t2,0,%a0" : "stcmh\t1,0,%a0";
 | 
|---|
 | 2072 | +      case 1:
 | 
|---|
 | 2073 | +        return INTVAL (operands[1]) == 1 ? "pfd\t2,%a0" : "pfd\t1,%a0";
 | 
|---|
 | 2074 | +      case 2:
 | 
|---|
 | 2075 | +        if (larl_operand (operands[0], Pmode))
 | 
|---|
 | 2076 | +         return INTVAL (operands[1]) == 1 ? "pfdrl\t2,%a0" : "pfdrl\t1,%a0";
 | 
|---|
 | 2077 | +      default:
 | 
|---|
 | 2078 |  
 | 
|---|
 | 2079 | -  if (s390_mem_constraint ("W", operands[0])
 | 
|---|
 | 2080 | -      || s390_mem_constraint ("U", operands[0]))
 | 
|---|
 | 2081 | -    return INTVAL (operands[1]) == 1 ? "pfd\t2,%a0" : "pfd\t1,%a0";
 | 
|---|
 | 2082 | -
 | 
|---|
 | 2083 | -  /* This point might be reached if op0 is a larl operand with an
 | 
|---|
 | 2084 | -     uneven addend.  In this case we simply omit issuing a prefetch
 | 
|---|
 | 2085 | -     instruction.  */
 | 
|---|
 | 2086 | +        /* This might be reached for symbolic operands with an odd
 | 
|---|
 | 2087 | +           addend.  We simply omit the prefetch for such rare cases.  */
 | 
|---|
 | 2088 |  
 | 
|---|
 | 2089 | -  return "";
 | 
|---|
 | 2090 | +        return "";
 | 
|---|
 | 2091 | +     }
 | 
|---|
 | 2092 |  }
 | 
|---|
 | 2093 | -  [(set_attr "type" "load,larl")
 | 
|---|
 | 2094 | -   (set_attr "op_type" "RXY,RIL")
 | 
|---|
 | 2095 | -   (set_attr "z10prop" "z10_super")])
 | 
|---|
 | 2096 | +  [(set_attr "type" "store,load,larl")
 | 
|---|
 | 2097 | +   (set_attr "op_type" "RSY,RXY,RIL")
 | 
|---|
 | 2098 | +   (set_attr "z10prop" "z10_super")
 | 
|---|
 | 2099 | +   (set_attr "cpu_facility" "*,z10,z10")])
 | 
|---|
 | 2100 |  
 | 
|---|
 | 2101 |  
 | 
|---|
 | 2102 |  ;
 | 
|---|
 | 2103 | diff -Naur gcc-4.4.1.orig/gcc/cp/call.c gcc-4.4.1/gcc/cp/call.c
 | 
|---|
 | 2104 | --- gcc-4.4.1.orig/gcc/cp/call.c        2009-07-12 23:06:27.000000000 -0700
 | 
|---|
 | 2105 | +++ gcc-4.4.1/gcc/cp/call.c     2009-07-24 11:06:08.000000000 -0700
 | 
|---|
 | 2106 | @@ -1211,7 +1211,21 @@
 | 
|---|
 | 2107 |        lvalue_p = clk_ordinary;
 | 
|---|
 | 2108 |        from = TREE_TYPE (from);
 | 
|---|
 | 2109 |      }
 | 
|---|
 | 2110 | -  else if (expr)
 | 
|---|
 | 2111 | +
 | 
|---|
 | 2112 | +  if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))
 | 
|---|
 | 2113 | +    {
 | 
|---|
 | 2114 | +      maybe_warn_cpp0x ("extended initializer lists");
 | 
|---|
 | 2115 | +      conv = implicit_conversion (to, from, expr, c_cast_p,
 | 
|---|
 | 2116 | +                                 flags);
 | 
|---|
 | 2117 | +      if (!CLASS_TYPE_P (to)
 | 
|---|
 | 2118 | +         && CONSTRUCTOR_NELTS (expr) == 1)
 | 
|---|
 | 2119 | +       {
 | 
|---|
 | 2120 | +         expr = CONSTRUCTOR_ELT (expr, 0)->value;
 | 
|---|
 | 2121 | +         from = TREE_TYPE (expr);
 | 
|---|
 | 2122 | +       }
 | 
|---|
 | 2123 | +    }
 | 
|---|
 | 2124 | +
 | 
|---|
 | 2125 | +  if (lvalue_p == clk_none && expr)
 | 
|---|
 | 2126 |      lvalue_p = real_lvalue_p (expr);
 | 
|---|
 | 2127 |  
 | 
|---|
 | 2128 |    tfrom = from;
 | 
|---|
 | 2129 | @@ -1347,8 +1361,9 @@
 | 
|---|
 | 2130 |       conversion operator).  */
 | 
|---|
 | 2131 |    flags |= LOOKUP_NO_TEMP_BIND;
 | 
|---|
 | 2132 |  
 | 
|---|
 | 2133 | -  conv = implicit_conversion (to, from, expr, c_cast_p,
 | 
|---|
 | 2134 | -                             flags);
 | 
|---|
 | 2135 | +  if (!conv)
 | 
|---|
 | 2136 | +    conv = implicit_conversion (to, from, expr, c_cast_p,
 | 
|---|
 | 2137 | +                               flags);
 | 
|---|
 | 2138 |    if (!conv)
 | 
|---|
 | 2139 |      return NULL;
 | 
|---|
 | 2140 |  
 | 
|---|
 | 2141 | @@ -6242,6 +6257,14 @@
 | 
|---|
 | 2142 |    ref_conv1 = maybe_handle_ref_bind (&ics1);
 | 
|---|
 | 2143 |    ref_conv2 = maybe_handle_ref_bind (&ics2);
 | 
|---|
 | 2144 |  
 | 
|---|
 | 2145 | +  /* List-initialization sequence L1 is a better conversion sequence than
 | 
|---|
 | 2146 | +     list-initialization sequence L2 if L1 converts to
 | 
|---|
 | 2147 | +     std::initializer_list<X> for some X and L2 does not.  */
 | 
|---|
 | 2148 | +  if (ics1->kind == ck_list && ics2->kind != ck_list)
 | 
|---|
 | 2149 | +    return 1;
 | 
|---|
 | 2150 | +  if (ics2->kind == ck_list && ics1->kind != ck_list)
 | 
|---|
 | 2151 | +    return -1;
 | 
|---|
 | 2152 | +
 | 
|---|
 | 2153 |    /* [over.ics.rank]
 | 
|---|
 | 2154 |  
 | 
|---|
 | 2155 |       When  comparing  the  basic forms of implicit conversion sequences (as
 | 
|---|
 | 2156 | @@ -6292,26 +6315,13 @@
 | 
|---|
 | 2157 |        conversion *t1;
 | 
|---|
 | 2158 |        conversion *t2;
 | 
|---|
 | 2159 |  
 | 
|---|
 | 2160 | -      for (t1 = ics1; t1->kind != ck_user && t1->kind != ck_list; t1 = t1->u.next)
 | 
|---|
 | 2161 | +      for (t1 = ics1; t1->kind != ck_user; t1 = t1->u.next)
 | 
|---|
 | 2162 |         if (t1->kind == ck_ambig || t1->kind == ck_aggr)
 | 
|---|
 | 2163 |           return 0;
 | 
|---|
 | 2164 | -      for (t2 = ics2; t2->kind != ck_user && t2->kind != ck_list; t2 = t2->u.next)
 | 
|---|
 | 2165 | +      for (t2 = ics2; t2->kind != ck_user; t2 = t2->u.next)
 | 
|---|
 | 2166 |         if (t2->kind == ck_ambig || t2->kind == ck_aggr)
 | 
|---|
 | 2167 |           return 0;
 | 
|---|
 | 2168 |  
 | 
|---|
 | 2169 | -      /* Conversion to std::initializer_list is better than other
 | 
|---|
 | 2170 | -        user-defined conversions.  */
 | 
|---|
 | 2171 | -      if (t1->kind == ck_list
 | 
|---|
 | 2172 | -         || t2->kind == ck_list)
 | 
|---|
 | 2173 | -       {
 | 
|---|
 | 2174 | -         if (t2->kind != ck_list)
 | 
|---|
 | 2175 | -           return 1;
 | 
|---|
 | 2176 | -         else if (t1->kind != ck_list)
 | 
|---|
 | 2177 | -           return -1;
 | 
|---|
 | 2178 | -         else
 | 
|---|
 | 2179 | -           return 0;
 | 
|---|
 | 2180 | -       }
 | 
|---|
 | 2181 | -
 | 
|---|
 | 2182 |        if (t1->cand->fn != t2->cand->fn)
 | 
|---|
 | 2183 |         return 0;
 | 
|---|
 | 2184 |  
 | 
|---|
 | 2185 | @@ -7288,6 +7298,7 @@
 | 
|---|
 | 2186 |    if (!conv || conv->bad_p)
 | 
|---|
 | 2187 |      {
 | 
|---|
 | 2188 |        if (!(TYPE_QUALS (TREE_TYPE (type)) & TYPE_QUAL_CONST)
 | 
|---|
 | 2189 | +         && !TYPE_REF_IS_RVALUE (type)
 | 
|---|
 | 2190 |           && !real_lvalue_p (expr))
 | 
|---|
 | 2191 |         error ("invalid initialization of non-const reference of "
 | 
|---|
 | 2192 |                "type %qT from a temporary of type %qT",
 | 
|---|
 | 2193 | diff -Naur gcc-4.4.1.orig/gcc/cp/decl.c gcc-4.4.1/gcc/cp/decl.c
 | 
|---|
 | 2194 | --- gcc-4.4.1.orig/gcc/cp/decl.c        2009-07-07 15:08:01.000000000 -0700
 | 
|---|
 | 2195 | +++ gcc-4.4.1/gcc/cp/decl.c     2009-07-26 09:05:22.000000000 -0700
 | 
|---|
 | 2196 | @@ -4345,13 +4345,6 @@
 | 
|---|
 | 2197 |        return NULL_TREE;
 | 
|---|
 | 2198 |      }
 | 
|---|
 | 2199 |  
 | 
|---|
 | 2200 | -  if (TREE_CODE (init) == CONSTRUCTOR)
 | 
|---|
 | 2201 | -    {
 | 
|---|
 | 2202 | -      error ("ISO C++ forbids use of initializer list to "
 | 
|---|
 | 2203 | -            "initialize reference %qD", decl);
 | 
|---|
 | 2204 | -      return NULL_TREE;
 | 
|---|
 | 2205 | -    }
 | 
|---|
 | 2206 | -
 | 
|---|
 | 2207 |    if (TREE_CODE (init) == TREE_LIST)
 | 
|---|
 | 2208 |      init = build_x_compound_expr_from_list (init, "initializer");
 | 
|---|
 | 2209 |  
 | 
|---|
 | 2210 | @@ -7618,7 +7611,6 @@
 | 
|---|
 | 2211 |    bool unsigned_p, signed_p, short_p, long_p, thread_p;
 | 
|---|
 | 2212 |    bool type_was_error_mark_node = false;
 | 
|---|
 | 2213 |    bool parameter_pack_p = declarator? declarator->parameter_pack_p : false;
 | 
|---|
 | 2214 | -  bool set_no_warning = false;
 | 
|---|
 | 2215 |    bool template_type_arg = false;
 | 
|---|
 | 2216 |  
 | 
|---|
 | 2217 |    signed_p = declspecs->specs[(int)ds_signed];
 | 
|---|
 | 2218 | @@ -8297,7 +8289,6 @@
 | 
|---|
 | 2219 |                 /* We now know that the TYPE_QUALS don't apply to the
 | 
|---|
 | 2220 |                    decl, but to its return type.  */
 | 
|---|
 | 2221 |                 type_quals = TYPE_UNQUALIFIED;
 | 
|---|
 | 2222 | -               set_no_warning = true;
 | 
|---|
 | 2223 |               }
 | 
|---|
 | 2224 |  
 | 
|---|
 | 2225 |             /* Error about some types functions can't return.  */
 | 
|---|
 | 2226 | @@ -9499,9 +9490,6 @@
 | 
|---|
 | 2227 |      if (!processing_template_decl)
 | 
|---|
 | 2228 |        cp_apply_type_quals_to_decl (type_quals, decl);
 | 
|---|
 | 2229 |  
 | 
|---|
 | 2230 | -    if (set_no_warning)
 | 
|---|
 | 2231 | -        TREE_NO_WARNING (decl) = 1;
 | 
|---|
 | 2232 | -
 | 
|---|
 | 2233 |      return decl;
 | 
|---|
 | 2234 |    }
 | 
|---|
 | 2235 |  }
 | 
|---|
 | 2236 | diff -Naur gcc-4.4.1.orig/gcc/cp/error.c gcc-4.4.1/gcc/cp/error.c
 | 
|---|
 | 2237 | --- gcc-4.4.1.orig/gcc/cp/error.c       2009-07-10 15:31:34.000000000 -0700
 | 
|---|
 | 2238 | +++ gcc-4.4.1/gcc/cp/error.c    2009-08-04 05:28:27.000000000 -0700
 | 
|---|
 | 2239 | @@ -2181,7 +2181,10 @@
 | 
|---|
 | 2240 |      return decl_as_string (decl, TFF_DECL_SPECIFIERS);
 | 
|---|
 | 2241 |  
 | 
|---|
 | 2242 |    reinit_cxx_pp ();
 | 
|---|
 | 2243 | -  if (v == 1 && DECL_CLASS_SCOPE_P (decl))
 | 
|---|
 | 2244 | +  if (v == 1
 | 
|---|
 | 2245 | +      && (DECL_CLASS_SCOPE_P (decl)
 | 
|---|
 | 2246 | +         || (DECL_NAMESPACE_SCOPE_P (decl)
 | 
|---|
 | 2247 | +             && CP_DECL_CONTEXT (decl) != global_namespace)))
 | 
|---|
 | 2248 |      {
 | 
|---|
 | 2249 |        dump_type (CP_DECL_CONTEXT (decl), TFF_PLAIN_IDENTIFIER);
 | 
|---|
 | 2250 |        pp_cxx_colon_colon (cxx_pp);
 | 
|---|
 | 2251 | diff -Naur gcc-4.4.1.orig/gcc/cp/init.c gcc-4.4.1/gcc/cp/init.c
 | 
|---|
 | 2252 | --- gcc-4.4.1.orig/gcc/cp/init.c        2009-07-12 23:06:27.000000000 -0700
 | 
|---|
 | 2253 | +++ gcc-4.4.1/gcc/cp/init.c     2009-08-06 10:22:19.000000000 -0700
 | 
|---|
 | 2254 | @@ -2695,6 +2695,13 @@
 | 
|---|
 | 2255 |      gcc_assert (!init);
 | 
|---|
 | 2256 |  
 | 
|---|
 | 2257 |    inner_elt_type = strip_array_types (type);
 | 
|---|
 | 2258 | +
 | 
|---|
 | 2259 | +  /* Look through the TARGET_EXPR around a compound literal.  */
 | 
|---|
 | 2260 | +  if (init && TREE_CODE (init) == TARGET_EXPR
 | 
|---|
 | 2261 | +      && TREE_CODE (TARGET_EXPR_INITIAL (init)) == CONSTRUCTOR
 | 
|---|
 | 2262 | +      && from_array != 2)
 | 
|---|
 | 2263 | +    init = TARGET_EXPR_INITIAL (init);
 | 
|---|
 | 2264 | +
 | 
|---|
 | 2265 |    if (init
 | 
|---|
 | 2266 |        && TREE_CODE (atype) == ARRAY_TYPE
 | 
|---|
 | 2267 |        && (from_array == 2
 | 
|---|
 | 2268 | @@ -2763,6 +2770,17 @@
 | 
|---|
 | 2269 |    base = get_temp_regvar (ptype, rval);
 | 
|---|
 | 2270 |    iterator = get_temp_regvar (ptrdiff_type_node, maxindex);
 | 
|---|
 | 2271 |  
 | 
|---|
 | 2272 | +  /* If initializing one array from another, initialize element by
 | 
|---|
 | 2273 | +     element.  We rely upon the below calls to do the argument
 | 
|---|
 | 2274 | +     checking.  Evaluate the initializer before entering the try block.  */
 | 
|---|
 | 2275 | +  if (from_array && init && TREE_CODE (init) != CONSTRUCTOR)
 | 
|---|
 | 2276 | +    {
 | 
|---|
 | 2277 | +      base2 = decay_conversion (init);
 | 
|---|
 | 2278 | +      itype = TREE_TYPE (base2);
 | 
|---|
 | 2279 | +      base2 = get_temp_regvar (itype, base2);
 | 
|---|
 | 2280 | +      itype = TREE_TYPE (itype);
 | 
|---|
 | 2281 | +    }
 | 
|---|
 | 2282 | +
 | 
|---|
 | 2283 |    /* Protect the entire array initialization so that we can destroy
 | 
|---|
 | 2284 |       the partially constructed array if an exception is thrown.
 | 
|---|
 | 2285 |       But don't do this if we're assigning.  */
 | 
|---|
 | 2286 | @@ -2805,16 +2823,8 @@
 | 
|---|
 | 2287 |      }
 | 
|---|
 | 2288 |    else if (from_array)
 | 
|---|
 | 2289 |      {
 | 
|---|
 | 2290 | -      /* If initializing one array from another, initialize element by
 | 
|---|
 | 2291 | -        element.  We rely upon the below calls the do argument
 | 
|---|
 | 2292 | -        checking.  */
 | 
|---|
 | 2293 |        if (init)
 | 
|---|
 | 2294 | -       {
 | 
|---|
 | 2295 | -         base2 = decay_conversion (init);
 | 
|---|
 | 2296 | -         itype = TREE_TYPE (base2);
 | 
|---|
 | 2297 | -         base2 = get_temp_regvar (itype, base2);
 | 
|---|
 | 2298 | -         itype = TREE_TYPE (itype);
 | 
|---|
 | 2299 | -       }
 | 
|---|
 | 2300 | +       /* OK, we set base2 above.  */;
 | 
|---|
 | 2301 |        else if (TYPE_LANG_SPECIFIC (type)
 | 
|---|
 | 2302 |                && TYPE_NEEDS_CONSTRUCTING (type)
 | 
|---|
 | 2303 |                && ! TYPE_HAS_DEFAULT_CONSTRUCTOR (type))
 | 
|---|
 | 2304 | diff -Naur gcc-4.4.1.orig/gcc/cp/Make-lang.in gcc-4.4.1/gcc/cp/Make-lang.in
 | 
|---|
 | 2305 | --- gcc-4.4.1.orig/gcc/cp/Make-lang.in  2008-12-05 00:01:58.000000000 -0800
 | 
|---|
 | 2306 | +++ gcc-4.4.1/gcc/cp/Make-lang.in       2009-09-09 01:46:32.000000000 -0700
 | 
|---|
 | 2307 | @@ -72,8 +72,8 @@
 | 
|---|
 | 2308 |  # Shared with C front end:
 | 
|---|
 | 2309 |  CXX_C_OBJS = attribs.o c-common.o c-format.o c-pragma.o c-semantics.o c-lex.o \
 | 
|---|
 | 2310 |         c-dump.o $(CXX_TARGET_OBJS) c-pretty-print.o c-opts.o c-pch.o \
 | 
|---|
 | 2311 | -       incpath.o cppdefault.o c-ppoutput.o c-cppbuiltin.o prefix.o \
 | 
|---|
 | 2312 | -       c-gimplify.o c-omp.o tree-inline.o
 | 
|---|
 | 2313 | +       incpath.o c-ppoutput.o c-cppbuiltin.o prefix.o \
 | 
|---|
 | 2314 | +       c-gimplify.o c-omp.o
 | 
|---|
 | 2315 |  
 | 
|---|
 | 2316 |  # Language-specific object files for C++ and Objective C++.
 | 
|---|
 | 2317 |  CXX_AND_OBJCXX_OBJS = cp/call.o cp/decl.o cp/expr.o cp/pt.o cp/typeck2.o \
 | 
|---|
 | 2318 | diff -Naur gcc-4.4.1.orig/gcc/cp/parser.c gcc-4.4.1/gcc/cp/parser.c
 | 
|---|
 | 2319 | --- gcc-4.4.1.orig/gcc/cp/parser.c      2009-06-08 21:23:00.000000000 -0700
 | 
|---|
 | 2320 | +++ gcc-4.4.1/gcc/cp/parser.c   2009-08-31 14:20:07.000000000 -0700
 | 
|---|
 | 2321 | @@ -11871,11 +11871,19 @@
 | 
|---|
 | 2322 |    else
 | 
|---|
 | 2323 |      identifier = make_anon_name ();
 | 
|---|
 | 2324 |  
 | 
|---|
 | 2325 | -  /* Check for the `:' that denotes a specified underlying type in C++0x.  */
 | 
|---|
 | 2326 | +  /* Check for the `:' that denotes a specified underlying type in C++0x.
 | 
|---|
 | 2327 | +     Note that a ':' could also indicate a bitfield width, however.  */
 | 
|---|
 | 2328 |    if (cp_lexer_next_token_is (parser->lexer, CPP_COLON))
 | 
|---|
 | 2329 |      {
 | 
|---|
 | 2330 |        cp_decl_specifier_seq type_specifiers;
 | 
|---|
 | 2331 |  
 | 
|---|
 | 2332 | +      /* Consume the `:'.  */
 | 
|---|
 | 2333 | +      cp_lexer_consume_token (parser->lexer);
 | 
|---|
 | 2334 | +
 | 
|---|
 | 2335 | +      /* Parse the type-specifier-seq.  */
 | 
|---|
 | 2336 | +      cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
 | 
|---|
 | 2337 | +                                    &type_specifiers);
 | 
|---|
 | 2338 | +
 | 
|---|
 | 2339 |        /* At this point this is surely not elaborated type specifier.  */
 | 
|---|
 | 2340 |        if (!cp_parser_parse_definitely (parser))
 | 
|---|
 | 2341 |         return NULL_TREE;
 | 
|---|
 | 2342 | @@ -11883,15 +11891,8 @@
 | 
|---|
 | 2343 |        if (cxx_dialect == cxx98)
 | 
|---|
 | 2344 |          maybe_warn_cpp0x ("scoped enums");
 | 
|---|
 | 2345 |  
 | 
|---|
 | 2346 | -      /* Consume the `:'.  */
 | 
|---|
 | 2347 | -      cp_lexer_consume_token (parser->lexer);
 | 
|---|
 | 2348 | -
 | 
|---|
 | 2349 |        has_underlying_type = true;
 | 
|---|
 | 2350 |  
 | 
|---|
 | 2351 | -      /* Parse the type-specifier-seq.  */
 | 
|---|
 | 2352 | -      cp_parser_type_specifier_seq (parser, /*is_condition=*/false,
 | 
|---|
 | 2353 | -                                    &type_specifiers);
 | 
|---|
 | 2354 | -
 | 
|---|
 | 2355 |        /* If that didn't work, stop.  */
 | 
|---|
 | 2356 |        if (type_specifiers.type != error_mark_node)
 | 
|---|
 | 2357 |          {
 | 
|---|
 | 2358 | diff -Naur gcc-4.4.1.orig/gcc/cp/pt.c gcc-4.4.1/gcc/cp/pt.c
 | 
|---|
 | 2359 | --- gcc-4.4.1.orig/gcc/cp/pt.c  2009-07-09 11:00:58.000000000 -0700
 | 
|---|
 | 2360 | +++ gcc-4.4.1/gcc/cp/pt.c       2009-08-04 12:59:48.000000000 -0700
 | 
|---|
 | 2361 | @@ -8007,11 +8007,11 @@
 | 
|---|
 | 2362 |        cp_function_chain->x_current_class_ref = saved_class_ref;
 | 
|---|
 | 2363 |      }
 | 
|---|
 | 2364 |  
 | 
|---|
 | 2365 | -  pop_access_scope (fn);
 | 
|---|
 | 2366 | -
 | 
|---|
 | 2367 |    /* Make sure the default argument is reasonable.  */
 | 
|---|
 | 2368 |    arg = check_default_argument (type, arg);
 | 
|---|
 | 2369 |  
 | 
|---|
 | 2370 | +  pop_access_scope (fn);
 | 
|---|
 | 2371 | +
 | 
|---|
 | 2372 |    return arg;
 | 
|---|
 | 2373 |  }
 | 
|---|
 | 2374 |  
 | 
|---|
 | 2375 | diff -Naur gcc-4.4.1.orig/gcc/cp/tree.c gcc-4.4.1/gcc/cp/tree.c
 | 
|---|
 | 2376 | --- gcc-4.4.1.orig/gcc/cp/tree.c        2009-07-12 23:06:27.000000000 -0700
 | 
|---|
 | 2377 | +++ gcc-4.4.1/gcc/cp/tree.c     2009-08-21 00:10:36.000000000 -0700
 | 
|---|
 | 2378 | @@ -132,6 +132,12 @@
 | 
|---|
 | 2379 |        return clk_ordinary;
 | 
|---|
 | 2380 |  
 | 
|---|
 | 2381 |      case CONST_DECL:
 | 
|---|
 | 2382 | +      /* CONST_DECL without TREE_STATIC are enumeration values and
 | 
|---|
 | 2383 | +        thus not lvalues.  With TREE_STATIC they are used by ObjC++
 | 
|---|
 | 2384 | +        in objc_build_string_object and need to be considered as
 | 
|---|
 | 2385 | +        lvalues.  */
 | 
|---|
 | 2386 | +      if (! TREE_STATIC (ref))
 | 
|---|
 | 2387 | +       return clk_none;
 | 
|---|
 | 2388 |      case VAR_DECL:
 | 
|---|
 | 2389 |        if (TREE_READONLY (ref) && ! TREE_STATIC (ref)
 | 
|---|
 | 2390 |           && DECL_LANG_SPECIFIC (ref)
 | 
|---|
 | 2391 | diff -Naur gcc-4.4.1.orig/gcc/DATESTAMP gcc-4.4.1/gcc/DATESTAMP
 | 
|---|
 | 2392 | --- gcc-4.4.1.orig/gcc/DATESTAMP        2009-07-21 17:16:36.000000000 -0700
 | 
|---|
 | 2393 | +++ gcc-4.4.1/gcc/DATESTAMP     2009-09-11 17:16:45.000000000 -0700
 | 
|---|
 | 2394 | @@ -1 +1 @@
 | 
|---|
 | 2395 | -20090722
 | 
|---|
 | 2396 | +20090912
 | 
|---|
 | 2397 | diff -Naur gcc-4.4.1.orig/gcc/doc/install.texi gcc-4.4.1/gcc/doc/install.texi
 | 
|---|
 | 2398 | --- gcc-4.4.1.orig/gcc/doc/install.texi 2009-03-16 06:23:13.000000000 -0700
 | 
|---|
 | 2399 | +++ gcc-4.4.1/gcc/doc/install.texi      2009-08-31 02:09:29.000000000 -0700
 | 
|---|
 | 2400 | @@ -2463,7 +2463,7 @@
 | 
|---|
 | 2401 |  @samp{make pdf} in place of @samp{make dvi}, you can create documentation
 | 
|---|
 | 2402 |  in the form of @file{.pdf} files; this requires @command{texi2pdf}, which
 | 
|---|
 | 2403 |  is included with Texinfo version 4.8 and later.  You can also
 | 
|---|
 | 2404 | -@uref{http://www.gnu.org/order/order.html,,buy printed manuals from the
 | 
|---|
 | 2405 | +@uref{http://shop.fsf.org/,,buy printed manuals from the
 | 
|---|
 | 2406 |  Free Software Foundation}, though such manuals may not be for the most
 | 
|---|
 | 2407 |  recent version of GCC@.
 | 
|---|
 | 2408 |  
 | 
|---|
 | 2409 | diff -Naur gcc-4.4.1.orig/gcc/doc/invoke.texi gcc-4.4.1/gcc/doc/invoke.texi
 | 
|---|
 | 2410 | --- gcc-4.4.1.orig/gcc/doc/invoke.texi  2009-04-01 00:18:47.000000000 -0700
 | 
|---|
 | 2411 | +++ gcc-4.4.1/gcc/doc/invoke.texi       2009-09-12 08:46:57.000000000 -0700
 | 
|---|
 | 2412 | @@ -456,7 +456,7 @@
 | 
|---|
 | 2413 |  -mfix-cortex-m3-ldrd}
 | 
|---|
 | 2414 |  
 | 
|---|
 | 2415 |  @emph{AVR Options}
 | 
|---|
 | 2416 | -@gccoptlist{-mmcu=@var{mcu}  -msize  -minit-stack=@var{n}  -mno-interrupts @gol
 | 
|---|
 | 2417 | +@gccoptlist{-mmcu=@var{mcu}  -msize  -mno-interrupts @gol
 | 
|---|
 | 2418 |  -mcall-prologues  -mno-tablejump  -mtiny-stack  -mint8}
 | 
|---|
 | 2419 |  
 | 
|---|
 | 2420 |  @emph{Blackfin Options}
 | 
|---|
 | 2421 | @@ -6513,7 +6513,7 @@
 | 
|---|
 | 2422 |  
 | 
|---|
 | 2423 |  @item -fstrict-aliasing
 | 
|---|
 | 2424 |  @opindex fstrict-aliasing
 | 
|---|
 | 2425 | -Allows the compiler to assume the strictest aliasing rules applicable to
 | 
|---|
 | 2426 | +Allow the compiler to assume the strictest aliasing rules applicable to
 | 
|---|
 | 2427 |  the language being compiled.  For C (and C++), this activates
 | 
|---|
 | 2428 |  optimizations based on the type of expressions.  In particular, an
 | 
|---|
 | 2429 |  object of one type is assumed never to reside at the same address as an
 | 
|---|
 | 2430 | @@ -6530,7 +6530,7 @@
 | 
|---|
 | 2431 |  @};
 | 
|---|
 | 2432 |  
 | 
|---|
 | 2433 |  int f() @{
 | 
|---|
 | 2434 | -  a_union t;
 | 
|---|
 | 2435 | +  union a_union t;
 | 
|---|
 | 2436 |    t.d = 3.0;
 | 
|---|
 | 2437 |    return t.i;
 | 
|---|
 | 2438 |  @}
 | 
|---|
 | 2439 | @@ -6543,7 +6543,7 @@
 | 
|---|
 | 2440 |  implementation}.  However, this code might not:
 | 
|---|
 | 2441 |  @smallexample
 | 
|---|
 | 2442 |  int f() @{
 | 
|---|
 | 2443 | -  a_union t;
 | 
|---|
 | 2444 | +  union a_union t;
 | 
|---|
 | 2445 |    int* ip;
 | 
|---|
 | 2446 |    t.d = 3.0;
 | 
|---|
 | 2447 |    ip = &t.i;
 | 
|---|
 | 2448 | @@ -9277,11 +9277,6 @@
 | 
|---|
 | 2449 |  @opindex msize
 | 
|---|
 | 2450 |  Output instruction sizes to the asm file.
 | 
|---|
 | 2451 |  
 | 
|---|
 | 2452 | -@item -minit-stack=@var{N}
 | 
|---|
 | 2453 | -@opindex minit-stack
 | 
|---|
 | 2454 | -Specify the initial stack address, which may be a symbol or numeric value,
 | 
|---|
 | 2455 | -@samp{__stack} is the default.
 | 
|---|
 | 2456 | -
 | 
|---|
 | 2457 |  @item -mno-interrupts
 | 
|---|
 | 2458 |  @opindex mno-interrupts
 | 
|---|
 | 2459 |  Generated code is not compatible with hardware interrupts.
 | 
|---|
 | 2460 | diff -Naur gcc-4.4.1.orig/gcc/doc/service.texi gcc-4.4.1/gcc/doc/service.texi
 | 
|---|
 | 2461 | --- gcc-4.4.1.orig/gcc/doc/service.texi 2002-12-30 13:07:17.000000000 -0800
 | 
|---|
 | 2462 | +++ gcc-4.4.1/gcc/doc/service.texi      2009-08-27 17:01:08.000000000 -0700
 | 
|---|
 | 2463 | @@ -21,7 +21,7 @@
 | 
|---|
 | 2464 |  @item
 | 
|---|
 | 2465 |  Look in the service directory for someone who might help you for a fee.
 | 
|---|
 | 2466 |  The service directory is found at
 | 
|---|
 | 2467 | -@uref{http://www.gnu.org/prep/service.html}.
 | 
|---|
 | 2468 | +@uref{http://www.fsf.org/resources/service}.
 | 
|---|
 | 2469 |  @end itemize
 | 
|---|
 | 2470 |  
 | 
|---|
 | 2471 |  For further information, see
 | 
|---|
 | 2472 | diff -Naur gcc-4.4.1.orig/gcc/dse.c gcc-4.4.1/gcc/dse.c
 | 
|---|
 | 2473 | --- gcc-4.4.1.orig/gcc/dse.c    2009-05-13 14:42:03.000000000 -0700
 | 
|---|
 | 2474 | +++ gcc-4.4.1/gcc/dse.c 2009-08-05 05:54:21.000000000 -0700
 | 
|---|
 | 2475 | @@ -1070,6 +1070,8 @@
 | 
|---|
 | 2476 |  {
 | 
|---|
 | 2477 |    rtx mem_address = XEXP (mem, 0);
 | 
|---|
 | 2478 |    rtx expanded_address, address;
 | 
|---|
 | 2479 | +  int expanded;
 | 
|---|
 | 2480 | +
 | 
|---|
 | 2481 |    /* Make sure that cselib is has initialized all of the operands of
 | 
|---|
 | 2482 |       the address before asking it to do the subst.  */
 | 
|---|
 | 2483 |  
 | 
|---|
 | 2484 | @@ -1114,72 +1116,88 @@
 | 
|---|
 | 2485 |        fprintf (dump_file, "\n");
 | 
|---|
 | 2486 |      }
 | 
|---|
 | 2487 |  
 | 
|---|
 | 2488 | -  /* Use cselib to replace all of the reg references with the full
 | 
|---|
 | 2489 | -     expression.  This will take care of the case where we have 
 | 
|---|
 | 2490 | +  /* First see if just canon_rtx (mem_address) is const or frame,
 | 
|---|
 | 2491 | +     if not, try cselib_expand_value_rtx and call canon_rtx on that.  */
 | 
|---|
 | 2492 | +  address = NULL_RTX;
 | 
|---|
 | 2493 | +  for (expanded = 0; expanded < 2; expanded++)
 | 
|---|
 | 2494 | +    {
 | 
|---|
 | 2495 | +      if (expanded)
 | 
|---|
 | 2496 | +       {
 | 
|---|
 | 2497 | +         /* Use cselib to replace all of the reg references with the full
 | 
|---|
 | 2498 | +            expression.  This will take care of the case where we have 
 | 
|---|
 | 2499 |  
 | 
|---|
 | 2500 | -     r_x = base + offset;
 | 
|---|
 | 2501 | -     val = *r_x;
 | 
|---|
 | 2502 | +            r_x = base + offset;
 | 
|---|
 | 2503 | +            val = *r_x;
 | 
|---|
 | 2504 |     
 | 
|---|
 | 2505 | -     by making it into 
 | 
|---|
 | 2506 | -
 | 
|---|
 | 2507 | -     val = *(base + offset);  
 | 
|---|
 | 2508 | -  */
 | 
|---|
 | 2509 | -
 | 
|---|
 | 2510 | -  expanded_address = cselib_expand_value_rtx (mem_address, scratch, 5);
 | 
|---|
 | 2511 | +            by making it into 
 | 
|---|
 | 2512 |  
 | 
|---|
 | 2513 | -  /* If this fails, just go with the mem_address.  */
 | 
|---|
 | 2514 | -  if (!expanded_address)
 | 
|---|
 | 2515 | -    expanded_address = mem_address;
 | 
|---|
 | 2516 | +            val = *(base + offset);  */
 | 
|---|
 | 2517 |  
 | 
|---|
 | 2518 | -  /* Split the address into canonical BASE + OFFSET terms.  */
 | 
|---|
 | 2519 | -  address = canon_rtx (expanded_address);
 | 
|---|
 | 2520 | +         expanded_address = cselib_expand_value_rtx (mem_address,
 | 
|---|
 | 2521 | +                                                     scratch, 5);
 | 
|---|
 | 2522 |  
 | 
|---|
 | 2523 | -  *offset = 0;
 | 
|---|
 | 2524 | +         /* If this fails, just go with the address from first
 | 
|---|
 | 2525 | +            iteration.  */
 | 
|---|
 | 2526 | +         if (!expanded_address)
 | 
|---|
 | 2527 | +           break;
 | 
|---|
 | 2528 | +       }
 | 
|---|
 | 2529 | +      else
 | 
|---|
 | 2530 | +       expanded_address = mem_address;
 | 
|---|
 | 2531 |  
 | 
|---|
 | 2532 | -  if (dump_file)
 | 
|---|
 | 2533 | -    {
 | 
|---|
 | 2534 | -      fprintf (dump_file, "\n   after cselib_expand address: ");
 | 
|---|
 | 2535 | -      print_inline_rtx (dump_file, expanded_address, 0);
 | 
|---|
 | 2536 | -      fprintf (dump_file, "\n");
 | 
|---|
 | 2537 | +      /* Split the address into canonical BASE + OFFSET terms.  */
 | 
|---|
 | 2538 | +      address = canon_rtx (expanded_address);
 | 
|---|
 | 2539 |  
 | 
|---|
 | 2540 | -      fprintf (dump_file, "\n   after canon_rtx address: ");
 | 
|---|
 | 2541 | -      print_inline_rtx (dump_file, address, 0);
 | 
|---|
 | 2542 | -      fprintf (dump_file, "\n");
 | 
|---|
 | 2543 | -    }
 | 
|---|
 | 2544 | +      *offset = 0;
 | 
|---|
 | 2545 |  
 | 
|---|
 | 2546 | -  if (GET_CODE (address) == CONST)
 | 
|---|
 | 2547 | -    address = XEXP (address, 0);
 | 
|---|
 | 2548 | +      if (dump_file)
 | 
|---|
 | 2549 | +       {
 | 
|---|
 | 2550 | +         if (expanded)
 | 
|---|
 | 2551 | +           {
 | 
|---|
 | 2552 | +             fprintf (dump_file, "\n   after cselib_expand address: ");
 | 
|---|
 | 2553 | +             print_inline_rtx (dump_file, expanded_address, 0);
 | 
|---|
 | 2554 | +             fprintf (dump_file, "\n");
 | 
|---|
 | 2555 | +           }
 | 
|---|
 | 2556 |  
 | 
|---|
 | 2557 | -  if (GET_CODE (address) == PLUS && GET_CODE (XEXP (address, 1)) == CONST_INT)
 | 
|---|
 | 2558 | -    {
 | 
|---|
 | 2559 | -      *offset = INTVAL (XEXP (address, 1));
 | 
|---|
 | 2560 | -      address = XEXP (address, 0);
 | 
|---|
 | 2561 | -    }
 | 
|---|
 | 2562 | +         fprintf (dump_file, "\n   after canon_rtx address: ");
 | 
|---|
 | 2563 | +         print_inline_rtx (dump_file, address, 0);
 | 
|---|
 | 2564 | +         fprintf (dump_file, "\n");
 | 
|---|
 | 2565 | +       }
 | 
|---|
 | 2566 |  
 | 
|---|
 | 2567 | -  if (const_or_frame_p (address))
 | 
|---|
 | 2568 | -    {
 | 
|---|
 | 2569 | -      group_info_t group = get_group_info (address);
 | 
|---|
 | 2570 | +      if (GET_CODE (address) == CONST)
 | 
|---|
 | 2571 | +       address = XEXP (address, 0);
 | 
|---|
 | 2572 |  
 | 
|---|
 | 2573 | -      if (dump_file)
 | 
|---|
 | 2574 | -       fprintf (dump_file, "  gid=%d offset=%d \n", group->id, (int)*offset);
 | 
|---|
 | 2575 | -      *base = NULL;
 | 
|---|
 | 2576 | -      *group_id = group->id;
 | 
|---|
 | 2577 | -    }
 | 
|---|
 | 2578 | -  else
 | 
|---|
 | 2579 | -    {
 | 
|---|
 | 2580 | -      *base = cselib_lookup (address, Pmode, true);
 | 
|---|
 | 2581 | -      *group_id = -1;
 | 
|---|
 | 2582 | +      if (GET_CODE (address) == PLUS
 | 
|---|
 | 2583 | +         && GET_CODE (XEXP (address, 1)) == CONST_INT)
 | 
|---|
 | 2584 | +       {
 | 
|---|
 | 2585 | +         *offset = INTVAL (XEXP (address, 1));
 | 
|---|
 | 2586 | +         address = XEXP (address, 0);
 | 
|---|
 | 2587 | +       }
 | 
|---|
 | 2588 |  
 | 
|---|
 | 2589 | -      if (*base == NULL)
 | 
|---|
 | 2590 | +      if (const_or_frame_p (address))
 | 
|---|
 | 2591 |         {
 | 
|---|
 | 2592 | +         group_info_t group = get_group_info (address);
 | 
|---|
 | 2593 | +
 | 
|---|
 | 2594 |           if (dump_file)
 | 
|---|
 | 2595 | -           fprintf (dump_file, " no cselib val - should be a wild read.\n");
 | 
|---|
 | 2596 | -         return false;
 | 
|---|
 | 2597 | +           fprintf (dump_file, "  gid=%d offset=%d \n",
 | 
|---|
 | 2598 | +                    group->id, (int)*offset);
 | 
|---|
 | 2599 | +         *base = NULL;
 | 
|---|
 | 2600 | +         *group_id = group->id;
 | 
|---|
 | 2601 | +         return true;
 | 
|---|
 | 2602 |         }
 | 
|---|
 | 2603 | +    }
 | 
|---|
 | 2604 | +
 | 
|---|
 | 2605 | +  *base = cselib_lookup (address, Pmode, true);
 | 
|---|
 | 2606 | +  *group_id = -1;
 | 
|---|
 | 2607 | +
 | 
|---|
 | 2608 | +  if (*base == NULL)
 | 
|---|
 | 2609 | +    {
 | 
|---|
 | 2610 |        if (dump_file)
 | 
|---|
 | 2611 | -       fprintf (dump_file, "  varying cselib base=%d offset = %d\n", 
 | 
|---|
 | 2612 | -                (*base)->value, (int)*offset);
 | 
|---|
 | 2613 | +       fprintf (dump_file, " no cselib val - should be a wild read.\n");
 | 
|---|
 | 2614 | +      return false;
 | 
|---|
 | 2615 |      }
 | 
|---|
 | 2616 | +  if (dump_file)
 | 
|---|
 | 2617 | +    fprintf (dump_file, "  varying cselib base=%d offset = %d\n", 
 | 
|---|
 | 2618 | +            (*base)->value, (int)*offset);
 | 
|---|
 | 2619 |    return true;
 | 
|---|
 | 2620 |  }
 | 
|---|
 | 2621 |  
 | 
|---|
 | 2622 | diff -Naur gcc-4.4.1.orig/gcc/dwarf2out.c gcc-4.4.1/gcc/dwarf2out.c
 | 
|---|
 | 2623 | --- gcc-4.4.1.orig/gcc/dwarf2out.c      2009-06-03 10:32:45.000000000 -0700
 | 
|---|
 | 2624 | +++ gcc-4.4.1/gcc/dwarf2out.c   2009-08-16 02:07:40.000000000 -0700
 | 
|---|
 | 2625 | @@ -14260,7 +14260,13 @@
 | 
|---|
 | 2626 |  static void
 | 
|---|
 | 2627 |  gen_inlined_subroutine_die (tree stmt, dw_die_ref context_die, int depth)
 | 
|---|
 | 2628 |  {
 | 
|---|
 | 2629 | -  tree decl = block_ultimate_origin (stmt);
 | 
|---|
 | 2630 | +  tree decl;
 | 
|---|
 | 2631 | +
 | 
|---|
 | 2632 | +  /* The instance of function that is effectively being inlined shall not
 | 
|---|
 | 2633 | +     be abstract.  */
 | 
|---|
 | 2634 | +  gcc_assert (! BLOCK_ABSTRACT (stmt));
 | 
|---|
 | 2635 | +
 | 
|---|
 | 2636 | +  decl = block_ultimate_origin (stmt);
 | 
|---|
 | 2637 |  
 | 
|---|
 | 2638 |    /* Emit info for the abstract instance first, if we haven't yet.  We
 | 
|---|
 | 2639 |       must emit this even if the block is abstract, otherwise when we
 | 
|---|
 | 2640 | @@ -14281,20 +14287,6 @@
 | 
|---|
 | 2641 |        decls_for_scope (stmt, subr_die, depth);
 | 
|---|
 | 2642 |        current_function_has_inlines = 1;
 | 
|---|
 | 2643 |      }
 | 
|---|
 | 2644 | -  else
 | 
|---|
 | 2645 | -    /* We may get here if we're the outer block of function A that was
 | 
|---|
 | 2646 | -       inlined into function B that was inlined into function C.  When
 | 
|---|
 | 2647 | -       generating debugging info for C, dwarf2out_abstract_function(B)
 | 
|---|
 | 2648 | -       would mark all inlined blocks as abstract, including this one.
 | 
|---|
 | 2649 | -       So, we wouldn't (and shouldn't) expect labels to be generated
 | 
|---|
 | 2650 | -       for this one.  Instead, just emit debugging info for
 | 
|---|
 | 2651 | -       declarations within the block.  This is particularly important
 | 
|---|
 | 2652 | -       in the case of initializers of arguments passed from B to us:
 | 
|---|
 | 2653 | -       if they're statement expressions containing declarations, we
 | 
|---|
 | 2654 | -       wouldn't generate dies for their abstract variables, and then,
 | 
|---|
 | 2655 | -       when generating dies for the real variables, we'd die (pun
 | 
|---|
 | 2656 | -       intended :-)  */
 | 
|---|
 | 2657 | -    gen_lexical_block_die (stmt, context_die, depth);
 | 
|---|
 | 2658 |  }
 | 
|---|
 | 2659 |  
 | 
|---|
 | 2660 |  /* Generate a DIE for a field in a record, or structure.  */
 | 
|---|
 | 2661 | @@ -14921,7 +14913,23 @@
 | 
|---|
 | 2662 |    if (must_output_die)
 | 
|---|
 | 2663 |      {
 | 
|---|
 | 2664 |        if (inlined_func)
 | 
|---|
 | 2665 | -       gen_inlined_subroutine_die (stmt, context_die, depth);
 | 
|---|
 | 2666 | +       {
 | 
|---|
 | 2667 | +         /* If STMT block is abstract, that means we have been called
 | 
|---|
 | 2668 | +            indirectly from dwarf2out_abstract_function.
 | 
|---|
 | 2669 | +            That function rightfully marks the descendent blocks (of
 | 
|---|
 | 2670 | +            the abstract function it is dealing with) as being abstract,
 | 
|---|
 | 2671 | +            precisely to prevent us from emitting any
 | 
|---|
 | 2672 | +            DW_TAG_inlined_subroutine DIE as a descendent
 | 
|---|
 | 2673 | +            of an abstract function instance. So in that case, we should
 | 
|---|
 | 2674 | +            not call gen_inlined_subroutine_die.
 | 
|---|
 | 2675 | +
 | 
|---|
 | 2676 | +            Later though, when cgraph asks dwarf2out to emit info
 | 
|---|
 | 2677 | +            for the concrete instance of the function decl into which
 | 
|---|
 | 2678 | +            the concrete instance of STMT got inlined, the later will lead
 | 
|---|
 | 2679 | +            to the generation of a DW_TAG_inlined_subroutine DIE.  */
 | 
|---|
 | 2680 | +         if (! BLOCK_ABSTRACT (stmt))
 | 
|---|
 | 2681 | +           gen_inlined_subroutine_die (stmt, context_die, depth);
 | 
|---|
 | 2682 | +       }
 | 
|---|
 | 2683 |        else
 | 
|---|
 | 2684 |         gen_lexical_block_die (stmt, context_die, depth);
 | 
|---|
 | 2685 |      }
 | 
|---|
 | 2686 | diff -Naur gcc-4.4.1.orig/gcc/expr.c gcc-4.4.1/gcc/expr.c
 | 
|---|
 | 2687 | --- gcc-4.4.1.orig/gcc/expr.c   2009-06-16 07:28:47.000000000 -0700
 | 
|---|
 | 2688 | +++ gcc-4.4.1/gcc/expr.c        2009-08-19 15:52:11.000000000 -0700
 | 
|---|
 | 2689 | @@ -7806,6 +7806,33 @@
 | 
|---|
 | 2690 |                           || mode1 == BLKmode
 | 
|---|
 | 2691 |                           || bitpos + bitsize > GET_MODE_BITSIZE (mode2));
 | 
|---|
 | 2692 |  
 | 
|---|
 | 2693 | +       /* Handle CONCAT first.  */
 | 
|---|
 | 2694 | +       if (GET_CODE (op0) == CONCAT && !must_force_mem)
 | 
|---|
 | 2695 | +         {
 | 
|---|
 | 2696 | +           if (bitpos == 0
 | 
|---|
 | 2697 | +               && bitsize == GET_MODE_BITSIZE (GET_MODE (op0)))
 | 
|---|
 | 2698 | +             return op0;
 | 
|---|
 | 2699 | +           if (bitpos == 0
 | 
|---|
 | 2700 | +               && bitsize == GET_MODE_BITSIZE (GET_MODE (XEXP (op0, 0)))
 | 
|---|
 | 2701 | +               && bitsize)
 | 
|---|
 | 2702 | +             {
 | 
|---|
 | 2703 | +               op0 = XEXP (op0, 0);
 | 
|---|
 | 2704 | +               mode2 = GET_MODE (op0);
 | 
|---|
 | 2705 | +             }
 | 
|---|
 | 2706 | +           else if (bitpos == GET_MODE_BITSIZE (GET_MODE (XEXP (op0, 0)))
 | 
|---|
 | 2707 | +                    && bitsize == GET_MODE_BITSIZE (GET_MODE (XEXP (op0, 1)))
 | 
|---|
 | 2708 | +                    && bitpos
 | 
|---|
 | 2709 | +                    && bitsize)
 | 
|---|
 | 2710 | +             {
 | 
|---|
 | 2711 | +               op0 = XEXP (op0, 1);
 | 
|---|
 | 2712 | +               bitpos = 0;
 | 
|---|
 | 2713 | +               mode2 = GET_MODE (op0);
 | 
|---|
 | 2714 | +             }
 | 
|---|
 | 2715 | +           else
 | 
|---|
 | 2716 | +             /* Otherwise force into memory.  */
 | 
|---|
 | 2717 | +             must_force_mem = 1;
 | 
|---|
 | 2718 | +         }
 | 
|---|
 | 2719 | +
 | 
|---|
 | 2720 |         /* If this is a constant, put it in a register if it is a legitimate
 | 
|---|
 | 2721 |            constant and we don't need a memory reference.  */
 | 
|---|
 | 2722 |         if (CONSTANT_P (op0)
 | 
|---|
 | 2723 | @@ -7879,16 +7906,6 @@
 | 
|---|
 | 2724 |             MEM_VOLATILE_P (op0) = 1;
 | 
|---|
 | 2725 |           }
 | 
|---|
 | 2726 |  
 | 
|---|
 | 2727 | -       /* The following code doesn't handle CONCAT.
 | 
|---|
 | 2728 | -          Assume only bitpos == 0 can be used for CONCAT, due to
 | 
|---|
 | 2729 | -          one element arrays having the same mode as its element.  */
 | 
|---|
 | 2730 | -       if (GET_CODE (op0) == CONCAT)
 | 
|---|
 | 2731 | -         {
 | 
|---|
 | 2732 | -           gcc_assert (bitpos == 0
 | 
|---|
 | 2733 | -                       && bitsize == GET_MODE_BITSIZE (GET_MODE (op0)));
 | 
|---|
 | 2734 | -           return op0;
 | 
|---|
 | 2735 | -         }
 | 
|---|
 | 2736 | -
 | 
|---|
 | 2737 |         /* In cases where an aligned union has an unaligned object
 | 
|---|
 | 2738 |            as a field, we might be extracting a BLKmode value from
 | 
|---|
 | 2739 |            an integer-mode (e.g., SImode) object.  Handle this case
 | 
|---|
 | 2740 | diff -Naur gcc-4.4.1.orig/gcc/fortran/check.c gcc-4.4.1/gcc/fortran/check.c
 | 
|---|
 | 2741 | --- gcc-4.4.1.orig/gcc/fortran/check.c  2009-01-09 15:47:55.000000000 -0800
 | 
|---|
 | 2742 | +++ gcc-4.4.1/gcc/fortran/check.c       2009-07-23 17:28:43.000000000 -0700
 | 
|---|
 | 2743 | @@ -813,6 +813,15 @@
 | 
|---|
 | 2744 |                      gfc_current_intrinsic, &y->where);
 | 
|---|
 | 2745 |           return FAILURE;
 | 
|---|
 | 2746 |         }
 | 
|---|
 | 2747 | +
 | 
|---|
 | 2748 | +      if (y->ts.type == BT_COMPLEX)
 | 
|---|
 | 2749 | +       {
 | 
|---|
 | 2750 | +         gfc_error ("'%s' argument of '%s' intrinsic at %L must have a type "
 | 
|---|
 | 2751 | +                    "of either REAL or INTEGER", gfc_current_intrinsic_arg[1],
 | 
|---|
 | 2752 | +                    gfc_current_intrinsic, &y->where);
 | 
|---|
 | 2753 | +         return FAILURE;
 | 
|---|
 | 2754 | +       }
 | 
|---|
 | 2755 | +
 | 
|---|
 | 2756 |      }
 | 
|---|
 | 2757 |  
 | 
|---|
 | 2758 |    if (kind_check (kind, 2, BT_COMPLEX) == FAILURE)
 | 
|---|
 | 2759 | @@ -937,6 +946,14 @@
 | 
|---|
 | 2760 |                      gfc_current_intrinsic, &y->where);
 | 
|---|
 | 2761 |           return FAILURE;
 | 
|---|
 | 2762 |         }
 | 
|---|
 | 2763 | +
 | 
|---|
 | 2764 | +      if (y->ts.type == BT_COMPLEX)
 | 
|---|
 | 2765 | +       {
 | 
|---|
 | 2766 | +         gfc_error ("'%s' argument of '%s' intrinsic at %L must have a type "
 | 
|---|
 | 2767 | +                    "of either REAL or INTEGER", gfc_current_intrinsic_arg[1],
 | 
|---|
 | 2768 | +                    gfc_current_intrinsic, &y->where);
 | 
|---|
 | 2769 | +         return FAILURE;
 | 
|---|
 | 2770 | +       }
 | 
|---|
 | 2771 |      }
 | 
|---|
 | 2772 |  
 | 
|---|
 | 2773 |    return SUCCESS;
 | 
|---|
 | 2774 | diff -Naur gcc-4.4.1.orig/gcc/fortran/intrinsic.c gcc-4.4.1/gcc/fortran/intrinsic.c
 | 
|---|
 | 2775 | --- gcc-4.4.1.orig/gcc/fortran/intrinsic.c      2009-01-09 15:47:55.000000000 -0800
 | 
|---|
 | 2776 | +++ gcc-4.4.1/gcc/fortran/intrinsic.c   2009-09-11 15:11:06.000000000 -0700
 | 
|---|
 | 2777 | @@ -836,13 +836,17 @@
 | 
|---|
 | 2778 |    /* See if this intrinsic is allowed in the current standard.  */
 | 
|---|
 | 2779 |    if (gfc_check_intrinsic_standard (isym, &symstd, false, loc) == FAILURE)
 | 
|---|
 | 2780 |      {
 | 
|---|
 | 2781 | -      if (gfc_option.warn_intrinsics_std)
 | 
|---|
 | 2782 | -       gfc_warning_now ("The intrinsic '%s' at %L is not included in the"
 | 
|---|
 | 2783 | -                        " selected standard but %s and '%s' will be treated as"
 | 
|---|
 | 2784 | -                        " if declared EXTERNAL.  Use an appropriate -std=*"
 | 
|---|
 | 2785 | -                        " option or define -fall-intrinsics to allow this"
 | 
|---|
 | 2786 | -                        " intrinsic.", sym->name, &loc, symstd, sym->name);
 | 
|---|
 | 2787 | -      sym->attr.external = 1;
 | 
|---|
 | 2788 | +      if (sym->attr.proc == PROC_UNKNOWN)
 | 
|---|
 | 2789 | +       {
 | 
|---|
 | 2790 | +         if (gfc_option.warn_intrinsics_std)
 | 
|---|
 | 2791 | +           gfc_warning_now ("The intrinsic '%s' at %L is not included in the"
 | 
|---|
 | 2792 | +                            " selected standard but %s and '%s' will be"
 | 
|---|
 | 2793 | +                            " treated as if declared EXTERNAL.  Use an"
 | 
|---|
 | 2794 | +                            " appropriate -std=* option or define"
 | 
|---|
 | 2795 | +                            " -fall-intrinsics to allow this intrinsic.",
 | 
|---|
 | 2796 | +                            sym->name, &loc, symstd, sym->name);
 | 
|---|
 | 2797 | +         gfc_add_external (&sym->attr, &loc);
 | 
|---|
 | 2798 | +       }
 | 
|---|
 | 2799 |  
 | 
|---|
 | 2800 |        return false;
 | 
|---|
 | 2801 |      }
 | 
|---|
 | 2802 | diff -Naur gcc-4.4.1.orig/gcc/fortran/iresolve.c gcc-4.4.1/gcc/fortran/iresolve.c
 | 
|---|
 | 2803 | --- gcc-4.4.1.orig/gcc/fortran/iresolve.c       2008-11-01 06:26:19.000000000 -0700
 | 
|---|
 | 2804 | +++ gcc-4.4.1/gcc/fortran/iresolve.c    2009-08-16 13:04:40.000000000 -0700
 | 
|---|
 | 2805 | @@ -2346,9 +2346,19 @@
 | 
|---|
 | 2806 |    /* TODO: Make this do something meaningful.  */
 | 
|---|
 | 2807 |    static char transfer0[] = "__transfer0", transfer1[] = "__transfer1";
 | 
|---|
 | 2808 |  
 | 
|---|
 | 2809 | -  if (mold->ts.type == BT_CHARACTER && !mold->ts.cl->length
 | 
|---|
 | 2810 | -       && !(mold->expr_type == EXPR_VARIABLE && mold->symtree->n.sym->attr.dummy))
 | 
|---|
 | 2811 | -    mold->ts.cl->length = gfc_int_expr (mold->value.character.length);
 | 
|---|
 | 2812 | +  if (mold->ts.type == BT_CHARACTER
 | 
|---|
 | 2813 | +       && !mold->ts.cl->length
 | 
|---|
 | 2814 | +       && gfc_is_constant_expr (mold))
 | 
|---|
 | 2815 | +    {
 | 
|---|
 | 2816 | +      int len;
 | 
|---|
 | 2817 | +      if (mold->expr_type == EXPR_CONSTANT)
 | 
|---|
 | 2818 | +       mold->ts.cl->length = gfc_int_expr (mold->value.character.length);
 | 
|---|
 | 2819 | +      else
 | 
|---|
 | 2820 | +       {
 | 
|---|
 | 2821 | +         len = mold->value.constructor->expr->value.character.length;
 | 
|---|
 | 2822 | +         mold->ts.cl->length = gfc_int_expr (len);
 | 
|---|
 | 2823 | +       }
 | 
|---|
 | 2824 | +    }
 | 
|---|
 | 2825 |  
 | 
|---|
 | 2826 |    f->ts = mold->ts;
 | 
|---|
 | 2827 |  
 | 
|---|
 | 2828 | diff -Naur gcc-4.4.1.orig/gcc/fortran/openmp.c gcc-4.4.1/gcc/fortran/openmp.c
 | 
|---|
 | 2829 | --- gcc-4.4.1.orig/gcc/fortran/openmp.c 2008-07-19 09:22:12.000000000 -0700
 | 
|---|
 | 2830 | +++ gcc-4.4.1/gcc/fortran/openmp.c      2009-07-28 09:33:08.000000000 -0700
 | 
|---|
 | 2831 | @@ -396,12 +396,13 @@
 | 
|---|
 | 2832 |               const char *p = gfc_extract_int (cexpr, &collapse);
 | 
|---|
 | 2833 |               if (p)
 | 
|---|
 | 2834 |                 {
 | 
|---|
 | 2835 | -                 gfc_error (p);
 | 
|---|
 | 2836 | +                 gfc_error_now (p);
 | 
|---|
 | 2837 |                   collapse = 1;
 | 
|---|
 | 2838 |                 }
 | 
|---|
 | 2839 |               else if (collapse <= 0)
 | 
|---|
 | 2840 |                 {
 | 
|---|
 | 2841 | -                 gfc_error ("COLLAPSE clause argument not constant positive integer at %C");
 | 
|---|
 | 2842 | +                 gfc_error_now ("COLLAPSE clause argument not"
 | 
|---|
 | 2843 | +                                " constant positive integer at %C");
 | 
|---|
 | 2844 |                   collapse = 1;
 | 
|---|
 | 2845 |                 }
 | 
|---|
 | 2846 |               c->collapse = collapse;
 | 
|---|
 | 2847 | diff -Naur gcc-4.4.1.orig/gcc/fortran/primary.c gcc-4.4.1/gcc/fortran/primary.c
 | 
|---|
 | 2848 | --- gcc-4.4.1.orig/gcc/fortran/primary.c        2009-04-03 13:56:54.000000000 -0700
 | 
|---|
 | 2849 | +++ gcc-4.4.1/gcc/fortran/primary.c     2009-09-05 07:25:39.000000000 -0700
 | 
|---|
 | 2850 | @@ -1773,7 +1773,11 @@
 | 
|---|
 | 2851 |        if (m != MATCH_YES)
 | 
|---|
 | 2852 |         return MATCH_ERROR;
 | 
|---|
 | 2853 |  
 | 
|---|
 | 2854 | -      tbp = gfc_find_typebound_proc (sym, &t, name, false);
 | 
|---|
 | 2855 | +      if (sym->f2k_derived)
 | 
|---|
 | 2856 | +       tbp = gfc_find_typebound_proc (sym, &t, name, false);
 | 
|---|
 | 2857 | +      else
 | 
|---|
 | 2858 | +       tbp = NULL;
 | 
|---|
 | 2859 | +
 | 
|---|
 | 2860 |        if (tbp)
 | 
|---|
 | 2861 |         {
 | 
|---|
 | 2862 |           gfc_symbol* tbp_sym;
 | 
|---|
 | 2863 | diff -Naur gcc-4.4.1.orig/gcc/fortran/resolve.c gcc-4.4.1/gcc/fortran/resolve.c
 | 
|---|
 | 2864 | --- gcc-4.4.1.orig/gcc/fortran/resolve.c        2009-06-20 02:21:06.000000000 -0700
 | 
|---|
 | 2865 | +++ gcc-4.4.1/gcc/fortran/resolve.c     2009-07-29 02:35:15.000000000 -0700
 | 
|---|
 | 2866 | @@ -9414,7 +9414,7 @@
 | 
|---|
 | 2867 |        if ((!a->save && !a->dummy && !a->pointer
 | 
|---|
 | 2868 |            && !a->in_common && !a->use_assoc
 | 
|---|
 | 2869 |            && !(a->function && sym != sym->result))
 | 
|---|
 | 2870 | -         || (a->dummy && a->intent == INTENT_OUT))
 | 
|---|
 | 2871 | +         || (a->dummy && a->intent == INTENT_OUT && !a->pointer))
 | 
|---|
 | 2872 |         apply_default_init (sym);
 | 
|---|
 | 2873 |      }
 | 
|---|
 | 2874 |  
 | 
|---|
 | 2875 | diff -Naur gcc-4.4.1.orig/gcc/fortran/trans-decl.c gcc-4.4.1/gcc/fortran/trans-decl.c
 | 
|---|
 | 2876 | --- gcc-4.4.1.orig/gcc/fortran/trans-decl.c     2009-06-03 12:39:09.000000000 -0700
 | 
|---|
 | 2877 | +++ gcc-4.4.1/gcc/fortran/trans-decl.c  2009-08-25 11:54:58.000000000 -0700
 | 
|---|
 | 2878 | @@ -2826,7 +2826,8 @@
 | 
|---|
 | 2879 |    gfc_init_block (&fnblock);
 | 
|---|
 | 2880 |    for (f = proc_sym->formal; f; f = f->next)
 | 
|---|
 | 2881 |      if (f->sym && f->sym->attr.intent == INTENT_OUT
 | 
|---|
 | 2882 | -         && f->sym->ts.type == BT_DERIVED)
 | 
|---|
 | 2883 | +       && !f->sym->attr.pointer
 | 
|---|
 | 2884 | +       && f->sym->ts.type == BT_DERIVED)
 | 
|---|
 | 2885 |        {
 | 
|---|
 | 2886 |         if (f->sym->ts.derived->attr.alloc_comp)
 | 
|---|
 | 2887 |           {
 | 
|---|
 | 2888 | @@ -3253,7 +3254,13 @@
 | 
|---|
 | 2889 |               st = gfc_find_symtree (ns->sym_root,
 | 
|---|
 | 2890 |                                      rent->local_name[0]
 | 
|---|
 | 2891 |                                      ? rent->local_name : rent->use_name);
 | 
|---|
 | 2892 | -             gcc_assert (st && st->n.sym->attr.use_assoc);
 | 
|---|
 | 2893 | +             gcc_assert (st);
 | 
|---|
 | 2894 | +
 | 
|---|
 | 2895 | +             /* Fixing-up doubly contained symbols, sometimes results in
 | 
|---|
 | 2896 | +                ambiguity, which is caught here.  */
 | 
|---|
 | 2897 | +             if (!st->n.sym->attr.use_assoc)
 | 
|---|
 | 2898 | +               continue;
 | 
|---|
 | 2899 | +
 | 
|---|
 | 2900 |               if (st->n.sym->backend_decl
 | 
|---|
 | 2901 |                   && DECL_P (st->n.sym->backend_decl)
 | 
|---|
 | 2902 |                   && st->n.sym->module
 | 
|---|
 | 2903 | @@ -3573,6 +3580,7 @@
 | 
|---|
 | 2904 |          automatic lengths.  */
 | 
|---|
 | 2905 |        if (sym->attr.dummy && !sym->attr.referenced
 | 
|---|
 | 2906 |             && sym->ts.type == BT_DERIVED
 | 
|---|
 | 2907 | +           && !sym->attr.pointer
 | 
|---|
 | 2908 |             && sym->ts.derived->attr.alloc_comp
 | 
|---|
 | 2909 |             && sym->attr.intent == INTENT_OUT)
 | 
|---|
 | 2910 |         {
 | 
|---|
 | 2911 | diff -Naur gcc-4.4.1.orig/gcc/java/lang.c gcc-4.4.1/gcc/java/lang.c
 | 
|---|
 | 2912 | --- gcc-4.4.1.orig/gcc/java/lang.c      2008-09-17 14:39:13.000000000 -0700
 | 
|---|
 | 2913 | +++ gcc-4.4.1/gcc/java/lang.c   2009-08-12 02:02:17.000000000 -0700
 | 
|---|
 | 2914 | @@ -53,7 +53,7 @@
 | 
|---|
 | 2915 |  
 | 
|---|
 | 2916 |  static int java_handle_option (size_t scode, const char *arg, int value);
 | 
|---|
 | 2917 |  static void put_decl_string (const char *, int);
 | 
|---|
 | 2918 | -static void put_decl_node (tree);
 | 
|---|
 | 2919 | +static void put_decl_node (tree, int);
 | 
|---|
 | 2920 |  static void java_print_error_function (diagnostic_context *, const char *,
 | 
|---|
 | 2921 |                                        diagnostic_info *);
 | 
|---|
 | 2922 |  static int merge_init_test_initialization (void * *, void *);
 | 
|---|
 | 2923 | @@ -355,10 +355,13 @@
 | 
|---|
 | 2924 |    decl_bufpos += len;
 | 
|---|
 | 2925 |  }
 | 
|---|
 | 2926 |  
 | 
|---|
 | 2927 | -/* Append to decl_buf a printable name for NODE. */
 | 
|---|
 | 2928 | +/* Append to decl_buf a printable name for NODE.
 | 
|---|
 | 2929 | +   Depending on VERBOSITY, more information about NODE
 | 
|---|
 | 2930 | +   is printed. Read the comments of decl_printable_name in
 | 
|---|
 | 2931 | +   langhooks.h for more.  */
 | 
|---|
 | 2932 |  
 | 
|---|
 | 2933 |  static void
 | 
|---|
 | 2934 | -put_decl_node (tree node)
 | 
|---|
 | 2935 | +put_decl_node (tree node, int verbosity)
 | 
|---|
 | 2936 |  {
 | 
|---|
 | 2937 |    int was_pointer = 0;
 | 
|---|
 | 2938 |    if (TREE_CODE (node) == POINTER_TYPE)
 | 
|---|
 | 2939 | @@ -370,17 +373,32 @@
 | 
|---|
 | 2940 |      {
 | 
|---|
 | 2941 |        if (TREE_CODE (node) == FUNCTION_DECL)
 | 
|---|
 | 2942 |         {
 | 
|---|
 | 2943 | +         if (verbosity == 0 && DECL_NAME (node))
 | 
|---|
 | 2944 | +         /* We have been instructed to just print the bare name
 | 
|---|
 | 2945 | +            of the function.  */
 | 
|---|
 | 2946 | +           {
 | 
|---|
 | 2947 | +             put_decl_node (DECL_NAME (node), 0);
 | 
|---|
 | 2948 | +             return;
 | 
|---|
 | 2949 | +           }
 | 
|---|
 | 2950 | +
 | 
|---|
 | 2951 |           /* We want to print the type the DECL belongs to. We don't do
 | 
|---|
 | 2952 |              that when we handle constructors. */
 | 
|---|
 | 2953 |           if (! DECL_CONSTRUCTOR_P (node)
 | 
|---|
 | 2954 | -             && ! DECL_ARTIFICIAL (node) && DECL_CONTEXT (node))
 | 
|---|
 | 2955 | +             && ! DECL_ARTIFICIAL (node) && DECL_CONTEXT (node)
 | 
|---|
 | 2956 | +              /* We want to print qualified DECL names only
 | 
|---|
 | 2957 | +                 if verbosity is higher than 1.  */
 | 
|---|
 | 2958 | +              && verbosity >= 1)
 | 
|---|
 | 2959 |             {
 | 
|---|
 | 2960 | -             put_decl_node (TYPE_NAME (DECL_CONTEXT (node)));
 | 
|---|
 | 2961 | +             put_decl_node (TYPE_NAME (DECL_CONTEXT (node)),
 | 
|---|
 | 2962 | +                               verbosity);
 | 
|---|
 | 2963 |               put_decl_string (".", 1);
 | 
|---|
 | 2964 |             }
 | 
|---|
 | 2965 |           if (! DECL_CONSTRUCTOR_P (node))
 | 
|---|
 | 2966 | -           put_decl_node (DECL_NAME (node));
 | 
|---|
 | 2967 | -         if (TREE_TYPE (node) != NULL_TREE)
 | 
|---|
 | 2968 | +           put_decl_node (DECL_NAME (node), verbosity);
 | 
|---|
 | 2969 | +         if (TREE_TYPE (node) != NULL_TREE
 | 
|---|
 | 2970 | +              /* We want to print function parameters only if verbosity
 | 
|---|
 | 2971 | +                 is higher than 2.  */
 | 
|---|
 | 2972 | +              && verbosity >= 2)
 | 
|---|
 | 2973 |             {
 | 
|---|
 | 2974 |               int i = 0;
 | 
|---|
 | 2975 |               tree args = TYPE_ARG_TYPES (TREE_TYPE (node));
 | 
|---|
 | 2976 | @@ -391,19 +409,22 @@
 | 
|---|
 | 2977 |                 {
 | 
|---|
 | 2978 |                   if (i > 0)
 | 
|---|
 | 2979 |                     put_decl_string (",", 1);
 | 
|---|
 | 2980 | -                 put_decl_node (TREE_VALUE (args));
 | 
|---|
 | 2981 | +                 put_decl_node (TREE_VALUE (args), verbosity);
 | 
|---|
 | 2982 |                 }
 | 
|---|
 | 2983 |               put_decl_string (")", 1);
 | 
|---|
 | 2984 |             }
 | 
|---|
 | 2985 |         }
 | 
|---|
 | 2986 |        else
 | 
|---|
 | 2987 | -       put_decl_node (DECL_NAME (node));
 | 
|---|
 | 2988 | +       put_decl_node (DECL_NAME (node), verbosity);
 | 
|---|
 | 2989 |      }
 | 
|---|
 | 2990 |    else if (TYPE_P (node) && TYPE_NAME (node) != NULL_TREE)
 | 
|---|
 | 2991 |      {
 | 
|---|
 | 2992 | -      if (TREE_CODE (node) == RECORD_TYPE && TYPE_ARRAY_P (node))
 | 
|---|
 | 2993 | +      if (TREE_CODE (node) == RECORD_TYPE && TYPE_ARRAY_P (node)
 | 
|---|
 | 2994 | +          /* Print detailed array information only if verbosity is higher
 | 
|---|
 | 2995 | +            than 2.  */
 | 
|---|
 | 2996 | +          && verbosity >= 2)
 | 
|---|
 | 2997 |         {
 | 
|---|
 | 2998 | -         put_decl_node (TYPE_ARRAY_ELEMENT (node));
 | 
|---|
 | 2999 | +         put_decl_node (TYPE_ARRAY_ELEMENT (node), verbosity);
 | 
|---|
 | 3000 |           put_decl_string("[]", 2);
 | 
|---|
 | 3001 |         }
 | 
|---|
 | 3002 |        else if (node == promoted_byte_type_node)
 | 
|---|
 | 3003 | @@ -417,7 +438,7 @@
 | 
|---|
 | 3004 |        else if (node == void_type_node && was_pointer)
 | 
|---|
 | 3005 |         put_decl_string ("null", 4);
 | 
|---|
 | 3006 |        else
 | 
|---|
 | 3007 | -       put_decl_node (TYPE_NAME (node));
 | 
|---|
 | 3008 | +       put_decl_node (TYPE_NAME (node), verbosity);
 | 
|---|
 | 3009 |      }
 | 
|---|
 | 3010 |    else if (TREE_CODE (node) == IDENTIFIER_NODE)
 | 
|---|
 | 3011 |      put_decl_string (IDENTIFIER_POINTER (node), IDENTIFIER_LENGTH (node));
 | 
|---|
 | 3012 | @@ -434,10 +455,7 @@
 | 
|---|
 | 3013 |  lang_printable_name (tree decl, int v)
 | 
|---|
 | 3014 |  {
 | 
|---|
 | 3015 |    decl_bufpos = 0;
 | 
|---|
 | 3016 | -  if (v == 0 && TREE_CODE (decl) == FUNCTION_DECL)
 | 
|---|
 | 3017 | -    put_decl_node (DECL_NAME (decl));
 | 
|---|
 | 3018 | -  else
 | 
|---|
 | 3019 | -    put_decl_node (decl);
 | 
|---|
 | 3020 | +  put_decl_node (decl, v);
 | 
|---|
 | 3021 |    put_decl_string ("", 1);
 | 
|---|
 | 3022 |    return decl_buf;
 | 
|---|
 | 3023 |  }
 | 
|---|
 | 3024 | diff -Naur gcc-4.4.1.orig/gcc/longlong.h gcc-4.4.1/gcc/longlong.h
 | 
|---|
 | 3025 | --- gcc-4.4.1.orig/gcc/longlong.h       2009-02-12 08:30:53.000000000 -0800
 | 
|---|
 | 3026 | +++ gcc-4.4.1/gcc/longlong.h    2009-08-11 15:36:56.000000000 -0700
 | 
|---|
 | 3027 | @@ -982,7 +982,7 @@
 | 
|---|
 | 3028 |  "      or r1,%0"                                                       \
 | 
|---|
 | 3029 |         : "=r" (q), "=&z" (r)                                           \
 | 
|---|
 | 3030 |         : "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16)          \
 | 
|---|
 | 3031 | -       : "r1", "r2", "r4", "r5", "r6", "pr");                          \
 | 
|---|
 | 3032 | +       : "r1", "r2", "r4", "r5", "r6", "pr", "t");                     \
 | 
|---|
 | 3033 |    } while (0)
 | 
|---|
 | 3034 |  
 | 
|---|
 | 3035 |  #define UDIV_TIME 80
 | 
|---|
 | 3036 | @@ -990,7 +990,7 @@
 | 
|---|
 | 3037 |  #define sub_ddmmss(sh, sl, ah, al, bh, bl)                             \
 | 
|---|
 | 3038 |    __asm__ ("clrt;subc %5,%1; subc %4,%0"                               \
 | 
|---|
 | 3039 |            : "=r" (sh), "=r" (sl)                                       \
 | 
|---|
 | 3040 | -          : "0" (ah), "1" (al), "r" (bh), "r" (bl))
 | 
|---|
 | 3041 | +          : "0" (ah), "1" (al), "r" (bh), "r" (bl) : "t")
 | 
|---|
 | 3042 |  
 | 
|---|
 | 3043 |  #endif /* __sh__ */
 | 
|---|
 | 3044 |  
 | 
|---|
 | 3045 | diff -Naur gcc-4.4.1.orig/gcc/Makefile.in gcc-4.4.1/gcc/Makefile.in
 | 
|---|
 | 3046 | --- gcc-4.4.1.orig/gcc/Makefile.in      2009-05-21 16:17:37.000000000 -0700
 | 
|---|
 | 3047 | +++ gcc-4.4.1/gcc/Makefile.in   2009-07-25 10:53:35.000000000 -0700
 | 
|---|
 | 3048 | @@ -3975,7 +3975,7 @@
 | 
|---|
 | 3049 |  # These next rules exist because the output name is not the same as
 | 
|---|
 | 3050 |  # the input name, so our implicit %.pod rule will not work.
 | 
|---|
 | 3051 |  
 | 
|---|
 | 3052 | -gcc.pod: invoke.texi cppenv.texi cppopts.texi
 | 
|---|
 | 3053 | +gcc.pod: invoke.texi cppenv.texi cppopts.texi gcc-vers.texi
 | 
|---|
 | 3054 |         $(STAMP) $@
 | 
|---|
 | 3055 |         -$(TEXI2POD) $< > $@
 | 
|---|
 | 3056 |  gfdl.pod: fdl.texi
 | 
|---|
 | 3057 | diff -Naur gcc-4.4.1.orig/gcc/resource.c gcc-4.4.1/gcc/resource.c
 | 
|---|
 | 3058 | --- gcc-4.4.1.orig/gcc/resource.c       2009-05-21 16:17:37.000000000 -0700
 | 
|---|
 | 3059 | +++ gcc-4.4.1/gcc/resource.c    2009-07-22 16:22:24.000000000 -0700
 | 
|---|
 | 3060 | @@ -945,10 +945,11 @@
 | 
|---|
 | 3061 |  
 | 
|---|
 | 3062 |    /* If we found a basic block, get the live registers from it and update
 | 
|---|
 | 3063 |       them with anything set or killed between its start and the insn before
 | 
|---|
 | 3064 | -     TARGET.  Otherwise, we must assume everything is live.  */
 | 
|---|
 | 3065 | +     TARGET; this custom life analysis is really about registers so we need
 | 
|---|
 | 3066 | +     to use the LR problem.  Otherwise, we must assume everything is live.  */
 | 
|---|
 | 3067 |    if (b != -1)
 | 
|---|
 | 3068 |      {
 | 
|---|
 | 3069 | -      regset regs_live = df_get_live_in (BASIC_BLOCK (b));
 | 
|---|
 | 3070 | +      regset regs_live = DF_LR_IN (BASIC_BLOCK (b));
 | 
|---|
 | 3071 |        rtx start_insn, stop_insn;
 | 
|---|
 | 3072 |  
 | 
|---|
 | 3073 |        /* Compute hard regs live at start of block.  */
 | 
|---|
 | 3074 | @@ -1052,7 +1053,7 @@
 | 
|---|
 | 3075 |                 {
 | 
|---|
 | 3076 |                   HARD_REG_SET extra_live;
 | 
|---|
 | 3077 |  
 | 
|---|
 | 3078 | -                 REG_SET_TO_HARD_REG_SET (extra_live, df_get_live_in (bb));
 | 
|---|
 | 3079 | +                 REG_SET_TO_HARD_REG_SET (extra_live, DF_LR_IN (bb));
 | 
|---|
 | 3080 |                   IOR_HARD_REG_SET (current_live_regs, extra_live);
 | 
|---|
 | 3081 |                 }
 | 
|---|
 | 3082 |             }
 | 
|---|
 | 3083 | diff -Naur gcc-4.4.1.orig/gcc/simplify-rtx.c gcc-4.4.1/gcc/simplify-rtx.c
 | 
|---|
 | 3084 | --- gcc-4.4.1.orig/gcc/simplify-rtx.c   2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 3085 | +++ gcc-4.4.1/gcc/simplify-rtx.c        2009-09-07 13:25:52.000000000 -0700
 | 
|---|
 | 3086 | @@ -2009,6 +2009,7 @@
 | 
|---|
 | 3087 |        /* x*2 is x+x and x*(-1) is -x */
 | 
|---|
 | 3088 |        if (GET_CODE (trueop1) == CONST_DOUBLE
 | 
|---|
 | 3089 |           && SCALAR_FLOAT_MODE_P (GET_MODE (trueop1))
 | 
|---|
 | 3090 | +         && !DECIMAL_FLOAT_MODE_P (GET_MODE (trueop1))
 | 
|---|
 | 3091 |           && GET_MODE (op0) == mode)
 | 
|---|
 | 3092 |         {
 | 
|---|
 | 3093 |           REAL_VALUE_TYPE d;
 | 
|---|
 | 3094 | @@ -5243,6 +5244,7 @@
 | 
|---|
 | 3095 |        && GET_MODE_BITSIZE (innermode) >= (2 * GET_MODE_BITSIZE (outermode))
 | 
|---|
 | 3096 |        && GET_CODE (XEXP (op, 1)) == CONST_INT
 | 
|---|
 | 3097 |        && (INTVAL (XEXP (op, 1)) & (GET_MODE_BITSIZE (outermode) - 1)) == 0
 | 
|---|
 | 3098 | +      && INTVAL (XEXP (op, 1)) >= 0
 | 
|---|
 | 3099 |        && INTVAL (XEXP (op, 1)) < GET_MODE_BITSIZE (innermode)      
 | 
|---|
 | 3100 |        && byte == subreg_lowpart_offset (outermode, innermode))
 | 
|---|
 | 3101 |      {
 | 
|---|
 | 3102 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/support/impdef.a gcc-4.4.1/gcc/testsuite/ada/acats/support/impdef.a
 | 
|---|
 | 3103 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/support/impdef.a     2006-01-26 12:39:16.000000000 -0800
 | 
|---|
 | 3104 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/support/impdef.a  2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3105 | @@ -105,6 +105,8 @@
 | 
|---|
 | 3106 |     Minimum_Task_Switch : constant Duration := 0.001;
 | 
|---|
 | 3107 |     --                                         ^^^ --- MODIFY HERE AS NEEDED
 | 
|---|
 | 3108 |  
 | 
|---|
 | 3109 | +   Long_Minimum_Task_Switch : constant Duration := 0.1;
 | 
|---|
 | 3110 | +
 | 
|---|
 | 3111 |  --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
 | 
|---|
 | 3112 |  
 | 
|---|
 | 3113 |     -- This is the time required to activate another task and allow it
 | 
|---|
 | 3114 | @@ -117,13 +119,15 @@
 | 
|---|
 | 3115 |     Switch_To_New_Task : constant Duration := 0.001;
 | 
|---|
 | 3116 |     --                                        ^^^ -- MODIFY HERE AS NEEDED
 | 
|---|
 | 3117 |  
 | 
|---|
 | 3118 | +   Long_Switch_To_New_Task : constant Duration := 0.1;
 | 
|---|
 | 3119 | +
 | 
|---|
 | 3120 |  --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
 | 
|---|
 | 3121 |  
 | 
|---|
 | 3122 |     -- This is the time which will clear the queues of other tasks
 | 
|---|
 | 3123 |     -- waiting to run.  It is expected that this will be about five
 | 
|---|
 | 3124 |     -- times greater than Switch_To_New_Task.
 | 
|---|
 | 3125 |  
 | 
|---|
 | 3126 | -   Clear_Ready_Queue : constant Duration := 1.1;
 | 
|---|
 | 3127 | +   Clear_Ready_Queue : constant Duration := 0.1;
 | 
|---|
 | 3128 |     --                                       ^^^ --- MODIFY HERE AS NEEDED
 | 
|---|
 | 3129 |  
 | 
|---|
 | 3130 |  --=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
 | 
|---|
 | 3131 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c940005.a gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c940005.a
 | 
|---|
 | 3132 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c940005.a   2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3133 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c940005.a        2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3134 | @@ -85,7 +85,7 @@
 | 
|---|
 | 3135 |        -- In reality one would expect a time of 5 to 10 seconds.  In
 | 
|---|
 | 3136 |        -- the interests of speeding up the test suite a shorter time
 | 
|---|
 | 3137 |        -- is used
 | 
|---|
 | 3138 | -      Pulse_Time_Delta : constant duration := ImpDef.Switch_To_New_Task;
 | 
|---|
 | 3139 | +      Pulse_Time_Delta : constant duration := ImpDef.Long_Switch_To_New_Task;
 | 
|---|
 | 3140 |  
 | 
|---|
 | 3141 |        -- control over stopping tasks
 | 
|---|
 | 3142 |        protected Control is
 | 
|---|
 | 3143 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c940007.a gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c940007.a
 | 
|---|
 | 3144 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c940007.a   2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3145 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c940007.a        2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3146 | @@ -90,7 +90,7 @@
 | 
|---|
 | 3147 |        -- In reality one would expect a time of 5 to 10 seconds.  In
 | 
|---|
 | 3148 |        -- the interests of speeding up the test suite a shorter time
 | 
|---|
 | 3149 |        -- is used
 | 
|---|
 | 3150 | -      Pulse_Time_Delta : constant duration := ImpDef.Switch_To_New_Task;
 | 
|---|
 | 3151 | +      Pulse_Time_Delta : constant duration := ImpDef.Long_Switch_To_New_Task;
 | 
|---|
 | 3152 |  
 | 
|---|
 | 3153 |  
 | 
|---|
 | 3154 |        -- control over stopping tasks
 | 
|---|
 | 3155 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c94001c.ada gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c94001c.ada
 | 
|---|
 | 3156 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c94001c.ada 2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3157 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c94001c.ada      2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3158 | @@ -209,7 +209,7 @@
 | 
|---|
 | 3159 |  
 | 
|---|
 | 3160 |       BEGIN -- (E)
 | 
|---|
 | 3161 |            WHILE NOT(OUT_TSK'TERMINATED) AND DELAY_COUNT < 60 LOOP
 | 
|---|
 | 3162 | -               DELAY 1.0 * Impdef.One_Second;
 | 
|---|
 | 3163 | +               DELAY 1.0 * Impdef.One_Long_Second;
 | 
|---|
 | 3164 |                 DELAY_COUNT := DELAY_COUNT + 1;
 | 
|---|
 | 3165 |            END LOOP;
 | 
|---|
 | 3166 |            IF DELAY_COUNT = 60 THEN
 | 
|---|
 | 3167 | @@ -252,7 +252,7 @@
 | 
|---|
 | 3168 |  
 | 
|---|
 | 3169 |       BEGIN
 | 
|---|
 | 3170 |            WHILE NOT(OUT_TSK'TERMINATED) AND DELAY_COUNT < 60 LOOP
 | 
|---|
 | 3171 | -               DELAY 1.0 * Impdef.One_Second;
 | 
|---|
 | 3172 | +               DELAY 1.0 * Impdef.One_Long_Second;
 | 
|---|
 | 3173 |                 DELAY_COUNT := DELAY_COUNT + 1;
 | 
|---|
 | 3174 |            END LOOP;
 | 
|---|
 | 3175 |            IF DELAY_COUNT = 60 THEN
 | 
|---|
 | 3176 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c94006a.ada gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c94006a.ada
 | 
|---|
 | 3177 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c94006a.ada 2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3178 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c94006a.ada      2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3179 | @@ -42,7 +42,7 @@
 | 
|---|
 | 3180 |            SELECT
 | 
|---|
 | 3181 |                 ACCEPT E;
 | 
|---|
 | 3182 |            OR
 | 
|---|
 | 3183 | -               DELAY 30.0 * Impdef.One_Second;
 | 
|---|
 | 3184 | +               DELAY 30.0 * Impdef.One_Long_Second;
 | 
|---|
 | 3185 |            END SELECT;
 | 
|---|
 | 3186 |       END TT;
 | 
|---|
 | 3187 |  
 | 
|---|
 | 3188 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c94008c.ada gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c94008c.ada
 | 
|---|
 | 3189 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c94008c.ada 2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3190 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c94008c.ada      2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3191 | @@ -202,7 +202,7 @@
 | 
|---|
 | 3192 |                      DELAY 10.0 * Impdef.One_Second;
 | 
|---|
 | 3193 |  
 | 
|---|
 | 3194 |                      IF TERMINATE_COUNT.GET /= 1 THEN
 | 
|---|
 | 3195 | -                         DELAY 20.0 * Impdef.One_Second;
 | 
|---|
 | 3196 | +                         DELAY 20.0 * Impdef.One_Long_Second;
 | 
|---|
 | 3197 |                      END IF;
 | 
|---|
 | 3198 |  
 | 
|---|
 | 3199 |                      IF TERMINATE_COUNT.GET /= 1 THEN
 | 
|---|
 | 3200 | @@ -243,7 +243,7 @@
 | 
|---|
 | 3201 |            DELAY 10.0 * Impdef.One_Second; -- WAIT FOR T1, T2, AND T3 TO GET TO SELECT STMTS.
 | 
|---|
 | 3202 |  
 | 
|---|
 | 3203 |             IF TERMINATE_COUNT.GET /= 3 THEN
 | 
|---|
 | 3204 | -                DELAY 20.0 * Impdef.One_Second;
 | 
|---|
 | 3205 | +                DELAY 20.0 * Impdef.One_Long_Second;
 | 
|---|
 | 3206 |             END IF;
 | 
|---|
 | 3207 |  
 | 
|---|
 | 3208 |             IF TERMINATE_COUNT.GET /= 3 THEN
 | 
|---|
 | 3209 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c951002.a gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c951002.a
 | 
|---|
 | 3210 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c951002.a   2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3211 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c951002.a        2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3212 | @@ -278,14 +278,14 @@
 | 
|---|
 | 3213 |        -- Wait until the message is queued on the entry before starting
 | 
|---|
 | 3214 |        -- the Credit_Task
 | 
|---|
 | 3215 |        while not Hold.TC_Message_is_Queued loop
 | 
|---|
 | 3216 | -         delay ImpDef.Minimum_Task_Switch;   
 | 
|---|
 | 3217 | +         delay ImpDef.Long_Minimum_Task_Switch;   
 | 
|---|
 | 3218 |        end loop;
 | 
|---|
 | 3219 |        --
 | 
|---|
 | 3220 |        Credit_Task.TC_Start;
 | 
|---|
 | 3221 |  
 | 
|---|
 | 3222 |        -- Ensure the first part of the test is complete before continuing
 | 
|---|
 | 3223 |        while not (Credit_Message'terminated and Credit_Task'terminated) loop
 | 
|---|
 | 3224 | -         delay ImpDef.Minimum_Task_Switch;   
 | 
|---|
 | 3225 | +         delay ImpDef.Long_Minimum_Task_Switch;   
 | 
|---|
 | 3226 |        end loop;
 | 
|---|
 | 3227 |  
 | 
|---|
 | 3228 |        --======================================================
 | 
|---|
 | 3229 | @@ -298,12 +298,12 @@
 | 
|---|
 | 3230 |        -- for it to reach the accept statement and call Hold.Set_DB_Overload
 | 
|---|
 | 3231 |        -- before starting Debit_Message
 | 
|---|
 | 3232 |        --
 | 
|---|
 | 3233 | -      delay ImpDef.Switch_To_New_Task;
 | 
|---|
 | 3234 | +      delay ImpDef.Long_Switch_To_New_Task;
 | 
|---|
 | 3235 |  
 | 
|---|
 | 3236 |        Debit_Message.TC_Start;
 | 
|---|
 | 3237 |  
 | 
|---|
 | 3238 |        while not Debit_Task'terminated loop
 | 
|---|
 | 3239 | -         delay ImpDef.Minimum_Task_Switch;   
 | 
|---|
 | 3240 | +         delay ImpDef.Long_Minimum_Task_Switch;   
 | 
|---|
 | 3241 |        end loop;    
 | 
|---|
 | 3242 |    
 | 
|---|
 | 3243 |        Hold.Clear_DB_Overload;  -- Allow completion 
 | 
|---|
 | 3244 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c954a01.a gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c954a01.a
 | 
|---|
 | 3245 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c954a01.a   2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3246 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c954a01.a        2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3247 | @@ -148,7 +148,7 @@
 | 
|---|
 | 3248 |           end select;
 | 
|---|
 | 3249 |  
 | 
|---|
 | 3250 |           -- Allow other tasks to get control
 | 
|---|
 | 3251 | -         delay ImpDef.Minimum_Task_Switch;
 | 
|---|
 | 3252 | +         delay ImpDef.Long_Minimum_Task_Switch;
 | 
|---|
 | 3253 |  
 | 
|---|
 | 3254 |        end loop;
 | 
|---|
 | 3255 |  
 | 
|---|
 | 3256 | @@ -175,7 +175,7 @@
 | 
|---|
 | 3257 |  
 | 
|---|
 | 3258 |  procedure C954A01 is
 | 
|---|
 | 3259 |  
 | 
|---|
 | 3260 | -   Long_Enough : constant Duration := ImpDef.Switch_To_New_Task;
 | 
|---|
 | 3261 | +   Long_Enough : constant Duration := ImpDef.Long_Switch_To_New_Task;
 | 
|---|
 | 3262 |  
 | 
|---|
 | 3263 |                 --==============================================--
 | 
|---|
 | 3264 |  
 | 
|---|
 | 3265 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c96001a.ada gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c96001a.ada
 | 
|---|
 | 3266 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c96001a.ada 2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3267 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c96001a.ada      2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3268 | @@ -51,7 +51,7 @@
 | 
|---|
 | 3269 |       ---------------------------------------------
 | 
|---|
 | 3270 |  
 | 
|---|
 | 3271 |       DECLARE   -- (A)
 | 
|---|
 | 3272 | -          X : DURATION := 5.0;
 | 
|---|
 | 3273 | +          X : DURATION := 5.0 * Impdef.One_Second;
 | 
|---|
 | 3274 |            OLD_TIME : TIME;
 | 
|---|
 | 3275 |            LAPSE : DURATION;
 | 
|---|
 | 3276 |       BEGIN     -- (A)
 | 
|---|
 | 3277 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c97307a.ada gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c97307a.ada
 | 
|---|
 | 3278 | --- gcc-4.4.1.orig/gcc/testsuite/ada/acats/tests/c9/c97307a.ada 2003-10-27 03:29:00.000000000 -0800
 | 
|---|
 | 3279 | +++ gcc-4.4.1/gcc/testsuite/ada/acats/tests/c9/c97307a.ada      2009-08-08 11:30:24.000000000 -0700
 | 
|---|
 | 3280 | @@ -160,7 +160,7 @@
 | 
|---|
 | 3281 |                           EXPIRED.READ (EXPIRED_CALLS);
 | 
|---|
 | 3282 |                      EXIT WHEN E'COUNT >= DESIRED_QUEUE_LENGTH -
 | 
|---|
 | 3283 |                                           EXPIRED_CALLS;
 | 
|---|
 | 3284 | -                         DELAY 2.0 * Impdef.One_Second;
 | 
|---|
 | 3285 | +                         DELAY 2.0 * Impdef.One_Long_Second;
 | 
|---|
 | 3286 |                      END LOOP;
 | 
|---|
 | 3287 |                 EXIT WHEN DESIRED_QUEUE_LENGTH = 5;
 | 
|---|
 | 3288 |                      DISPATCH.READY;
 | 
|---|
 | 3289 | @@ -171,7 +171,7 @@
 | 
|---|
 | 3290 |                 -- LET THE TIMED ENTRY CALLS ISSUED BY CALLER1,
 | 
|---|
 | 3291 |                 -- CALLER3, AND CALLER5 EXPIRE:
 | 
|---|
 | 3292 |  
 | 
|---|
 | 3293 | -               DELAY DELAY_TIME + 10.0 * Impdef.One_Second;
 | 
|---|
 | 3294 | +               DELAY DELAY_TIME + 10.0 * Impdef.One_Long_Second;
 | 
|---|
 | 3295 |  
 | 
|---|
 | 3296 |                 -- AT THIS POINT, ALL THE TIMED ENTRY CALLS MUST HAVE
 | 
|---|
 | 3297 |                 -- EXPIRED AND BEEN REMOVED FROM THE ENTRY QUEUE FOR E,
 | 
|---|
 | 3298 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c
 | 
|---|
 | 3299 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c  2008-12-29 02:31:14.000000000 -0800
 | 
|---|
 | 3300 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/limits-fndefn.c       2009-08-28 02:57:51.000000000 -0700
 | 
|---|
 | 3301 | @@ -1,4 +1,5 @@
 | 
|---|
 | 3302 |  /* { dg-skip-if "too complex for avr and picochip" { picochip-*-* avr-*-* } { "*" } { "" } } */
 | 
|---|
 | 3303 | +/* { dg-timeout-factor 4.0 } */
 | 
|---|
 | 3304 |  #define LIM1(x) x##0, x##1, x##2, x##3, x##4, x##5, x##6, x##7, x##8, x##9,
 | 
|---|
 | 3305 |  #define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
 | 
|---|
 | 3306 |                 LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
 | 
|---|
 | 3307 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40321.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40321.c
 | 
|---|
 | 3308 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40321.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3309 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40321.c     2009-07-22 07:45:21.000000000 -0700
 | 
|---|
 | 3310 | @@ -0,0 +1,12 @@
 | 
|---|
 | 3311 | +struct X { int flag; int pos; };
 | 
|---|
 | 3312 | +int foo(struct X *a, struct X *b)
 | 
|---|
 | 3313 | +{
 | 
|---|
 | 3314 | +  while (1)
 | 
|---|
 | 3315 | +    {
 | 
|---|
 | 3316 | +      if (a->flag)
 | 
|---|
 | 3317 | +       break;
 | 
|---|
 | 3318 | +      ({ struct X *tmp = a; a = b; b = tmp; });
 | 
|---|
 | 3319 | +    }
 | 
|---|
 | 3320 | +
 | 
|---|
 | 3321 | +  return a->pos + b->pos;
 | 
|---|
 | 3322 | +}
 | 
|---|
 | 3323 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40570.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40570.c
 | 
|---|
 | 3324 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40570.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3325 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40570.c     2009-08-05 07:45:15.000000000 -0700
 | 
|---|
 | 3326 | @@ -0,0 +1,22 @@
 | 
|---|
 | 3327 | +extern void anything(int);
 | 
|---|
 | 3328 | +
 | 
|---|
 | 3329 | +static int foo(int i);
 | 
|---|
 | 3330 | +
 | 
|---|
 | 3331 | +static int bar(int i) { foo(i); }
 | 
|---|
 | 3332 | +
 | 
|---|
 | 3333 | +extern int j;
 | 
|---|
 | 3334 | +
 | 
|---|
 | 3335 | +static int foo(int i)
 | 
|---|
 | 3336 | +{
 | 
|---|
 | 3337 | +  if (j)
 | 
|---|
 | 3338 | +    anything(j);
 | 
|---|
 | 3339 | +  return bar(i);
 | 
|---|
 | 3340 | +}
 | 
|---|
 | 3341 | +
 | 
|---|
 | 3342 | +int baz()
 | 
|---|
 | 3343 | +{
 | 
|---|
 | 3344 | +  foo(0);
 | 
|---|
 | 3345 | +  if (baz())
 | 
|---|
 | 3346 | +    return 1;
 | 
|---|
 | 3347 | +  return 0;
 | 
|---|
 | 3348 | +}
 | 
|---|
 | 3349 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40676.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40676.c
 | 
|---|
 | 3350 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40676.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3351 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40676.c     2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 3352 | @@ -0,0 +1,33 @@
 | 
|---|
 | 3353 | +extern int f1();
 | 
|---|
 | 3354 | +extern int f2(void*);
 | 
|---|
 | 3355 | +extern void* f3(int);
 | 
|---|
 | 3356 | +int xmsih;
 | 
|---|
 | 3357 | +typedef unsigned short XWCHAR;
 | 
|---|
 | 3358 | +
 | 
|---|
 | 3359 | +inline unsigned int xstrlenW( const XWCHAR *str )
 | 
|---|
 | 3360 | +{
 | 
|---|
 | 3361 | +    const XWCHAR *s = str;
 | 
|---|
 | 3362 | +    while (*s) s++;
 | 
|---|
 | 3363 | +    return s - str;
 | 
|---|
 | 3364 | +}
 | 
|---|
 | 3365 | +
 | 
|---|
 | 3366 | +
 | 
|---|
 | 3367 | +static int msi_dialog_register_class( void )
 | 
|---|
 | 3368 | +{
 | 
|---|
 | 3369 | +    int cls;
 | 
|---|
 | 3370 | +
 | 
|---|
 | 3371 | +    if( !f2( &cls ) )
 | 
|---|
 | 3372 | +        return 0;
 | 
|---|
 | 3373 | +    if( !f2( &cls ) )
 | 
|---|
 | 3374 | +        return 0;
 | 
|---|
 | 3375 | +    xmsih = f1();
 | 
|---|
 | 3376 | +    if( !xmsih )
 | 
|---|
 | 3377 | +        return 0;
 | 
|---|
 | 3378 | +    return 1;
 | 
|---|
 | 3379 | +}
 | 
|---|
 | 3380 | +
 | 
|---|
 | 3381 | +void *xmsi_dialog_create(const XWCHAR* szDialogName)
 | 
|---|
 | 3382 | +{
 | 
|---|
 | 3383 | +    msi_dialog_register_class();
 | 
|---|
 | 3384 | +    return f3(xstrlenW(szDialogName));
 | 
|---|
 | 3385 | +}
 | 
|---|
 | 3386 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40692.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40692.c
 | 
|---|
 | 3387 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40692.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3388 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40692.c     2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 3389 | @@ -0,0 +1,15 @@
 | 
|---|
 | 3390 | +/* PR middle-end/40692 */
 | 
|---|
 | 3391 | +
 | 
|---|
 | 3392 | +#define M1(x) (((x) & 0x00000002) ? 0x2 : ((x) & 0x1))
 | 
|---|
 | 3393 | +#define M2(x) (((x) & 0x0000000c) ? M1 ((x) >> 2) << 2 : M1 (x))
 | 
|---|
 | 3394 | +#define M3(x) (((x) & 0x000000f0) ? M2 ((x) >> 4) << 4 : M2 (x))
 | 
|---|
 | 3395 | +#define M4(x) (((x) & 0x0000ff00) ? M3 ((x) >> 8) << 8 : M3 (x))
 | 
|---|
 | 3396 | +#define M5(x) (((x) & 0xffff0000) ? M4 ((x) >> 16) << 16 : M4 (x))
 | 
|---|
 | 3397 | +
 | 
|---|
 | 3398 | +struct A { char e; char f; };
 | 
|---|
 | 3399 | +
 | 
|---|
 | 3400 | +long
 | 
|---|
 | 3401 | +foo (void)
 | 
|---|
 | 3402 | +{
 | 
|---|
 | 3403 | +  return M5 (4096UL - (long) &((struct A *) 0)->f);
 | 
|---|
 | 3404 | +}
 | 
|---|
 | 3405 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40753.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40753.c
 | 
|---|
 | 3406 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40753.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3407 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40753.c     2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 3408 | @@ -0,0 +1,20 @@
 | 
|---|
 | 3409 | +typedef struct {
 | 
|---|
 | 3410 | +    unsigned nargs;
 | 
|---|
 | 3411 | +} ffi_cif;
 | 
|---|
 | 3412 | +typedef struct {
 | 
|---|
 | 3413 | +    char tramp[24];
 | 
|---|
 | 3414 | +    ffi_cif *cif;
 | 
|---|
 | 3415 | +} ffi_closure;
 | 
|---|
 | 3416 | +extern void *memcpy (void *, const void *, __SIZE_TYPE__);
 | 
|---|
 | 3417 | +extern void ffi_closure_LINUX64 (void);
 | 
|---|
 | 3418 | +
 | 
|---|
 | 3419 | +int
 | 
|---|
 | 3420 | +ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif)
 | 
|---|
 | 3421 | +{
 | 
|---|
 | 3422 | +  void **tramp = (void **) &closure->tramp[0];
 | 
|---|
 | 3423 | +
 | 
|---|
 | 3424 | +  memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
 | 
|---|
 | 3425 | +  closure->cif = cif;
 | 
|---|
 | 3426 | +
 | 
|---|
 | 3427 | +  return 0;
 | 
|---|
 | 3428 | +}
 | 
|---|
 | 3429 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40964.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40964.c
 | 
|---|
 | 3430 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr40964.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3431 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr40964.c     2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 3432 | @@ -0,0 +1,10 @@
 | 
|---|
 | 3433 | +struct alloc2 {
 | 
|---|
 | 3434 | +    int bla;
 | 
|---|
 | 3435 | +    char * __restrict data;
 | 
|---|
 | 3436 | +    char * __restrict data2;
 | 
|---|
 | 3437 | +};
 | 
|---|
 | 3438 | +struct alloc2 b;
 | 
|---|
 | 3439 | +void * f (void)
 | 
|---|
 | 3440 | +{
 | 
|---|
 | 3441 | +  return b.data;
 | 
|---|
 | 3442 | +}
 | 
|---|
 | 3443 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c
 | 
|---|
 | 3444 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3445 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c   2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 3446 | @@ -0,0 +1,17 @@
 | 
|---|
 | 3447 | +typedef int (*FARPROC)();
 | 
|---|
 | 3448 | +
 | 
|---|
 | 3449 | +typedef int (*LPFN_ACCEPTEX)(void*);
 | 
|---|
 | 3450 | +static LPFN_ACCEPTEX acceptex_fn;
 | 
|---|
 | 3451 | +
 | 
|---|
 | 3452 | +int xWSAIoctl(void*);
 | 
|---|
 | 3453 | +static void get_fn(FARPROC* fn)
 | 
|---|
 | 3454 | +{
 | 
|---|
 | 3455 | +    FARPROC func;
 | 
|---|
 | 3456 | +    if (!xWSAIoctl( &func))
 | 
|---|
 | 3457 | +        *fn = func;
 | 
|---|
 | 3458 | +}
 | 
|---|
 | 3459 | +
 | 
|---|
 | 3460 | +void get_fn_pointers()
 | 
|---|
 | 3461 | +{
 | 
|---|
 | 3462 | +    get_fn((FARPROC*)&acceptex_fn);
 | 
|---|
 | 3463 | +}
 | 
|---|
 | 3464 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c
 | 
|---|
 | 3465 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3466 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c   2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 3467 | @@ -0,0 +1,15 @@
 | 
|---|
 | 3468 | +typedef int *FARPROC;
 | 
|---|
 | 3469 | +static int * __restrict__ acceptex_fn;
 | 
|---|
 | 3470 | +
 | 
|---|
 | 3471 | +int xWSAIoctl(void*);
 | 
|---|
 | 3472 | +static void get_fn(FARPROC* fn)
 | 
|---|
 | 3473 | +{
 | 
|---|
 | 3474 | +  FARPROC func;
 | 
|---|
 | 3475 | +  if (!xWSAIoctl( &func))
 | 
|---|
 | 3476 | +    *fn = func;
 | 
|---|
 | 3477 | +}
 | 
|---|
 | 3478 | +
 | 
|---|
 | 3479 | +void get_fn_pointers()
 | 
|---|
 | 3480 | +{
 | 
|---|
 | 3481 | +  get_fn((FARPROC*)&acceptex_fn);
 | 
|---|
 | 3482 | +}
 | 
|---|
 | 3483 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41016.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41016.c
 | 
|---|
 | 3484 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41016.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3485 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41016.c     2009-08-09 14:39:19.000000000 -0700
 | 
|---|
 | 3486 | @@ -0,0 +1,17 @@
 | 
|---|
 | 3487 | +typedef struct _IO_FILE FILE;
 | 
|---|
 | 3488 | +void
 | 
|---|
 | 3489 | +CompareRNAStructures (FILE * ofp, int start, int L, char *ss_true, char *ss)
 | 
|---|
 | 3490 | +{
 | 
|---|
 | 3491 | +  int i;
 | 
|---|
 | 3492 | +  float agree = 0.;
 | 
|---|
 | 3493 | +  float pairs = 0.;
 | 
|---|
 | 3494 | +  float pairs_true = 0.;
 | 
|---|
 | 3495 | +  for (i = 0; i < L; i++)
 | 
|---|
 | 3496 | +    {
 | 
|---|
 | 3497 | +      pairs_true += 1.;
 | 
|---|
 | 3498 | +      agree += 1.;
 | 
|---|
 | 3499 | +    }
 | 
|---|
 | 3500 | +  if (((int) pairs % 2 != 0) || ((int) pairs_true % 2 != 0)
 | 
|---|
 | 3501 | +      || ((int) agree % 2 != 0))
 | 
|---|
 | 3502 | +    Die ("Error in CompareRNAStrutures(); odd number of paired nucleotides\n");
 | 
|---|
 | 3503 | +}
 | 
|---|
 | 3504 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41163.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41163.c
 | 
|---|
 | 3505 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41163.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3506 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41163.c     2009-08-29 19:06:32.000000000 -0700
 | 
|---|
 | 3507 | @@ -0,0 +1,10 @@
 | 
|---|
 | 3508 | +struct option {
 | 
|---|
 | 3509 | +    void *value;
 | 
|---|
 | 3510 | +};
 | 
|---|
 | 3511 | +void parse_options (struct option *);
 | 
|---|
 | 3512 | +void cmd_grep(void)
 | 
|---|
 | 3513 | +{
 | 
|---|
 | 3514 | +  struct option options[] = { { &options } };
 | 
|---|
 | 3515 | +  parse_options(options);
 | 
|---|
 | 3516 | +}
 | 
|---|
 | 3517 | +
 | 
|---|
 | 3518 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41181.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41181.c
 | 
|---|
 | 3519 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41181.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3520 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41181.c     2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 3521 | @@ -0,0 +1,10 @@
 | 
|---|
 | 3522 | +char paths[1024];
 | 
|---|
 | 3523 | +static void x264_slicetype_path(char (*best_paths)[250], int n, int length)
 | 
|---|
 | 3524 | +{
 | 
|---|
 | 3525 | +    __builtin_memcpy (best_paths[n], paths, length);
 | 
|---|
 | 3526 | +}
 | 
|---|
 | 3527 | +void x264_slicetype_analyse(int n, int length)
 | 
|---|
 | 3528 | +{
 | 
|---|
 | 3529 | +    char best_paths[250][250];
 | 
|---|
 | 3530 | +    x264_slicetype_path (best_paths, n, length);
 | 
|---|
 | 3531 | +}
 | 
|---|
 | 3532 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41282.c gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41282.c
 | 
|---|
 | 3533 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.c-torture/compile/pr41282.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3534 | +++ gcc-4.4.1/gcc/testsuite/gcc.c-torture/compile/pr41282.c     2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 3535 | @@ -0,0 +1,20 @@
 | 
|---|
 | 3536 | +struct S
 | 
|---|
 | 3537 | +{
 | 
|---|
 | 3538 | +  unsigned int iu;
 | 
|---|
 | 3539 | +};
 | 
|---|
 | 3540 | +
 | 
|---|
 | 3541 | +union U
 | 
|---|
 | 3542 | +{
 | 
|---|
 | 3543 | +  struct S s;
 | 
|---|
 | 3544 | +  signed int is;
 | 
|---|
 | 3545 | +};
 | 
|---|
 | 3546 | +
 | 
|---|
 | 3547 | +extern signed int bar ();
 | 
|---|
 | 3548 | +
 | 
|---|
 | 3549 | +struct S foo (void)
 | 
|---|
 | 3550 | +{
 | 
|---|
 | 3551 | +  union U u;
 | 
|---|
 | 3552 | +
 | 
|---|
 | 3553 | +  u.is = bar ();
 | 
|---|
 | 3554 | +  return u.s;
 | 
|---|
 | 3555 | +}
 | 
|---|
 | 3556 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20010912-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/20010912-1.c
 | 
|---|
 | 3557 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20010912-1.c    2005-10-15 18:14:19.000000000 -0700
 | 
|---|
 | 3558 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/20010912-1.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3559 | @@ -1,6 +1,5 @@
 | 
|---|
 | 3560 |  /* { dg-do run { target fpic } } */
 | 
|---|
 | 3561 |  /* { dg-options "-O2 -fpic" } */
 | 
|---|
 | 3562 | -/* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */
 | 
|---|
 | 3563 |  
 | 
|---|
 | 3564 |  extern void abort (void);
 | 
|---|
 | 3565 |  extern void exit (int);
 | 
|---|
 | 3566 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20021018-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/20021018-1.c
 | 
|---|
 | 3567 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20021018-1.c    2005-10-15 18:14:19.000000000 -0700
 | 
|---|
 | 3568 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/20021018-1.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3569 | @@ -1,6 +1,5 @@
 | 
|---|
 | 3570 |  /* { dg-do run { target fpic } } */
 | 
|---|
 | 3571 |  /* { dg-options "-O2 -fpic" } */
 | 
|---|
 | 3572 | -/* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */
 | 
|---|
 | 3573 |  
 | 
|---|
 | 3574 |  extern void abort (void);
 | 
|---|
 | 3575 |  extern void exit (int);
 | 
|---|
 | 3576 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20030213-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/20030213-1.c
 | 
|---|
 | 3577 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20030213-1.c    2005-10-15 18:14:19.000000000 -0700
 | 
|---|
 | 3578 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/20030213-1.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3579 | @@ -1,7 +1,6 @@
 | 
|---|
 | 3580 |  /* Testcase for http://gcc.gnu.org/ml/gcc-patches/2003-02/msg01017.html */
 | 
|---|
 | 3581 |  /* { dg-do link { target fpic } } */
 | 
|---|
 | 3582 |  /* { dg-options "-O -fpic" } */
 | 
|---|
 | 3583 | -/* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */
 | 
|---|
 | 3584 |  
 | 
|---|
 | 3585 |  int *g;
 | 
|---|
 | 3586 |  
 | 
|---|
 | 3587 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20030225-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/20030225-1.c
 | 
|---|
 | 3588 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20030225-1.c    2005-10-15 18:14:19.000000000 -0700
 | 
|---|
 | 3589 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/20030225-1.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3590 | @@ -5,7 +5,6 @@
 | 
|---|
 | 3591 |     and Benjamin Herrenschmidt <benh@kernel.crashing.org>.  */
 | 
|---|
 | 3592 |  /* { dg-do run { target fpic } } */
 | 
|---|
 | 3593 |  /* { dg-options "-O2 -fPIC" } */
 | 
|---|
 | 3594 | -/* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */
 | 
|---|
 | 3595 |  
 | 
|---|
 | 3596 |  extern void exit (int);
 | 
|---|
 | 3597 |  
 | 
|---|
 | 3598 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20030708-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/20030708-1.c
 | 
|---|
 | 3599 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20030708-1.c    2005-10-15 18:14:19.000000000 -0700
 | 
|---|
 | 3600 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/20030708-1.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3601 | @@ -1,7 +1,6 @@
 | 
|---|
 | 3602 |  /* PR c/11420 */
 | 
|---|
 | 3603 |  /* { dg-do link { target fpic } } */
 | 
|---|
 | 3604 |  /* { dg-options "-O2 -fpic" } */
 | 
|---|
 | 3605 | -/* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */
 | 
|---|
 | 3606 |  
 | 
|---|
 | 3607 |  void (* volatile fn) (void);
 | 
|---|
 | 3608 |  static void foo (void)
 | 
|---|
 | 3609 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20050321-2.c gcc-4.4.1/gcc/testsuite/gcc.dg/20050321-2.c
 | 
|---|
 | 3610 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20050321-2.c    2006-04-13 16:14:25.000000000 -0700
 | 
|---|
 | 3611 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/20050321-2.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3612 | @@ -5,7 +5,6 @@
 | 
|---|
 | 3613 |     figure out branch to lab is too far.  */
 | 
|---|
 | 3614 |  /* { dg-do link { target fpic } } */
 | 
|---|
 | 3615 |  /* { dg-options "-g1 -fpic" } */
 | 
|---|
 | 3616 | -/* { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))" "PIC unsupported" { xfail *-*-netware* } 0 } */
 | 
|---|
 | 3617 |  /* { dg-require-effective-target int32plus } */
 | 
|---|
 | 3618 |  
 | 
|---|
 | 3619 |  #define A(n) \
 | 
|---|
 | 3620 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20090902-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/20090902-1.c
 | 
|---|
 | 3621 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/20090902-1.c    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3622 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/20090902-1.c 2009-09-02 11:47:29.000000000 -0700
 | 
|---|
 | 3623 | @@ -0,0 +1,3 @@
 | 
|---|
 | 3624 | +/* { dg-do compile } */
 | 
|---|
 | 3625 | +#define STRING(x) #x
 | 
|---|
 | 3626 | +char buf[] = STRING(L'\x123');
 | 
|---|
 | 3627 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-15.c gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-15.c
 | 
|---|
 | 3628 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-15.c     2009-01-25 12:15:44.000000000 -0800
 | 
|---|
 | 3629 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-15.c  2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3630 | @@ -1,6 +1,7 @@
 | 
|---|
 | 3631 |  /* { dg-do compile } */
 | 
|---|
 | 3632 |  /* Remove pedantic.  Allow the GCC extension to use char for bitfields.  */
 | 
|---|
 | 3633 |  /* { dg-options "" } */
 | 
|---|
 | 3634 | +/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 3635 |  
 | 
|---|
 | 3636 |  struct t
 | 
|---|
 | 3637 |  {
 | 
|---|
 | 3638 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-16.c gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-16.c
 | 
|---|
 | 3639 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-16.c     2009-01-22 22:29:54.000000000 -0800
 | 
|---|
 | 3640 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-16.c  2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3641 | @@ -1,5 +1,6 @@
 | 
|---|
 | 3642 |  /* { dg-do compile } */
 | 
|---|
 | 3643 |  /* { dg-options "-Wno-packed-bitfield-compat" } */
 | 
|---|
 | 3644 | +/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 3645 |  
 | 
|---|
 | 3646 |  struct t
 | 
|---|
 | 3647 |  {
 | 
|---|
 | 3648 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-17.c gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-17.c
 | 
|---|
 | 3649 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-17.c     2009-01-25 12:15:44.000000000 -0800
 | 
|---|
 | 3650 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-17.c  2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3651 | @@ -1,5 +1,6 @@
 | 
|---|
 | 3652 |  /* { dg-do compile } */
 | 
|---|
 | 3653 |  /* { dg-options "" } */
 | 
|---|
 | 3654 | +/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 3655 |  
 | 
|---|
 | 3656 |  struct t
 | 
|---|
 | 3657 |  {
 | 
|---|
 | 3658 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-18.c gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-18.c
 | 
|---|
 | 3659 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/bitfld-18.c     2009-01-22 22:29:54.000000000 -0800
 | 
|---|
 | 3660 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/bitfld-18.c  2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 3661 | @@ -1,5 +1,6 @@
 | 
|---|
 | 3662 |  /* { dg-do compile } */
 | 
|---|
 | 3663 |  /* { dg-options "-Wno-packed-bitfield-compat" } */
 | 
|---|
 | 3664 | +/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 3665 |  
 | 
|---|
 | 3666 |  struct t
 | 
|---|
 | 3667 |  {
 | 
|---|
 | 3668 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/builtins-10.c gcc-4.4.1/gcc/testsuite/gcc.dg/builtins-10.c
 | 
|---|
 | 3669 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/builtins-10.c   2005-03-09 12:11:48.000000000 -0800
 | 
|---|
 | 3670 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/builtins-10.c        2009-08-24 02:52:03.000000000 -0700
 | 
|---|
 | 3671 | @@ -25,7 +25,7 @@
 | 
|---|
 | 3672 |      link_error ();
 | 
|---|
 | 3673 |  
 | 
|---|
 | 3674 |    if (pow(pow(x,4.0),0.25) != x)
 | 
|---|
 | 3675 | -    link_error ();
 | 
|---|
 | 3676 | +    /* XFAIL.  PR41098.  */;
 | 
|---|
 | 3677 |  }
 | 
|---|
 | 3678 |  
 | 
|---|
 | 3679 |  void test2(double x, double y, double z)
 | 
|---|
 | 3680 | @@ -42,7 +42,7 @@
 | 
|---|
 | 3681 |    if (pow(sqrt(x),y) != pow(x,y*0.5))
 | 
|---|
 | 3682 |      link_error ();
 | 
|---|
 | 3683 |  
 | 
|---|
 | 3684 | -  if (pow(pow(x,y),z) != pow(x,y*z))
 | 
|---|
 | 3685 | +  if (pow(pow(fabs(x),y),z) != pow(fabs(x),y*z))
 | 
|---|
 | 3686 |      link_error ();
 | 
|---|
 | 3687 |  }
 | 
|---|
 | 3688 |  
 | 
|---|
 | 3689 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/builtins-config.h gcc-4.4.1/gcc/testsuite/gcc.dg/builtins-config.h
 | 
|---|
 | 3690 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/builtins-config.h       2008-06-18 14:41:13.000000000 -0700
 | 
|---|
 | 3691 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/builtins-config.h    2009-08-30 15:45:18.000000000 -0700
 | 
|---|
 | 3692 | @@ -1,4 +1,4 @@
 | 
|---|
 | 3693 | -/* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation.
 | 
|---|
 | 3694 | +/* Copyright (C) 2003, 2004, 2005, 2006, 2009 Free Software Foundation.
 | 
|---|
 | 3695 |  
 | 
|---|
 | 3696 |     Define macros useful in tests for bulitin functions.  */
 | 
|---|
 | 3697 |  
 | 
|---|
 | 3698 | @@ -15,8 +15,8 @@
 | 
|---|
 | 3699 |  /* Irix6 doesn't have the entire C99 runtime.  */
 | 
|---|
 | 3700 |  #elif defined(__AVR__)
 | 
|---|
 | 3701 |  /* AVR doesn't have the entire C99 runtime.  */
 | 
|---|
 | 3702 | -#elif defined(__FreeBSD__) && (__FreeBSD__ < 5)
 | 
|---|
 | 3703 | -/* FreeBSD before version 5 doesn't have the entire C99 runtime. */
 | 
|---|
 | 3704 | +#elif defined(__FreeBSD__)
 | 
|---|
 | 3705 | +/* FreeBSD up to at least version 8 lacks support for cexp and friends.  */
 | 
|---|
 | 3706 |  #elif defined(__netware__)
 | 
|---|
 | 3707 |  /* NetWare doesn't have the entire C99 runtime.  */
 | 
|---|
 | 3708 |  #elif defined(__vxworks)
 | 
|---|
 | 3709 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/c90-const-expr-2.c gcc-4.4.1/gcc/testsuite/gcc.dg/c90-const-expr-2.c
 | 
|---|
 | 3710 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/c90-const-expr-2.c      2008-04-25 01:40:10.000000000 -0700
 | 
|---|
 | 3711 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/c90-const-expr-2.c   2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 3712 | @@ -14,8 +14,10 @@
 | 
|---|
 | 3713 |  int b;
 | 
|---|
 | 3714 |  long *c;
 | 
|---|
 | 3715 |  
 | 
|---|
 | 3716 | -#if defined(_LP64) || defined(_WIN64)
 | 
|---|
 | 3717 | +#if defined(_LP64)
 | 
|---|
 | 3718 |  #define ZERO 0L
 | 
|---|
 | 3719 | +#elif defined(_WIN64)
 | 
|---|
 | 3720 | +#define ZERO 0LL
 | 
|---|
 | 3721 |  #else
 | 
|---|
 | 3722 |  #define ZERO 0
 | 
|---|
 | 3723 |  #endif
 | 
|---|
 | 3724 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/c99-const-expr-2.c gcc-4.4.1/gcc/testsuite/gcc.dg/c99-const-expr-2.c
 | 
|---|
 | 3725 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/c99-const-expr-2.c      2008-04-25 01:40:10.000000000 -0700
 | 
|---|
 | 3726 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/c99-const-expr-2.c   2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 3727 | @@ -14,8 +14,10 @@
 | 
|---|
 | 3728 |  int b;
 | 
|---|
 | 3729 |  long *c;
 | 
|---|
 | 3730 |  
 | 
|---|
 | 3731 | -#if defined(_LP64) || defined(_WIN64)
 | 
|---|
 | 3732 | +#if defined(_LP64)
 | 
|---|
 | 3733 |  #define ZERO 0L
 | 
|---|
 | 3734 | +#elif defined(_WIN64)
 | 
|---|
 | 3735 | +#define ZERO 0LL
 | 
|---|
 | 3736 |  #else
 | 
|---|
 | 3737 |  #define ZERO 0
 | 
|---|
 | 3738 |  #endif
 | 
|---|
 | 3739 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/cdce1.c gcc-4.4.1/gcc/testsuite/gcc.dg/cdce1.c
 | 
|---|
 | 3740 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/cdce1.c 2009-02-05 03:59:20.000000000 -0800
 | 
|---|
 | 3741 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/cdce1.c      2009-07-28 09:11:21.000000000 -0700
 | 
|---|
 | 3742 | @@ -1,7 +1,8 @@
 | 
|---|
 | 3743 |  /* { dg-do  run  } */
 | 
|---|
 | 3744 |  /* { dg-skip-if "doubles are floats" { "avr-*-*" "m32c-*-*" } { "*" } { "" } } */
 | 
|---|
 | 3745 |  /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -lm" } */
 | 
|---|
 | 3746 | -/* { dg-final { scan-tree-dump  "cdce1.c:16: note: function call is shrink-wrapped into error conditions\."  "cdce" } } */
 | 
|---|
 | 3747 | +/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details" { target *-*-netware* } } */
 | 
|---|
 | 3748 | +/* { dg-final { scan-tree-dump  "cdce1.c:17: note: function call is shrink-wrapped into error conditions\."  "cdce" } } */
 | 
|---|
 | 3749 |  /* { dg-final { cleanup-tree-dump "cdce" } } */
 | 
|---|
 | 3750 |  
 | 
|---|
 | 3751 |  #include <stdlib.h>
 | 
|---|
 | 3752 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/cdce2.c gcc-4.4.1/gcc/testsuite/gcc.dg/cdce2.c
 | 
|---|
 | 3753 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/cdce2.c 2008-06-18 14:41:13.000000000 -0700
 | 
|---|
 | 3754 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/cdce2.c      2009-07-28 09:11:21.000000000 -0700
 | 
|---|
 | 3755 | @@ -1,7 +1,8 @@
 | 
|---|
 | 3756 |  /* { dg-do  run  } */
 | 
|---|
 | 3757 |  /* { dg-skip-if "doubles are floats" { "avr-*-*" } { "*" } { "" } } */
 | 
|---|
 | 3758 |  /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -lm" } */
 | 
|---|
 | 3759 | -/* { dg-final { scan-tree-dump  "cdce2.c:16: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
 | 
|---|
 | 3760 | +/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details" { target *-*-netware* } } */
 | 
|---|
 | 3761 | +/* { dg-final { scan-tree-dump  "cdce2.c:17: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
 | 
|---|
 | 3762 |  /* { dg-final { cleanup-tree-dump "cdce" } } */
 | 
|---|
 | 3763 |   
 | 
|---|
 | 3764 |  #include <stdlib.h>
 | 
|---|
 | 3765 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/debug/20020224-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/debug/20020224-1.c
 | 
|---|
 | 3766 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/debug/20020224-1.c      2002-02-26 11:05:26.000000000 -0800
 | 
|---|
 | 3767 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/debug/20020224-1.c   2009-08-16 02:07:40.000000000 -0700
 | 
|---|
 | 3768 | @@ -1,9 +1,13 @@
 | 
|---|
 | 3769 | +/* { dg-options "-g3 -O" } */
 | 
|---|
 | 3770 |  /* { dg-do compile } */
 | 
|---|
 | 3771 |  
 | 
|---|
 | 3772 | -/* Here's the deal: f3 is not inlined because it's too big, but f2 and
 | 
|---|
 | 3773 | -   f1 are inlined into it.  We used to fail to emit debugging info for
 | 
|---|
 | 3774 | -   t1, because it was moved inside the (inlined) block of f1, marked
 | 
|---|
 | 3775 | -   as abstract, then we'd crash.  */
 | 
|---|
 | 3776 | +/* Here's the deal: f4 is inlined into main, f3 is inlined into f4, f2 is
 | 
|---|
 | 3777 | +   inlined into f1. The DIE of main should contain DW_TAG_inlined_subroutines
 | 
|---|
 | 3778 | +   children for f4, f3, f2 and f1. Also, there should be a DIE representing
 | 
|---|
 | 3779 | +   and out of line instance of f4, aside the DIE representing its abstract
 | 
|---|
 | 3780 | +   instance.
 | 
|---|
 | 3781 | +   We used to fail to emit debugging info for t1, because it was moved
 | 
|---|
 | 3782 | +   inside the (inlined) block of f1, marked as abstract, then we'd crash.  */
 | 
|---|
 | 3783 |  
 | 
|---|
 | 3784 |  #define UNUSED __attribute__((unused))
 | 
|---|
 | 3785 |  #define EXT __extension__
 | 
|---|
 | 3786 | @@ -58,3 +62,10 @@
 | 
|---|
 | 3787 |  
 | 
|---|
 | 3788 |    return;
 | 
|---|
 | 3789 |  }
 | 
|---|
 | 3790 | +
 | 
|---|
 | 3791 | +int
 | 
|---|
 | 3792 | +main ()
 | 
|---|
 | 3793 | +{
 | 
|---|
 | 3794 | +    int foo = 1;
 | 
|---|
 | 3795 | +    f4 ();
 | 
|---|
 | 3796 | +}
 | 
|---|
 | 3797 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c gcc-4.4.1/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c
 | 
|---|
 | 3798 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c  1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3799 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c       2009-08-17 03:04:21.000000000 -0700
 | 
|---|
 | 3800 | @@ -0,0 +1,70 @@
 | 
|---|
 | 3801 | +/* Contributed by Dodji Seketeli <dodji@redhat.com>
 | 
|---|
 | 3802 | +   Origin: PR debug/37801
 | 
|---|
 | 3803 | +
 | 
|---|
 | 3804 | +  Abstract instances (DW_TAG_subroutines having the DW_AT_inline attribute)
 | 
|---|
 | 3805 | +  of second and first were having a DW_TAG_lexical_block DIE wrongly
 | 
|---|
 | 3806 | +  representing the inlined calls to third (in second) and to
 | 
|---|
 | 3807 | +  second (in first). At the same time, main didn't have children
 | 
|---|
 | 3808 | +  DW_TAG_inlined_subroutine DIEs representing the inlined calls to
 | 
|---|
 | 3809 | +  first, second and third.
 | 
|---|
 | 3810 | +
 | 
|---|
 | 3811 | +  The ideal goal here is to test that we have no superfluous
 | 
|---|
 | 3812 | +  DW_TAG_lexical_block DIE anymore, that abstract instances DIEs have
 | 
|---|
 | 3813 | +  no descendant DIE with a DW_AT_abstract_origin attribute, and that main has
 | 
|---|
 | 3814 | +  properly nested DW_TAG_inlined_subroutine DIEs for third, second and first.
 | 
|---|
 | 3815 | +*/
 | 
|---|
 | 3816 | +
 | 
|---|
 | 3817 | +/* { dg-options "-O -g3 -dA" } */
 | 
|---|
 | 3818 | +/* { dg-do compile } */
 | 
|---|
 | 3819 | +
 | 
|---|
 | 3820 | +/* There are 6 inlined subroutines:
 | 
|---|
 | 3821 | +   - One for each subroutine inlined into main, that's 3.
 | 
|---|
 | 3822 | +   - One for earch subroutine inline into the out of line instances
 | 
|---|
 | 3823 | +     of third, second and first.  */
 | 
|---|
 | 3824 | +/* { dg-final { scan-assembler-times "\\(DIE \\(.*?\\) DW_TAG_inlined_subroutine" 6 } } */
 | 
|---|
 | 3825 | +
 | 
|---|
 | 3826 | +/* Likewise we should have 6 DW_TAG_lexical_block DIEs:
 | 
|---|
 | 3827 | +   - One for each subroutine inlined into main, so that's 3.
 | 
|---|
 | 3828 | +   - One for each subroutine inlined in the out of line instances
 | 
|---|
 | 3829 | +     of third, second and first, that's 3.
 | 
|---|
 | 3830 | +*/
 | 
|---|
 | 3831 | +/* { dg-final { scan-assembler-times "\\(DIE \\(.*?\\) DW_TAG_lexical_block" 6 } } */
 | 
|---|
 | 3832 | +
 | 
|---|
 | 3833 | +
 | 
|---|
 | 3834 | +/* There are 3 DW_AT_inline attributes: one per abstract inline instance.
 | 
|---|
 | 3835 | +   The value of the attribute must be 0x3, meaning the function was
 | 
|---|
 | 3836 | +   actually inlined.  */
 | 
|---|
 | 3837 | +/* { dg-final { scan-assembler-times "byte.*?0x3.*? DW_AT_inline" 3 } } */
 | 
|---|
 | 3838 | +
 | 
|---|
 | 3839 | +
 | 
|---|
 | 3840 | +inline void
 | 
|---|
 | 3841 | +third (int arg3)
 | 
|---|
 | 3842 | +{
 | 
|---|
 | 3843 | +  int var3 = arg3;
 | 
|---|
 | 3844 | +  int* a = 0;
 | 
|---|
 | 3845 | +  a[0] = var3;
 | 
|---|
 | 3846 | +}
 | 
|---|
 | 3847 | +
 | 
|---|
 | 3848 | +inline void
 | 
|---|
 | 3849 | +second (int arg2)
 | 
|---|
 | 3850 | +{
 | 
|---|
 | 3851 | +  int var2 = arg2;
 | 
|---|
 | 3852 | +  third (var2+1);
 | 
|---|
 | 3853 | +}
 | 
|---|
 | 3854 | +
 | 
|---|
 | 3855 | +inline void
 | 
|---|
 | 3856 | +first (int arg1)
 | 
|---|
 | 3857 | +{
 | 
|---|
 | 3858 | +  int var1 = arg1;
 | 
|---|
 | 3859 | +  second (var1+1);
 | 
|---|
 | 3860 | +}
 | 
|---|
 | 3861 | +
 | 
|---|
 | 3862 | +int
 | 
|---|
 | 3863 | +main ()
 | 
|---|
 | 3864 | +{
 | 
|---|
 | 3865 | +  int some_int = 1;
 | 
|---|
 | 3866 | +  first (some_int);
 | 
|---|
 | 3867 | +  return 0;
 | 
|---|
 | 3868 | +}
 | 
|---|
 | 3869 | +
 | 
|---|
 | 3870 | +
 | 
|---|
 | 3871 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/dfp/pr39902.c gcc-4.4.1/gcc/testsuite/gcc.dg/dfp/pr39902.c
 | 
|---|
 | 3872 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/dfp/pr39902.c   2009-06-29 10:13:33.000000000 -0700
 | 
|---|
 | 3873 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/dfp/pr39902.c        2009-07-30 10:08:09.000000000 -0700
 | 
|---|
 | 3874 | @@ -189,7 +189,7 @@
 | 
|---|
 | 3875 |    if (COMPARE128 (a128, p128_2_0))
 | 
|---|
 | 3876 |      FAILURE
 | 
|---|
 | 3877 |  
 | 
|---|
 | 3878 | -  a128.d = p128_2_0.d * 1.0DD;
 | 
|---|
 | 3879 | +  a128.d = p128_2_0.d * 1.0DL;
 | 
|---|
 | 3880 |    if (COMPARE128 (a128, p128_2_0))
 | 
|---|
 | 3881 |      FAILURE
 | 
|---|
 | 3882 |  
 | 
|---|
 | 3883 | @@ -197,7 +197,7 @@
 | 
|---|
 | 3884 |    if (COMPARE128 (a128, m128_2_0))
 | 
|---|
 | 3885 |      FAILURE
 | 
|---|
 | 3886 |  
 | 
|---|
 | 3887 | -  a128.d = p128_2_0.d * -1.0DD;
 | 
|---|
 | 3888 | +  a128.d = p128_2_0.d * -1.0DL;
 | 
|---|
 | 3889 |    if (COMPARE128 (a128, m128_2_0))
 | 
|---|
 | 3890 |      FAILURE
 | 
|---|
 | 3891 |  
 | 
|---|
 | 3892 | @@ -208,7 +208,7 @@
 | 
|---|
 | 3893 |    if (! (COMPARE128 (a128, p128_2_0)))
 | 
|---|
 | 3894 |      FAILURE
 | 
|---|
 | 3895 |  
 | 
|---|
 | 3896 | -  a128.d = p128_2_0.d * 1.DD;
 | 
|---|
 | 3897 | +  a128.d = p128_2_0.d * 1.DL;
 | 
|---|
 | 3898 |    if (! (COMPARE128 (a128, p128_2_0)))
 | 
|---|
 | 3899 |      FAILURE
 | 
|---|
 | 3900 |  
 | 
|---|
 | 3901 | @@ -216,7 +216,7 @@
 | 
|---|
 | 3902 |    if (! (COMPARE128 (a128, m128_2_0)))
 | 
|---|
 | 3903 |      FAILURE
 | 
|---|
 | 3904 |  
 | 
|---|
 | 3905 | -  a128.d = p128_2_0.d * -1.DD;
 | 
|---|
 | 3906 | +  a128.d = p128_2_0.d * -1.DL;
 | 
|---|
 | 3907 |    if (! (COMPARE128 (a128, m128_2_0)))
 | 
|---|
 | 3908 |      FAILURE
 | 
|---|
 | 3909 |  }
 | 
|---|
 | 3910 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/large-size-array-2.c gcc-4.4.1/gcc/testsuite/gcc.dg/large-size-array-2.c
 | 
|---|
 | 3911 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/large-size-array-2.c    2008-04-26 12:14:46.000000000 -0700
 | 
|---|
 | 3912 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/large-size-array-2.c 2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 3913 | @@ -4,4 +4,4 @@
 | 
|---|
 | 3914 |  static char * name[] = {
 | 
|---|
 | 3915 |      [0x80000000]  = "bar"
 | 
|---|
 | 3916 |    };
 | 
|---|
 | 3917 | -/* { dg-error "too large" "" { target { { ! lp64 } || x86_64-*-mingw* } }  6 } */
 | 
|---|
 | 3918 | +/* { dg-error "too large" "" { target { { ! lp64 } && { ! llp64 } } }  6 } */
 | 
|---|
 | 3919 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/large-size-array-4.c gcc-4.4.1/gcc/testsuite/gcc.dg/large-size-array-4.c
 | 
|---|
 | 3920 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/large-size-array-4.c    2008-04-26 12:14:46.000000000 -0700
 | 
|---|
 | 3921 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/large-size-array-4.c 2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 3922 | @@ -4,4 +4,4 @@
 | 
|---|
 | 3923 |  static char * name[] = {
 | 
|---|
 | 3924 |      [0x80000000]  = "bar"
 | 
|---|
 | 3925 |    };
 | 
|---|
 | 3926 | -/* { dg-error "too large" "" { target { { ! lp64 } || x86_64-*-mingw* } }  6 } */
 | 
|---|
 | 3927 | +/* { dg-error "too large" "" { target { { ! lp64 } && { ! llp64 } } }  6 } */
 | 
|---|
 | 3928 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr40861.c gcc-4.4.1/gcc/testsuite/gcc.dg/pr40861.c
 | 
|---|
 | 3929 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr40861.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3930 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/pr40861.c    2009-09-07 13:25:52.000000000 -0700
 | 
|---|
 | 3931 | @@ -0,0 +1,7 @@
 | 
|---|
 | 3932 | +/* { dg-do compile } */
 | 
|---|
 | 3933 | +/* { dg-options "-O" } */
 | 
|---|
 | 3934 | +
 | 
|---|
 | 3935 | +int foo(int i)
 | 
|---|
 | 3936 | +{
 | 
|---|
 | 3937 | +  return (1LL >> 128 * i) && i;
 | 
|---|
 | 3938 | +}
 | 
|---|
 | 3939 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr40971.c gcc-4.4.1/gcc/testsuite/gcc.dg/pr40971.c
 | 
|---|
 | 3940 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr40971.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3941 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/pr40971.c    2009-08-18 04:43:16.000000000 -0700
 | 
|---|
 | 3942 | @@ -0,0 +1,23 @@
 | 
|---|
 | 3943 | +/* PR target/40971 */
 | 
|---|
 | 3944 | +/* { dg-do compile } */
 | 
|---|
 | 3945 | +/* { dg-options "-O -fstack-protector -fno-strict-aliasing" } */
 | 
|---|
 | 3946 | +/* { dg-require-effective-target fstack_protector } */
 | 
|---|
 | 3947 | +
 | 
|---|
 | 3948 | +extern void bar (char *);
 | 
|---|
 | 3949 | +
 | 
|---|
 | 3950 | +void
 | 
|---|
 | 3951 | +foo (int f, long a)
 | 
|---|
 | 3952 | +{
 | 
|---|
 | 3953 | +  {
 | 
|---|
 | 3954 | +    char d[32768];
 | 
|---|
 | 3955 | +    bar (d);
 | 
|---|
 | 3956 | +  }
 | 
|---|
 | 3957 | +  double b = f;
 | 
|---|
 | 3958 | +  while (a)
 | 
|---|
 | 3959 | +    {
 | 
|---|
 | 3960 | +      char c[sizeof (double)];
 | 
|---|
 | 3961 | +      __builtin_memcpy (c, &b, sizeof (c));
 | 
|---|
 | 3962 | +      if (*(double *) c != 2.0)
 | 
|---|
 | 3963 | +       break;
 | 
|---|
 | 3964 | +    }
 | 
|---|
 | 3965 | +}
 | 
|---|
 | 3966 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr41033.c gcc-4.4.1/gcc/testsuite/gcc.dg/pr41033.c
 | 
|---|
 | 3967 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr41033.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3968 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/pr41033.c    2009-08-12 23:28:28.000000000 -0700
 | 
|---|
 | 3969 | @@ -0,0 +1,24 @@
 | 
|---|
 | 3970 | +/* { dg-options "-O1 -fno-strict-aliasing" } */
 | 
|---|
 | 3971 | +/* PR rtl-optimization/41033 */
 | 
|---|
 | 3972 | +
 | 
|---|
 | 3973 | +struct X {
 | 
|---|
 | 3974 | +  int i;
 | 
|---|
 | 3975 | +  int j;
 | 
|---|
 | 3976 | +};
 | 
|---|
 | 3977 | +
 | 
|---|
 | 3978 | +int foo(struct X *p, struct X *q)
 | 
|---|
 | 3979 | +{
 | 
|---|
 | 3980 | +  p->j = 1;
 | 
|---|
 | 3981 | +  q->i = 0;
 | 
|---|
 | 3982 | +  return p->j;
 | 
|---|
 | 3983 | +}
 | 
|---|
 | 3984 | +
 | 
|---|
 | 3985 | +extern void abort (void);
 | 
|---|
 | 3986 | +
 | 
|---|
 | 3987 | +int main()
 | 
|---|
 | 3988 | +{
 | 
|---|
 | 3989 | +  struct X x;
 | 
|---|
 | 3990 | +  if (foo (&x, (struct X *)&x.j) != 0)
 | 
|---|
 | 3991 | +    abort ();
 | 
|---|
 | 3992 | +  return 0;
 | 
|---|
 | 3993 | +}
 | 
|---|
 | 3994 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr41123.c gcc-4.4.1/gcc/testsuite/gcc.dg/pr41123.c
 | 
|---|
 | 3995 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr41123.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 3996 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/pr41123.c    2009-08-19 15:52:11.000000000 -0700
 | 
|---|
 | 3997 | @@ -0,0 +1,46 @@
 | 
|---|
 | 3998 | +/* PR middle-end/41123 */
 | 
|---|
 | 3999 | +/* { dg-do compile } */
 | 
|---|
 | 4000 | +/* { dg-options "-O2 -fno-strict-aliasing" } */
 | 
|---|
 | 4001 | +
 | 
|---|
 | 4002 | +struct S { char a, b, c, d, e, f, g, h; };
 | 
|---|
 | 4003 | +struct T { int a, b; };
 | 
|---|
 | 4004 | +
 | 
|---|
 | 4005 | +struct S
 | 
|---|
 | 4006 | +f1 (float _Complex x)
 | 
|---|
 | 4007 | +{
 | 
|---|
 | 4008 | +  return *(struct S *) & x;
 | 
|---|
 | 4009 | +}
 | 
|---|
 | 4010 | +
 | 
|---|
 | 4011 | +int
 | 
|---|
 | 4012 | +f2 (float _Complex x)
 | 
|---|
 | 4013 | +{
 | 
|---|
 | 4014 | +  struct S f = f1 (x);
 | 
|---|
 | 4015 | +  return f.b;
 | 
|---|
 | 4016 | +}
 | 
|---|
 | 4017 | +
 | 
|---|
 | 4018 | +struct T
 | 
|---|
 | 4019 | +f3 (float _Complex x)
 | 
|---|
 | 4020 | +{
 | 
|---|
 | 4021 | +  return *(struct T *) & x;
 | 
|---|
 | 4022 | +}
 | 
|---|
 | 4023 | +
 | 
|---|
 | 4024 | +int
 | 
|---|
 | 4025 | +f4 (float _Complex x)
 | 
|---|
 | 4026 | +{
 | 
|---|
 | 4027 | +  struct T f = f3 (x);
 | 
|---|
 | 4028 | +  return f.a;
 | 
|---|
 | 4029 | +}
 | 
|---|
 | 4030 | +
 | 
|---|
 | 4031 | +int
 | 
|---|
 | 4032 | +f5 (float _Complex x)
 | 
|---|
 | 4033 | +{
 | 
|---|
 | 4034 | +  struct T f = f3 (x);
 | 
|---|
 | 4035 | +  return f.b;
 | 
|---|
 | 4036 | +}
 | 
|---|
 | 4037 | +
 | 
|---|
 | 4038 | +struct T
 | 
|---|
 | 4039 | +f6 (float _Complex x)
 | 
|---|
 | 4040 | +{
 | 
|---|
 | 4041 | +  struct T f = f3 (x);
 | 
|---|
 | 4042 | +  return f;
 | 
|---|
 | 4043 | +}
 | 
|---|
 | 4044 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr41232.c gcc-4.4.1/gcc/testsuite/gcc.dg/pr41232.c
 | 
|---|
 | 4045 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/pr41232.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4046 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/pr41232.c    2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 4047 | @@ -0,0 +1,14 @@
 | 
|---|
 | 4048 | +/* { dg-do compile } */
 | 
|---|
 | 4049 | +/* { dg-options "-O1 -g" } */
 | 
|---|
 | 4050 | +extern int atoi (const char *);
 | 
|---|
 | 4051 | +extern int sprintf (char *, const char *, ...);
 | 
|---|
 | 4052 | +void malloc_init() {
 | 
|---|
 | 4053 | +  char *cptr;
 | 
|---|
 | 4054 | +  char buf[1];
 | 
|---|
 | 4055 | +  int tmbd = atoi(cptr);
 | 
|---|
 | 4056 | +  if (tmbd > 0)
 | 
|---|
 | 4057 | +    tmbd = (tmbd <= 124) ? tmbd : 124;
 | 
|---|
 | 4058 | +   else
 | 
|---|
 | 4059 | +    tmbd = 0;
 | 
|---|
 | 4060 | +   sprintf(buf, "%d\n", tmbd);
 | 
|---|
 | 4061 | +}
 | 
|---|
 | 4062 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/special/gcsec-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/special/gcsec-1.c
 | 
|---|
 | 4063 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/special/gcsec-1.c       2007-05-07 11:28:41.000000000 -0700
 | 
|---|
 | 4064 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/special/gcsec-1.c    2009-07-25 06:54:21.000000000 -0700
 | 
|---|
 | 4065 | @@ -3,10 +3,8 @@
 | 
|---|
 | 4066 |  /* { dg-do run { xfail rs6000-*-aix* powerpc*-*-aix* } } */
 | 
|---|
 | 4067 |  /* { dg-require-gc-sections "" } */
 | 
|---|
 | 4068 |  
 | 
|---|
 | 4069 | -/* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections -static" } */
 | 
|---|
 | 4070 | -/* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections -static" { target native } } */
 | 
|---|
 | 4071 | -/* Solaris 10 does not support static linking; there is no libc.a.  */
 | 
|---|
 | 4072 | -/* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections" { target *-*-netware* i?86-*-solaris2.1[0-9] } } */
 | 
|---|
 | 4073 | +/* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections" } */
 | 
|---|
 | 4074 | +/* { dg-options "-ffunction-sections -fdata-sections -Wl,--gc-sections -static" { target static } } */
 | 
|---|
 | 4075 |  
 | 
|---|
 | 4076 |  #include <stdlib.h>
 | 
|---|
 | 4077 |  
 | 
|---|
 | 4078 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/ssp-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/ssp-1.c
 | 
|---|
 | 4079 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/ssp-1.c 2007-03-28 16:08:26.000000000 -0700
 | 
|---|
 | 4080 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/ssp-1.c      2009-08-10 10:35:05.000000000 -0700
 | 
|---|
 | 4081 | @@ -4,7 +4,7 @@
 | 
|---|
 | 4082 |  
 | 
|---|
 | 4083 |  #include <stdlib.h>
 | 
|---|
 | 4084 |  
 | 
|---|
 | 4085 | -static void
 | 
|---|
 | 4086 | +void
 | 
|---|
 | 4087 |  __stack_chk_fail (void)
 | 
|---|
 | 4088 |  {
 | 
|---|
 | 4089 |    exit (0); /* pass */
 | 
|---|
 | 4090 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/builtin-power-1.c gcc-4.4.1/gcc/testsuite/gcc.dg/torture/builtin-power-1.c
 | 
|---|
 | 4091 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/builtin-power-1.c       2007-09-22 01:25:43.000000000 -0700
 | 
|---|
 | 4092 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/torture/builtin-power-1.c    2009-08-24 02:52:03.000000000 -0700
 | 
|---|
 | 4093 | @@ -77,9 +77,9 @@
 | 
|---|
 | 4094 |    /* Test pow(pow(x,y),z) -> pow(x,y*z).  */
 | 
|---|
 | 4095 |  #define POW_POW \
 | 
|---|
 | 4096 |   extern void link_failure_pow_pow(void); \
 | 
|---|
 | 4097 | - if (pow(pow(d1, d2), d3) != pow(d1,d2*d3) \
 | 
|---|
 | 4098 | -     || powf(powf(f1,f2),f3) != powf(f1,f2*f3) \
 | 
|---|
 | 4099 | -     || powl(powl(ld1,ld2),ld3) != powl(ld1,ld2*ld3)) \
 | 
|---|
 | 4100 | + if (pow(pow(fabs(d1), d2), d3) != pow(fabs(d1),d2*d3) \
 | 
|---|
 | 4101 | +     || powf(powf(fabs(f1),f2),f3) != powf(fabs(f1),f2*f3) \
 | 
|---|
 | 4102 | +     || powl(powl(fabs(ld1),ld2),ld3) != powl(fabs(ld1),ld2*ld3)) \
 | 
|---|
 | 4103 |      link_failure_pow_pow()
 | 
|---|
 | 4104 |  
 | 
|---|
 | 4105 |    POW_POW;
 | 
|---|
 | 4106 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/pr39074.c gcc-4.4.1/gcc/testsuite/gcc.dg/torture/pr39074.c
 | 
|---|
 | 4107 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/pr39074.c       2009-02-19 02:12:25.000000000 -0800
 | 
|---|
 | 4108 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/torture/pr39074.c    2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 4109 | @@ -2,9 +2,11 @@
 | 
|---|
 | 4110 |  /* { dg-options "-fdump-tree-alias" } */
 | 
|---|
 | 4111 |  /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
 | 
|---|
 | 4112 |  
 | 
|---|
 | 4113 | +typedef __PTRDIFF_TYPE__ intptr_t;
 | 
|---|
 | 4114 | +
 | 
|---|
 | 4115 |  int i;
 | 
|---|
 | 4116 |  void __attribute__((noinline))
 | 
|---|
 | 4117 | -foo(long b, long q)
 | 
|---|
 | 4118 | +foo(long b, intptr_t q)
 | 
|---|
 | 4119 |  {
 | 
|---|
 | 4120 |    int *y;
 | 
|---|
 | 4121 |    int **a = &y, **x;
 | 
|---|
 | 4122 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/pr41094.c gcc-4.4.1/gcc/testsuite/gcc.dg/torture/pr41094.c
 | 
|---|
 | 4123 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/pr41094.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4124 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/torture/pr41094.c    2009-08-24 02:52:03.000000000 -0700
 | 
|---|
 | 4125 | @@ -0,0 +1,19 @@
 | 
|---|
 | 4126 | +/* { dg-do run } */
 | 
|---|
 | 4127 | +/* { dg-options "-ffast-math" } */
 | 
|---|
 | 4128 | +
 | 
|---|
 | 4129 | +#include <math.h>
 | 
|---|
 | 4130 | +
 | 
|---|
 | 4131 | +extern void abort (void);
 | 
|---|
 | 4132 | +
 | 
|---|
 | 4133 | +double foo(void)
 | 
|---|
 | 4134 | +{
 | 
|---|
 | 4135 | +  double x = -4.0;
 | 
|---|
 | 4136 | +  return pow (x * x, 0.25);
 | 
|---|
 | 4137 | +}
 | 
|---|
 | 4138 | +
 | 
|---|
 | 4139 | +int main()
 | 
|---|
 | 4140 | +{
 | 
|---|
 | 4141 | +  if (foo() != 2.0)
 | 
|---|
 | 4142 | +    abort ();
 | 
|---|
 | 4143 | +  return 0;
 | 
|---|
 | 4144 | +}
 | 
|---|
 | 4145 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/pr41261.c gcc-4.4.1/gcc/testsuite/gcc.dg/torture/pr41261.c
 | 
|---|
 | 4146 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/torture/pr41261.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4147 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/torture/pr41261.c    2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 4148 | @@ -0,0 +1,8 @@
 | 
|---|
 | 4149 | +/* { dg-do compile } */
 | 
|---|
 | 4150 | +/* { dg-options "-fprofile-arcs" } */
 | 
|---|
 | 4151 | +
 | 
|---|
 | 4152 | +extern void relocate_kernel();
 | 
|---|
 | 4153 | +void machine_kexec(void *control_page)
 | 
|---|
 | 4154 | +{ 
 | 
|---|
 | 4155 | +  __builtin_memcpy(control_page, relocate_kernel, 2048);
 | 
|---|
 | 4156 | +}
 | 
|---|
 | 4157 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/tree-ssa/pr33920.c gcc-4.4.1/gcc/testsuite/gcc.dg/tree-ssa/pr33920.c
 | 
|---|
 | 4158 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/tree-ssa/pr33920.c      2009-02-05 03:59:20.000000000 -0800
 | 
|---|
 | 4159 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/tree-ssa/pr33920.c   2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 4160 | @@ -2,6 +2,7 @@
 | 
|---|
 | 4161 |  /* { dg-do compile } */
 | 
|---|
 | 4162 |  /* { dg-options "-O3" } */
 | 
|---|
 | 4163 |  
 | 
|---|
 | 4164 | +typedef __PTRDIFF_TYPE__ intptr_t;
 | 
|---|
 | 4165 |  typedef union lispunion *object;
 | 
|---|
 | 4166 |  struct character
 | 
|---|
 | 4167 |  {
 | 
|---|
 | 4168 | @@ -22,14 +23,14 @@
 | 
|---|
 | 4169 |    object V659;
 | 
|---|
 | 4170 |    object _x, _y;
 | 
|---|
 | 4171 |    object V643;
 | 
|---|
 | 4172 | -  long V648;
 | 
|---|
 | 4173 | +  intptr_t V648;
 | 
|---|
 | 4174 |    unsigned char V653;
 | 
|---|
 | 4175 |    object V651;
 | 
|---|
 | 4176 |    object V654;
 | 
|---|
 | 4177 |    object V658;
 | 
|---|
 | 4178 |  
 | 
|---|
 | 4179 |  T1240:
 | 
|---|
 | 4180 | -if (V648 >= (long)V651) /* { dg-warning "cast from pointer to integer of different size" "" { target { ! int32plus } } } */
 | 
|---|
 | 4181 | +if (V648 >= (intptr_t)V651) /* { dg-warning "cast from pointer to integer of different size" "" { target { ! int32plus } } } */
 | 
|---|
 | 4182 |      goto T1243;
 | 
|---|
 | 4183 |    V653 = ((char *) V654->v.v_self)[V648];
 | 
|---|
 | 4184 |    V659 = (object) V654 + V653;
 | 
|---|
 | 4185 | @@ -41,7 +42,7 @@
 | 
|---|
 | 4186 |      goto T1249;
 | 
|---|
 | 4187 |    goto T1224;
 | 
|---|
 | 4188 |  T1249:
 | 
|---|
 | 4189 | - V648 = (long) V648 + 1;
 | 
|---|
 | 4190 | +  V648 = (intptr_t) V648 + 1;
 | 
|---|
 | 4191 |    goto T1240;
 | 
|---|
 | 4192 |  T1243:
 | 
|---|
 | 4193 |    V643 = (object) & Cnil_body;
 | 
|---|
 | 4194 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c gcc-4.4.1/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c
 | 
|---|
 | 4195 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c   1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4196 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c        2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 4197 | @@ -0,0 +1,24 @@
 | 
|---|
 | 4198 | +/* { dg-do compile } */
 | 
|---|
 | 4199 | +/* { dg-options "-O2 -fdump-tree-ccp1" } */
 | 
|---|
 | 4200 | +
 | 
|---|
 | 4201 | +#include <string.h>
 | 
|---|
 | 4202 | +
 | 
|---|
 | 4203 | +char c[10];
 | 
|---|
 | 4204 | +
 | 
|---|
 | 4205 | +void
 | 
|---|
 | 4206 | +f1 ()
 | 
|---|
 | 4207 | +{
 | 
|---|
 | 4208 | +  const char *p = "123456";
 | 
|---|
 | 4209 | +  memcpy (c, p, 6);
 | 
|---|
 | 4210 | +}
 | 
|---|
 | 4211 | +
 | 
|---|
 | 4212 | +void
 | 
|---|
 | 4213 | +f2 ()
 | 
|---|
 | 4214 | +{
 | 
|---|
 | 4215 | +  const char *p = "12345678";
 | 
|---|
 | 4216 | +  p += 2;
 | 
|---|
 | 4217 | +  memcpy (c, p, 6);
 | 
|---|
 | 4218 | +}
 | 
|---|
 | 4219 | +
 | 
|---|
 | 4220 | +/* { dg-final { scan-tree-dump-times "memcpy\[^\n\]*123456" 2 "ccp1" } } */
 | 
|---|
 | 4221 | +/* { dg-final { cleanup-tree-dump "ccp1" } } */
 | 
|---|
 | 4222 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/uninit-6.c gcc-4.4.1/gcc/testsuite/gcc.dg/uninit-6.c
 | 
|---|
 | 4223 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/uninit-6.c      2008-08-20 15:23:45.000000000 -0700
 | 
|---|
 | 4224 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/uninit-6.c   2009-08-03 12:27:32.000000000 -0700
 | 
|---|
 | 4225 | @@ -39,7 +39,7 @@
 | 
|---|
 | 4226 |      rv = malloc (sizeof (struct tree));
 | 
|---|
 | 4227 |      rv->car = 0;
 | 
|---|
 | 4228 |  
 | 
|---|
 | 4229 | -    APPEND(rv, field, INTEGER_T, a);  /* { dg-bogus "field" "uninitialized variable warning" } */
 | 
|---|
 | 4230 | +    APPEND(rv, field, INTEGER_T, a);  /* { dg-bogus "field" "uninitialized variable warning" { xfail *-*-* } } */
 | 
|---|
 | 4231 |      APPEND(rv, field, PTR_T, b);
 | 
|---|
 | 4232 |      APPEND(rv, field, INTEGER_T, c);
 | 
|---|
 | 4233 |  
 | 
|---|
 | 4234 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/uninit-6-O0.c gcc-4.4.1/gcc/testsuite/gcc.dg/uninit-6-O0.c
 | 
|---|
 | 4235 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/uninit-6-O0.c   2008-08-20 15:23:45.000000000 -0700
 | 
|---|
 | 4236 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/uninit-6-O0.c        2009-08-03 12:27:32.000000000 -0700
 | 
|---|
 | 4237 | @@ -39,7 +39,7 @@
 | 
|---|
 | 4238 |      rv = malloc (sizeof (struct tree));
 | 
|---|
 | 4239 |      rv->car = 0;
 | 
|---|
 | 4240 |  
 | 
|---|
 | 4241 | -    APPEND(rv, field, INTEGER_T, a);  /* { dg-bogus "field" "uninitialized variable warning" } */
 | 
|---|
 | 4242 | +    APPEND(rv, field, INTEGER_T, a);  /* { dg-bogus "field" "uninitialized variable warning" { xfail *-*-* } } */
 | 
|---|
 | 4243 |      APPEND(rv, field, PTR_T, b);
 | 
|---|
 | 4244 |      APPEND(rv, field, INTEGER_T, c);
 | 
|---|
 | 4245 |  
 | 
|---|
 | 4246 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/uninit-pr40943.c gcc-4.4.1/gcc/testsuite/gcc.dg/uninit-pr40943.c
 | 
|---|
 | 4247 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/uninit-pr40943.c        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4248 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/uninit-pr40943.c     2009-08-03 12:27:32.000000000 -0700
 | 
|---|
 | 4249 | @@ -0,0 +1,10 @@
 | 
|---|
 | 4250 | +/* PR middle-end/40943 */
 | 
|---|
 | 4251 | +/* { dg-do compile } */
 | 
|---|
 | 4252 | +/* { dg-options "-O2 -Wuninitialized" } */
 | 
|---|
 | 4253 | +
 | 
|---|
 | 4254 | +void
 | 
|---|
 | 4255 | +foo (void)
 | 
|---|
 | 4256 | +{
 | 
|---|
 | 4257 | +  int *p;
 | 
|---|
 | 4258 | +  *p = 3;      /* { dg-warning "is used uninitialized" } */
 | 
|---|
 | 4259 | +}
 | 
|---|
 | 4260 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-2.c gcc-4.4.1/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-2.c
 | 
|---|
 | 4261 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-2.c     2007-09-04 06:05:19.000000000 -0700
 | 
|---|
 | 4262 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-2.c  2009-07-28 09:51:19.000000000 -0700
 | 
|---|
 | 4263 | @@ -4,7 +4,7 @@
 | 
|---|
 | 4264 |  #include "tree-vect.h"
 | 
|---|
 | 4265 |  
 | 
|---|
 | 4266 |  #define N 40
 | 
|---|
 | 4267 | -int a[200*N];
 | 
|---|
 | 4268 | +int a[200*N+N];
 | 
|---|
 | 4269 |  
 | 
|---|
 | 4270 |  __attribute__ ((noinline)) void
 | 
|---|
 | 4271 |  foo (){
 | 
|---|
 | 4272 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/O1-pr33854.c gcc-4.4.1/gcc/testsuite/gcc.dg/vect/O1-pr33854.c
 | 
|---|
 | 4273 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/O1-pr33854.c       2007-10-22 05:05:36.000000000 -0700
 | 
|---|
 | 4274 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/vect/O1-pr33854.c    2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 4275 | @@ -1,7 +1,7 @@
 | 
|---|
 | 4276 |  /* Testcase by Martin Michlmayr <tbm@cyrius.com> */
 | 
|---|
 | 4277 |  /* { dg-do compile } */
 | 
|---|
 | 4278 |  
 | 
|---|
 | 4279 | -extern void *malloc (long unsigned int __size);
 | 
|---|
 | 4280 | +extern void *malloc (__SIZE_TYPE__ __size);
 | 
|---|
 | 4281 |  typedef struct VMatrix_ VMatrix;
 | 
|---|
 | 4282 |  struct VMatrix_
 | 
|---|
 | 4283 |  {
 | 
|---|
 | 4284 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/O1-pr41008.c gcc-4.4.1/gcc/testsuite/gcc.dg/vect/O1-pr41008.c
 | 
|---|
 | 4285 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/O1-pr41008.c       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4286 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/vect/O1-pr41008.c    2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 4287 | @@ -0,0 +1,23 @@
 | 
|---|
 | 4288 | +/* { dg-do compile } */
 | 
|---|
 | 4289 | +
 | 
|---|
 | 4290 | +double heating[2][2];
 | 
|---|
 | 4291 | +
 | 
|---|
 | 4292 | +void foo (int, int);
 | 
|---|
 | 4293 | +
 | 
|---|
 | 4294 | +void map_do()
 | 
|---|
 | 4295 | +{
 | 
|---|
 | 4296 | +  int jsav, ksav, k, j;
 | 
|---|
 | 4297 | +
 | 
|---|
 | 4298 | +  for(k = 0; k < 2; k++)
 | 
|---|
 | 4299 | +    for(j = 0; j < 2; j++)
 | 
|---|
 | 4300 | +      if (heating[k][j] > 0.)
 | 
|---|
 | 4301 | +        {
 | 
|---|
 | 4302 | +          jsav = j;
 | 
|---|
 | 4303 | +          ksav = k;
 | 
|---|
 | 4304 | +        }
 | 
|---|
 | 4305 | +
 | 
|---|
 | 4306 | +  foo (jsav, ksav);
 | 
|---|
 | 4307 | +}
 | 
|---|
 | 4308 | +
 | 
|---|
 | 4309 | +/* { dg-final { cleanup-tree-dump "vect" } } */
 | 
|---|
 | 4310 | +
 | 
|---|
 | 4311 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/pr33833.c gcc-4.4.1/gcc/testsuite/gcc.dg/vect/pr33833.c
 | 
|---|
 | 4312 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/pr33833.c  2007-10-25 09:41:45.000000000 -0700
 | 
|---|
 | 4313 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/vect/pr33833.c       2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 4314 | @@ -1,6 +1,10 @@
 | 
|---|
 | 4315 |  /* Testcase by Martin Michlmayr <tbm@cyrius.com> */
 | 
|---|
 | 4316 |  /* { dg-do compile } */
 | 
|---|
 | 4317 |  
 | 
|---|
 | 4318 | +#define signed
 | 
|---|
 | 4319 | +typedef unsigned __PTRDIFF_TYPE__ uintptr_t;
 | 
|---|
 | 4320 | +#undef signed
 | 
|---|
 | 4321 | +
 | 
|---|
 | 4322 |  struct list_head
 | 
|---|
 | 4323 |  {
 | 
|---|
 | 4324 |    struct list_head *prev;
 | 
|---|
 | 4325 | @@ -14,7 +18,7 @@
 | 
|---|
 | 4326 |    struct prio_array *active, arrays[2];
 | 
|---|
 | 4327 |  } per_cpu__runqueues;
 | 
|---|
 | 4328 |  
 | 
|---|
 | 4329 | -void sched_init (unsigned long __ptr)
 | 
|---|
 | 4330 | +void sched_init (uintptr_t __ptr)
 | 
|---|
 | 4331 |  {
 | 
|---|
 | 4332 |    int j, k;
 | 
|---|
 | 4333 |    struct prio_array *array;
 | 
|---|
 | 4334 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/pr33846.c gcc-4.4.1/gcc/testsuite/gcc.dg/vect/pr33846.c
 | 
|---|
 | 4335 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.dg/vect/pr33846.c  2007-10-23 13:15:04.000000000 -0700
 | 
|---|
 | 4336 | +++ gcc-4.4.1/gcc/testsuite/gcc.dg/vect/pr33846.c       2009-09-08 12:10:43.000000000 -0700
 | 
|---|
 | 4337 | @@ -7,7 +7,9 @@
 | 
|---|
 | 4338 |    return ~i >> 31;
 | 
|---|
 | 4339 |  }
 | 
|---|
 | 4340 |  
 | 
|---|
 | 4341 | -void _mix_some_samples (long buf, int *mix_buffer, int mix_size)
 | 
|---|
 | 4342 | +typedef __PTRDIFF_TYPE__ intptr_t;
 | 
|---|
 | 4343 | +
 | 
|---|
 | 4344 | +void _mix_some_samples (intptr_t buf, int *mix_buffer, int mix_size)
 | 
|---|
 | 4345 |  {
 | 
|---|
 | 4346 |    int i;
 | 
|---|
 | 4347 |    signed int *p = mix_buffer;
 | 
|---|
 | 4348 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-1.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-1.c
 | 
|---|
 | 4349 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-1.c        2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4350 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-1.c     2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4351 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4352 |  /* { dg-do run } */
 | 
|---|
 | 4353 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4354 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4355 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_DOUBLE" } */
 | 
|---|
 | 4356 | +/* { dg-warning "attribute ignored" "" { target default_packed } 164 } */
 | 
|---|
 | 4357 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4358 |  
 | 
|---|
 | 4359 |  #include "avx-check.h"
 | 
|---|
 | 4360 |  
 | 
|---|
 | 4361 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-1.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-1.c
 | 
|---|
 | 4362 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-1.c    2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4363 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-1.c 2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4364 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4365 |  /* { dg-do run } */
 | 
|---|
 | 4366 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4367 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4368 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_DOUBLE" } */
 | 
|---|
 | 4369 | +/* { dg-warning "attribute ignored" "" { target default_packed } 164 } */
 | 
|---|
 | 4370 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4371 |  
 | 
|---|
 | 4372 |  #include "avx-check.h"
 | 
|---|
 | 4373 |  
 | 
|---|
 | 4374 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-2.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-2.c
 | 
|---|
 | 4375 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-2.c    2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4376 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-2.c 2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4377 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4378 |  /* { dg-do run } */
 | 
|---|
 | 4379 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4380 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4381 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_DOUBLE" } */
 | 
|---|
 | 4382 | +/* { dg-warning "attribute ignored" "" { target default_packed } 164 } */
 | 
|---|
 | 4383 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4384 |  
 | 
|---|
 | 4385 |  #include "avx-check.h"
 | 
|---|
 | 4386 |  
 | 
|---|
 | 4387 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-3.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-3.c
 | 
|---|
 | 4388 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-3.c    2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4389 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-256-3.c 2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4390 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4391 |  /* { dg-do run } */
 | 
|---|
 | 4392 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4393 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4394 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_DOUBLE" } */
 | 
|---|
 | 4395 | +/* { dg-warning "attribute ignored" "" { target default_packed } 164 } */
 | 
|---|
 | 4396 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4397 |  
 | 
|---|
 | 4398 |  #include "avx-check.h"
 | 
|---|
 | 4399 |  
 | 
|---|
 | 4400 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-2.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-2.c
 | 
|---|
 | 4401 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-2.c        2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4402 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-2.c     2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4403 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4404 |  /* { dg-do run } */
 | 
|---|
 | 4405 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4406 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4407 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_DOUBLE" } */
 | 
|---|
 | 4408 | +/* { dg-warning "attribute ignored" "" { target default_packed } 164 } */
 | 
|---|
 | 4409 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4410 |  
 | 
|---|
 | 4411 |  #include "avx-check.h"
 | 
|---|
 | 4412 |  
 | 
|---|
 | 4413 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-3.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-3.c
 | 
|---|
 | 4414 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestpd-3.c        2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4415 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestpd-3.c     2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4416 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4417 |  /* { dg-do run } */
 | 
|---|
 | 4418 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4419 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4420 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_DOUBLE" } */
 | 
|---|
 | 4421 | +/* { dg-warning "attribute ignored" "" { target default_packed } 164 } */
 | 
|---|
 | 4422 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4423 |  
 | 
|---|
 | 4424 |  #include "avx-check.h"
 | 
|---|
 | 4425 |  
 | 
|---|
 | 4426 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-1.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-1.c
 | 
|---|
 | 4427 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-1.c        2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4428 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-1.c     2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4429 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4430 |  /* { dg-do run } */
 | 
|---|
 | 4431 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4432 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4433 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_FLOAT" } */
 | 
|---|
 | 4434 | +/* { dg-warning "attribute ignored" "" { target default_packed } 150 } */
 | 
|---|
 | 4435 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4436 |  
 | 
|---|
 | 4437 |  #include "avx-check.h"
 | 
|---|
 | 4438 |  
 | 
|---|
 | 4439 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-256-1.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-256-1.c
 | 
|---|
 | 4440 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-256-1.c    2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4441 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-256-1.c 2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4442 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4443 |  /* { dg-do run } */
 | 
|---|
 | 4444 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4445 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4446 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_FLOAT" } */
 | 
|---|
 | 4447 | +/* { dg-warning "attribute ignored" "" { target default_packed } 150 } */
 | 
|---|
 | 4448 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4449 |  
 | 
|---|
 | 4450 |  #include "avx-check.h"
 | 
|---|
 | 4451 |  
 | 
|---|
 | 4452 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-256-2.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-256-2.c
 | 
|---|
 | 4453 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-256-2.c    2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4454 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-256-2.c 2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4455 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4456 |  /* { dg-do run } */
 | 
|---|
 | 4457 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4458 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4459 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_FLOAT" } */
 | 
|---|
 | 4460 | +/* { dg-warning "attribute ignored" "" { target default_packed } 150 } */
 | 
|---|
 | 4461 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4462 |  
 | 
|---|
 | 4463 |  #include "avx-check.h"
 | 
|---|
 | 4464 |  
 | 
|---|
 | 4465 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-256-3.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-256-3.c
 | 
|---|
 | 4466 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-256-3.c    2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4467 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-256-3.c 2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4468 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4469 |  /* { dg-do run } */
 | 
|---|
 | 4470 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4471 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4472 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_FLOAT" } */
 | 
|---|
 | 4473 | +/* { dg-warning "attribute ignored" "" { target default_packed } 150 } */
 | 
|---|
 | 4474 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4475 |  
 | 
|---|
 | 4476 |  #include "avx-check.h"
 | 
|---|
 | 4477 |  
 | 
|---|
 | 4478 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-2.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-2.c
 | 
|---|
 | 4479 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-2.c        2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4480 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-2.c     2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4481 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4482 |  /* { dg-do run } */
 | 
|---|
 | 4483 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4484 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4485 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_FLOAT" } */
 | 
|---|
 | 4486 | +/* { dg-warning "attribute ignored" "" { target default_packed } 150 } */
 | 
|---|
 | 4487 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4488 |  
 | 
|---|
 | 4489 |  #include "avx-check.h"
 | 
|---|
 | 4490 |  
 | 
|---|
 | 4491 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-3.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-3.c
 | 
|---|
 | 4492 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/avx-vtestps-3.c        2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4493 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/avx-vtestps-3.c     2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4494 | @@ -1,6 +1,8 @@
 | 
|---|
 | 4495 |  /* { dg-do run } */
 | 
|---|
 | 4496 |  /* { dg-require-effective-target avx } */
 | 
|---|
 | 4497 | -/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4498 | +/* { dg-options "-O2 -mavx -DNEED_IEEE754_FLOAT" } */
 | 
|---|
 | 4499 | +/* { dg-warning "attribute ignored" "" { target default_packed } 150 } */
 | 
|---|
 | 4500 | +/* { dg-message " from " "include chain" { target default_packed } 0 } */
 | 
|---|
 | 4501 |  
 | 
|---|
 | 4502 |  #include "avx-check.h"
 | 
|---|
 | 4503 |  
 | 
|---|
 | 4504 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/m128-check.h gcc-4.4.1/gcc/testsuite/gcc.target/i386/m128-check.h
 | 
|---|
 | 4505 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/m128-check.h   2008-08-28 12:36:58.000000000 -0700
 | 
|---|
 | 4506 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/m128-check.h        2009-07-28 00:01:40.000000000 -0700
 | 
|---|
 | 4507 | @@ -138,6 +138,7 @@
 | 
|---|
 | 4508 |  CHECK_FP_ARRAY (d, double, ESP_DOUBLE, "%f")
 | 
|---|
 | 4509 |  CHECK_FP_ARRAY (f, float, ESP_FLOAT, "%f")
 | 
|---|
 | 4510 |  
 | 
|---|
 | 4511 | +#ifdef NEED_IEEE754_FLOAT
 | 
|---|
 | 4512 |  union ieee754_float
 | 
|---|
 | 4513 |  {
 | 
|---|
 | 4514 |     float d;
 | 
|---|
 | 4515 | @@ -148,7 +149,9 @@
 | 
|---|
 | 4516 |        unsigned sign : 1;
 | 
|---|
 | 4517 |     } bits __attribute__((packed));
 | 
|---|
 | 4518 |  };
 | 
|---|
 | 4519 | +#endif
 | 
|---|
 | 4520 |  
 | 
|---|
 | 4521 | +#ifdef NEED_IEEE754_DOUBLE
 | 
|---|
 | 4522 |  union ieee754_double
 | 
|---|
 | 4523 |  {
 | 
|---|
 | 4524 |     double d;
 | 
|---|
 | 4525 | @@ -160,3 +163,4 @@
 | 
|---|
 | 4526 |        unsigned sign : 1;
 | 
|---|
 | 4527 |     } bits __attribute__((packed));
 | 
|---|
 | 4528 |  };
 | 
|---|
 | 4529 | +#endif
 | 
|---|
 | 4530 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr37248-2.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr37248-2.c
 | 
|---|
 | 4531 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr37248-2.c    2008-12-09 09:38:09.000000000 -0800
 | 
|---|
 | 4532 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr37248-2.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 4533 | @@ -1,5 +1,5 @@
 | 
|---|
 | 4534 |  /* PR middle-end/37248 */
 | 
|---|
 | 4535 | -/* { dg-do compile } */
 | 
|---|
 | 4536 | +/* { dg-do compile { target { ! default_packed } } } */
 | 
|---|
 | 4537 |  /* { dg-options "-O2 -fdump-tree-optimized" } */
 | 
|---|
 | 4538 |  
 | 
|---|
 | 4539 |  struct S
 | 
|---|
 | 4540 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr37248-3.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr37248-3.c
 | 
|---|
 | 4541 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr37248-3.c    2008-12-09 09:38:09.000000000 -0800
 | 
|---|
 | 4542 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr37248-3.c 2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 4543 | @@ -1,6 +1,6 @@
 | 
|---|
 | 4544 |  /* PR middle-end/37248 */
 | 
|---|
 | 4545 | -/* { dg-do compile } */
 | 
|---|
 | 4546 | -/* { dg-options "-O2 -fdump-tree-optimized" } */
 | 
|---|
 | 4547 | +/* { dg-do compile { target { ! default_packed } } } */
 | 
|---|
 | 4548 | +/* { dg-options "-O2 -fdump-tree-optimized -mno-ms-bitfields" } */
 | 
|---|
 | 4549 |  
 | 
|---|
 | 4550 |  struct S
 | 
|---|
 | 4551 |  {
 | 
|---|
 | 4552 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40718.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40718.c
 | 
|---|
 | 4553 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40718.c      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4554 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40718.c   2009-08-23 05:37:53.000000000 -0700
 | 
|---|
 | 4555 | @@ -0,0 +1,36 @@
 | 
|---|
 | 4556 | +/* { dg-do run } */
 | 
|---|
 | 4557 | +/* { dg-require-effective-target ilp32 } */
 | 
|---|
 | 4558 | +/* { dg-options "-O1 -foptimize-sibling-calls" } */
 | 
|---|
 | 4559 | +
 | 
|---|
 | 4560 | +void abort (void);
 | 
|---|
 | 4561 | +
 | 
|---|
 | 4562 | +struct S
 | 
|---|
 | 4563 | +{
 | 
|---|
 | 4564 | +  void (__attribute__((__stdcall__)) *f) (struct S *);
 | 
|---|
 | 4565 | +  int i;
 | 
|---|
 | 4566 | +};
 | 
|---|
 | 4567 | +
 | 
|---|
 | 4568 | +void __attribute__((__stdcall__))
 | 
|---|
 | 4569 | +foo (struct S *s)
 | 
|---|
 | 4570 | +{
 | 
|---|
 | 4571 | +  s->i++;
 | 
|---|
 | 4572 | +}
 | 
|---|
 | 4573 | +
 | 
|---|
 | 4574 | +void __attribute__((__stdcall__))
 | 
|---|
 | 4575 | +bar (struct S *s)
 | 
|---|
 | 4576 | +{
 | 
|---|
 | 4577 | +  foo(s);
 | 
|---|
 | 4578 | +  s->f(s);
 | 
|---|
 | 4579 | +}
 | 
|---|
 | 4580 | +
 | 
|---|
 | 4581 | +int main (void)
 | 
|---|
 | 4582 | +{
 | 
|---|
 | 4583 | +  struct S s = { foo, 0 };
 | 
|---|
 | 4584 | +
 | 
|---|
 | 4585 | +  bar (&s);
 | 
|---|
 | 4586 | +  if (s.i != 2)
 | 
|---|
 | 4587 | +    abort ();
 | 
|---|
 | 4588 | +
 | 
|---|
 | 4589 | +  return 0;
 | 
|---|
 | 4590 | +}
 | 
|---|
 | 4591 | +
 | 
|---|
 | 4592 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40906-1.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40906-1.c
 | 
|---|
 | 4593 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40906-1.c    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4594 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40906-1.c 2009-08-05 11:04:42.000000000 -0700
 | 
|---|
 | 4595 | @@ -0,0 +1,26 @@
 | 
|---|
 | 4596 | +/* { dg-do run } */
 | 
|---|
 | 4597 | +/* { dg-require-effective-target ilp32 } */
 | 
|---|
 | 4598 | +/* { dg-options "-O2 -fomit-frame-pointer -mpush-args -mno-accumulate-outgoing-args" } */
 | 
|---|
 | 4599 | +
 | 
|---|
 | 4600 | +void abort (void);
 | 
|---|
 | 4601 | +
 | 
|---|
 | 4602 | +void __attribute__((noinline))
 | 
|---|
 | 4603 | +f (long double a)
 | 
|---|
 | 4604 | +{
 | 
|---|
 | 4605 | +  if (a != 1.23L)
 | 
|---|
 | 4606 | +    abort ();
 | 
|---|
 | 4607 | +}
 | 
|---|
 | 4608 | +
 | 
|---|
 | 4609 | +int __attribute__((noinline))
 | 
|---|
 | 4610 | +g (long double b)
 | 
|---|
 | 4611 | +{
 | 
|---|
 | 4612 | +  f (b);
 | 
|---|
 | 4613 | +  return 0;
 | 
|---|
 | 4614 | +}
 | 
|---|
 | 4615 | +
 | 
|---|
 | 4616 | +int
 | 
|---|
 | 4617 | +main (void)
 | 
|---|
 | 4618 | +{
 | 
|---|
 | 4619 | +  g (1.23L);
 | 
|---|
 | 4620 | +  return 0;
 | 
|---|
 | 4621 | +}
 | 
|---|
 | 4622 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40906-2.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40906-2.c
 | 
|---|
 | 4623 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40906-2.c    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4624 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40906-2.c 2009-08-05 11:04:42.000000000 -0700
 | 
|---|
 | 4625 | @@ -0,0 +1,26 @@
 | 
|---|
 | 4626 | +/* { dg-do run } */
 | 
|---|
 | 4627 | +/* { dg-require-effective-target ilp32 } */
 | 
|---|
 | 4628 | +/* { dg-options "-O2 -fomit-frame-pointer -mpush-args -mno-accumulate-outgoing-args -m128bit-long-double" } */
 | 
|---|
 | 4629 | +
 | 
|---|
 | 4630 | +void abort (void);
 | 
|---|
 | 4631 | +
 | 
|---|
 | 4632 | +void __attribute__((noinline))
 | 
|---|
 | 4633 | +f (long double a)
 | 
|---|
 | 4634 | +{
 | 
|---|
 | 4635 | +  if (a != 1.23L)
 | 
|---|
 | 4636 | +    abort ();
 | 
|---|
 | 4637 | +}
 | 
|---|
 | 4638 | +
 | 
|---|
 | 4639 | +int __attribute__((noinline))
 | 
|---|
 | 4640 | +g (long double b)
 | 
|---|
 | 4641 | +{
 | 
|---|
 | 4642 | +  f (b);
 | 
|---|
 | 4643 | +  return 0;
 | 
|---|
 | 4644 | +}
 | 
|---|
 | 4645 | +
 | 
|---|
 | 4646 | +int
 | 
|---|
 | 4647 | +main (void)
 | 
|---|
 | 4648 | +{
 | 
|---|
 | 4649 | +  g (1.23L);
 | 
|---|
 | 4650 | +  return 0;
 | 
|---|
 | 4651 | +}
 | 
|---|
 | 4652 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40906-3.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40906-3.c
 | 
|---|
 | 4653 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40906-3.c    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4654 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40906-3.c 2009-08-05 11:04:42.000000000 -0700
 | 
|---|
 | 4655 | @@ -0,0 +1,25 @@
 | 
|---|
 | 4656 | +/* { dg-do run { target *-*-linux* } } */
 | 
|---|
 | 4657 | +/* { dg-require-effective-target ilp32 } */
 | 
|---|
 | 4658 | +/* { dg-options "-O2 -fomit-frame-pointer -msse2 -mpush-args -mno-accumulate-outgoing-args" } */
 | 
|---|
 | 4659 | +
 | 
|---|
 | 4660 | +#include "sse2-check.h"
 | 
|---|
 | 4661 | +
 | 
|---|
 | 4662 | +void __attribute__((noinline))
 | 
|---|
 | 4663 | +f (__float128 a)
 | 
|---|
 | 4664 | +{
 | 
|---|
 | 4665 | +  if (a != 1.23Q)
 | 
|---|
 | 4666 | +    abort ();
 | 
|---|
 | 4667 | +}
 | 
|---|
 | 4668 | +
 | 
|---|
 | 4669 | +int __attribute__((noinline))
 | 
|---|
 | 4670 | +g (__float128 b)
 | 
|---|
 | 4671 | +{
 | 
|---|
 | 4672 | +  f (b);
 | 
|---|
 | 4673 | +  return 0;
 | 
|---|
 | 4674 | +}
 | 
|---|
 | 4675 | +
 | 
|---|
 | 4676 | +static void
 | 
|---|
 | 4677 | +sse2_test (void)
 | 
|---|
 | 4678 | +{
 | 
|---|
 | 4679 | +  g (1.23Q);
 | 
|---|
 | 4680 | +}
 | 
|---|
 | 4681 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40934.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40934.c
 | 
|---|
 | 4682 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40934.c      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4683 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40934.c   2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 4684 | @@ -0,0 +1,15 @@
 | 
|---|
 | 4685 | +/* { dg-do compile } */
 | 
|---|
 | 4686 | +/* { dg-require-effective-target ilp32 } */
 | 
|---|
 | 4687 | +/* { dg-options "-O2 -march=i586 -ffast-math" } */
 | 
|---|
 | 4688 | +
 | 
|---|
 | 4689 | +extern double host_frametime;
 | 
|---|
 | 4690 | +extern float pitchvel;
 | 
|---|
 | 4691 | +V_DriftPitch (float delta, float move)
 | 
|---|
 | 4692 | +{
 | 
|---|
 | 4693 | +  if (!delta)
 | 
|---|
 | 4694 | +    move = host_frametime;
 | 
|---|
 | 4695 | +  if (delta > 0)
 | 
|---|
 | 4696 | +    ;
 | 
|---|
 | 4697 | +  else if (delta < 0 && move > -delta)
 | 
|---|
 | 4698 | +    pitchvel = 0;
 | 
|---|
 | 4699 | +}
 | 
|---|
 | 4700 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40957.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40957.c
 | 
|---|
 | 4701 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr40957.c      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4702 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr40957.c   2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 4703 | @@ -0,0 +1,18 @@
 | 
|---|
 | 4704 | +/* { dg-do compile } */
 | 
|---|
 | 4705 | +/* { dg-require-effective-target avx } */
 | 
|---|
 | 4706 | +/* { dg-options "-O2 -mavx" } */
 | 
|---|
 | 4707 | +
 | 
|---|
 | 4708 | +typedef int __v8si __attribute__((__vector_size__(32)));
 | 
|---|
 | 4709 | +typedef long long __m256i __attribute__((__vector_size__(32), __may_alias__));
 | 
|---|
 | 4710 | +
 | 
|---|
 | 4711 | +static __m256i
 | 
|---|
 | 4712 | +_mm256_set1_epi32 (int __A)
 | 
|---|
 | 4713 | +{
 | 
|---|
 | 4714 | +  return __extension__ (__m256i)(__v8si){ __A, __A, __A, __A,
 | 
|---|
 | 4715 | +                                         __A, __A, __A, __A };
 | 
|---|
 | 4716 | +}
 | 
|---|
 | 4717 | +__m256i
 | 
|---|
 | 4718 | +foo ()
 | 
|---|
 | 4719 | +{
 | 
|---|
 | 4720 | +  return _mm256_set1_epi32 (-1);
 | 
|---|
 | 4721 | +}
 | 
|---|
 | 4722 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr41019.c gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr41019.c
 | 
|---|
 | 4723 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/i386/pr41019.c      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4724 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/i386/pr41019.c   2009-08-16 12:34:49.000000000 -0700
 | 
|---|
 | 4725 | @@ -0,0 +1,19 @@
 | 
|---|
 | 4726 | +/* { dg-do run } */
 | 
|---|
 | 4727 | +/* { dg-options "-O2 -msse2 -ftree-vectorize" } */
 | 
|---|
 | 4728 | +
 | 
|---|
 | 4729 | +#include "sse2-check.h"
 | 
|---|
 | 4730 | +
 | 
|---|
 | 4731 | +long long int a[64];
 | 
|---|
 | 4732 | +
 | 
|---|
 | 4733 | +void
 | 
|---|
 | 4734 | +sse2_test (void)
 | 
|---|
 | 4735 | +{
 | 
|---|
 | 4736 | +  int k;
 | 
|---|
 | 4737 | +
 | 
|---|
 | 4738 | +  for (k = 0; k < 64; k++)
 | 
|---|
 | 4739 | +    a[k] = a[k] != 5 ? 12 : 10;
 | 
|---|
 | 4740 | +
 | 
|---|
 | 4741 | +  for (k = 0; k < 64; k++)
 | 
|---|
 | 4742 | +    if (a[k] != 12)
 | 
|---|
 | 4743 | +      abort ();
 | 
|---|
 | 4744 | +}
 | 
|---|
 | 4745 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gcc.target/powerpc/pr39902-2.c gcc-4.4.1/gcc/testsuite/gcc.target/powerpc/pr39902-2.c
 | 
|---|
 | 4746 | --- gcc-4.4.1.orig/gcc/testsuite/gcc.target/powerpc/pr39902-2.c 1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4747 | +++ gcc-4.4.1/gcc/testsuite/gcc.target/powerpc/pr39902-2.c      2009-08-03 14:43:32.000000000 -0700
 | 
|---|
 | 4748 | @@ -0,0 +1,28 @@
 | 
|---|
 | 4749 | +/* Check that simplification "x*(-1)" -> "-x" is not performed for decimal
 | 
|---|
 | 4750 | +   float types.  */
 | 
|---|
 | 4751 | +
 | 
|---|
 | 4752 | +/* { dg-do compile { target { powerpc*-*-linux* && powerpc_fprs } } } */
 | 
|---|
 | 4753 | +/* { dg-options "-std=gnu99 -O -mcpu=power6" } */
 | 
|---|
 | 4754 | +/* { dg-final { scan-assembler-not "fneg" } } */
 | 
|---|
 | 4755 | +
 | 
|---|
 | 4756 | +extern _Decimal32 a32, b32;
 | 
|---|
 | 4757 | +extern _Decimal64 a64, b64;
 | 
|---|
 | 4758 | +extern _Decimal128 a128, b128;
 | 
|---|
 | 4759 | +
 | 
|---|
 | 4760 | +void
 | 
|---|
 | 4761 | +foo32 (void)
 | 
|---|
 | 4762 | +{
 | 
|---|
 | 4763 | +  b32 = a32 * -1.0DF;
 | 
|---|
 | 4764 | +}
 | 
|---|
 | 4765 | +
 | 
|---|
 | 4766 | +void
 | 
|---|
 | 4767 | +foo64 (void)
 | 
|---|
 | 4768 | +{
 | 
|---|
 | 4769 | +  b64 = a64 * -1.0DD;
 | 
|---|
 | 4770 | +}
 | 
|---|
 | 4771 | +
 | 
|---|
 | 4772 | +void
 | 
|---|
 | 4773 | +foo128 (void)
 | 
|---|
 | 4774 | +{
 | 
|---|
 | 4775 | +  b128 = a128 * -1.0DL;
 | 
|---|
 | 4776 | +}
 | 
|---|
 | 4777 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/cdce3.C gcc-4.4.1/gcc/testsuite/g++.dg/cdce3.C
 | 
|---|
 | 4778 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/cdce3.C 2008-09-23 14:27:17.000000000 -0700
 | 
|---|
 | 4779 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/cdce3.C      2009-08-28 02:57:51.000000000 -0700
 | 
|---|
 | 4780 | @@ -2,14 +2,14 @@
 | 
|---|
 | 4781 |  /* { dg-require-effective-target c99_runtime } */
 | 
|---|
 | 4782 |  /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -DGNU_EXTENSION -DLARGE_LONG_DOUBLE -lm" { target { pow10 && large_long_double } } } */
 | 
|---|
 | 4783 |  /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -DLARGE_LONG_DOUBLE -lm" { target { {! pow10 } && large_long_double } } } */
 | 
|---|
 | 4784 | -/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -DGNU_EXTENSION -lm" { target {pow10 && {! large_long_double } } } } */
 | 
|---|
 | 4785 | +/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -DGNU_EXTENSION -lm" { target { pow10 && {! large_long_double } } } } */
 | 
|---|
 | 4786 |  /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -lm" { target { {! pow10 } && {! large_long_double } } } } */
 | 
|---|
 | 4787 | -/* { dg-final { scan-tree-dump  "cdce3.C:91: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
 | 
|---|
 | 4788 | -/* { dg-final { scan-tree-dump  "cdce3.C:92: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
 | 
|---|
 | 4789 | -/* { dg-final { scan-tree-dump  "cdce3.C:94: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4790 | -/* { dg-final { scan-tree-dump  "cdce3.C:95: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4791 | -/* { dg-final { scan-tree-dump  "cdce3.C:96: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4792 | -/* { dg-final { scan-tree-dump  "cdce3.C:97: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4793 | +/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details  -DGNU_EXTENSION -DLARGE_LONG_DOUBLE -lm" { target { alpha*-*-* && { pow10 && large_long_double } } } } */
 | 
|---|
 | 4794 | +/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details -DLARGE_LONG_DOUBLE -lm" { target { alpha*-*-* && { {! pow10 } && large_long_double } } } } */
 | 
|---|
 | 4795 | +/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details -DGNU_EXTENSION -lm" { target { alpha*-*-* && { pow10 && {! large_long_double } } } } } */
 | 
|---|
 | 4796 | +/* { dg-options "-mieee -O2 -fmath-errno -fdump-tree-cdce-details -lm" { target { alpha*-*-* && { {! pow10 } && {! large_long_double } } } } } */
 | 
|---|
 | 4797 | +/* { dg-final { scan-tree-dump  "cdce3.C:95: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
 | 
|---|
 | 4798 | +/* { dg-final { scan-tree-dump  "cdce3.C:96: note: function call is shrink-wrapped into error conditions\." "cdce" { target { pow10 } } } } */
 | 
|---|
 | 4799 |  /* { dg-final { scan-tree-dump  "cdce3.C:98: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4800 |  /* { dg-final { scan-tree-dump  "cdce3.C:99: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4801 |  /* { dg-final { scan-tree-dump  "cdce3.C:100: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4802 | @@ -20,6 +20,10 @@
 | 
|---|
 | 4803 |  /* { dg-final { scan-tree-dump  "cdce3.C:105: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4804 |  /* { dg-final { scan-tree-dump  "cdce3.C:106: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4805 |  /* { dg-final { scan-tree-dump  "cdce3.C:107: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4806 | +/* { dg-final { scan-tree-dump  "cdce3.C:108: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4807 | +/* { dg-final { scan-tree-dump  "cdce3.C:109: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4808 | +/* { dg-final { scan-tree-dump  "cdce3.C:110: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4809 | +/* { dg-final { scan-tree-dump  "cdce3.C:111: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
 | 
|---|
 | 4810 |  /* { dg-final { cleanup-tree-dump "cdce" } } */
 | 
|---|
 | 4811 |  #include <stdlib.h>
 | 
|---|
 | 4812 |  #include <math.h>
 | 
|---|
 | 4813 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/cpp0x/enum1.C gcc-4.4.1/gcc/testsuite/g++.dg/cpp0x/enum1.C
 | 
|---|
 | 4814 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/cpp0x/enum1.C   2008-11-10 05:41:37.000000000 -0800
 | 
|---|
 | 4815 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/cpp0x/enum1.C        2009-08-31 14:20:07.000000000 -0700
 | 
|---|
 | 4816 | @@ -2,5 +2,5 @@
 | 
|---|
 | 4817 |  // { dg-do compile }
 | 
|---|
 | 4818 |  // { dg-options "-std=gnu++0x" }
 | 
|---|
 | 4819 |  
 | 
|---|
 | 4820 | -enum : { };    // { dg-error "expected type-specifier" }
 | 
|---|
 | 4821 | +enum : { };    // { dg-error "expected" }
 | 
|---|
 | 4822 |  enum : 3 { };  // { dg-error "expected" }
 | 
|---|
 | 4823 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/cpp0x/initlist22.C gcc-4.4.1/gcc/testsuite/g++.dg/cpp0x/initlist22.C
 | 
|---|
 | 4824 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/cpp0x/initlist22.C      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4825 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/cpp0x/initlist22.C   2009-07-24 11:06:08.000000000 -0700
 | 
|---|
 | 4826 | @@ -0,0 +1,24 @@
 | 
|---|
 | 4827 | +// Core issue 934
 | 
|---|
 | 4828 | +// { dg-options "-std=c++0x" }
 | 
|---|
 | 4829 | +
 | 
|---|
 | 4830 | +int i;
 | 
|---|
 | 4831 | +
 | 
|---|
 | 4832 | +int& r1{ i };                  // OK, direct binding
 | 
|---|
 | 4833 | +int&& r2{ i };                 // OK, direct binding
 | 
|---|
 | 4834 | +
 | 
|---|
 | 4835 | +int& r3{ };                    // { dg-error "" } reference to temporary
 | 
|---|
 | 4836 | +int&& r4{ };                   // OK, reference to temporary
 | 
|---|
 | 4837 | +
 | 
|---|
 | 4838 | +struct A { int i; } a;
 | 
|---|
 | 4839 | +
 | 
|---|
 | 4840 | +A& r5 { i };                   // { dg-error "" } reference to temporary
 | 
|---|
 | 4841 | +A&& r6 { i };                  // OK, aggregate initialization of temporary
 | 
|---|
 | 4842 | +A& r7 { a };                   // { dg-error "" } invalid aggregate initializer for A
 | 
|---|
 | 4843 | +A&& r8 { a };                  // { dg-error "" } invalid aggregate initializer for A
 | 
|---|
 | 4844 | +
 | 
|---|
 | 4845 | +struct B { B(int); int i; } b(0);
 | 
|---|
 | 4846 | +
 | 
|---|
 | 4847 | +B& r9 { i };                   // { dg-error "" } reference to temporary
 | 
|---|
 | 4848 | +B&& r10 { i };                 // OK, make temporary with B(int) constructor
 | 
|---|
 | 4849 | +B& r11 { b };                  // { dg-error "" } reference to temporary
 | 
|---|
 | 4850 | +B&& r12 { b };                 // OK, make temporary with copy constructor
 | 
|---|
 | 4851 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/cpp0x/initlist23.C gcc-4.4.1/gcc/testsuite/g++.dg/cpp0x/initlist23.C
 | 
|---|
 | 4852 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/cpp0x/initlist23.C      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4853 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/cpp0x/initlist23.C   2009-07-24 11:06:08.000000000 -0700
 | 
|---|
 | 4854 | @@ -0,0 +1,15 @@
 | 
|---|
 | 4855 | +// { dg-options "-std=c++0x" }
 | 
|---|
 | 4856 | +
 | 
|---|
 | 4857 | +#include <initializer_list>
 | 
|---|
 | 4858 | +
 | 
|---|
 | 4859 | +struct A
 | 
|---|
 | 4860 | +{
 | 
|---|
 | 4861 | +  A& operator=(int i);
 | 
|---|
 | 4862 | +  A& operator=(std::initializer_list<int> l) { return *this; }
 | 
|---|
 | 4863 | +};
 | 
|---|
 | 4864 | +
 | 
|---|
 | 4865 | +int main()
 | 
|---|
 | 4866 | +{
 | 
|---|
 | 4867 | +  A a;
 | 
|---|
 | 4868 | +  a = { };
 | 
|---|
 | 4869 | +}
 | 
|---|
 | 4870 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C gcc-4.4.1/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
 | 
|---|
 | 4871 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4872 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C    2009-08-04 05:28:27.000000000 -0700
 | 
|---|
 | 4873 | @@ -0,0 +1,14 @@
 | 
|---|
 | 4874 | +// Contributed by Dodji Seketeli <dodji@redhat.com>
 | 
|---|
 | 4875 | +// Origin PR debug/39706
 | 
|---|
 | 4876 | +// { dg-options "-g -dA" }
 | 
|---|
 | 4877 | +// { dg-do compile }
 | 
|---|
 | 4878 | +// { dg-final { scan-assembler-times ".debug_pubnames" 1 } }
 | 
|---|
 | 4879 | +// { dg-final { scan-assembler-times "\"main\".*external name" 1 } }
 | 
|---|
 | 4880 | +// { dg-final { scan-assembler-times "\"ns::ns_x.*external name" 1 } }
 | 
|---|
 | 4881 | +// { dg-final { scan-assembler-times "\"y::y_x.*external name" 1 } }
 | 
|---|
 | 4882 | +
 | 
|---|
 | 4883 | +namespace ns { int ns_x; }
 | 
|---|
 | 4884 | +class y { public: static int y_x; };
 | 
|---|
 | 4885 | +int y::y_x;
 | 
|---|
 | 4886 | +int main() { return ns::ns_x; }
 | 
|---|
 | 4887 | +
 | 
|---|
 | 4888 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/debug/dwarf2/typedef1.C gcc-4.4.1/gcc/testsuite/g++.dg/debug/dwarf2/typedef1.C
 | 
|---|
 | 4889 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/debug/dwarf2/typedef1.C 1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4890 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/debug/dwarf2/typedef1.C      2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 4891 | @@ -0,0 +1,33 @@
 | 
|---|
 | 4892 | +// Contributed by Dodji Seketeli <dodji@redhat.com>
 | 
|---|
 | 4893 | +// Origin: PR c++/40705
 | 
|---|
 | 4894 | +// { dg-options "-g -dA" }
 | 
|---|
 | 4895 | +// { dg-do compile }
 | 
|---|
 | 4896 | +// { dg-final { scan-assembler-times "DW_TAG_structure_type" 2 } }
 | 
|---|
 | 4897 | +// { dg-final { scan-assembler-times "DW_AT_name: \"foo<1u>\"" 1 } }
 | 
|---|
 | 4898 | +// { dg-final { scan-assembler-times "DW_TAG_enumeration_type" 2 } }
 | 
|---|
 | 4899 | +// { dg-final { scan-assembler-times "DW_AT_name: \"typedef foo<1u>::type type\"" 1 } }
 | 
|---|
 | 4900 | +// { dg-final { scan-assembler-times "DIE (.*) DW_TAG_enumeration_type" 2 } }
 | 
|---|
 | 4901 | +// { dg-final { scan-assembler-times "\"e0..\".*DW_AT_name" 1 } }
 | 
|---|
 | 4902 | +// { dg-final { scan-assembler-times "\"e1..\".*DW_AT_name" 1 } }
 | 
|---|
 | 4903 | +
 | 
|---|
 | 4904 | +template <unsigned int n>
 | 
|---|
 | 4905 | +struct foo
 | 
|---|
 | 4906 | +{
 | 
|---|
 | 4907 | +public:
 | 
|---|
 | 4908 | +    typedef
 | 
|---|
 | 4909 | + unsigned char type;
 | 
|---|
 | 4910 | +};
 | 
|---|
 | 4911 | +
 | 
|---|
 | 4912 | +template<>
 | 
|---|
 | 4913 | +struct foo<1>
 | 
|---|
 | 4914 | +{
 | 
|---|
 | 4915 | +    typedef enum { e0, e1 } type;
 | 
|---|
 | 4916 | +};
 | 
|---|
 | 4917 | +
 | 
|---|
 | 4918 | +int
 | 
|---|
 | 4919 | +main()
 | 
|---|
 | 4920 | +{
 | 
|---|
 | 4921 | +    foo<1> f;
 | 
|---|
 | 4922 | +    foo<1>::type t = foo<1>::e1;
 | 
|---|
 | 4923 | +    return t;
 | 
|---|
 | 4924 | +}
 | 
|---|
 | 4925 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/expr/stmt-expr-1.C gcc-4.4.1/gcc/testsuite/g++.dg/expr/stmt-expr-1.C
 | 
|---|
 | 4926 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/expr/stmt-expr-1.C      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4927 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/expr/stmt-expr-1.C   2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 4928 | @@ -0,0 +1,36 @@
 | 
|---|
 | 4929 | +// Contributed by Dodji Seketeli <dodji@redhat.com>
 | 
|---|
 | 4930 | +// Origin PR c++/40866
 | 
|---|
 | 4931 | +// { dg-options "-std=gnu++98" }
 | 
|---|
 | 4932 | +// { dg-do "compile" }
 | 
|---|
 | 4933 | +
 | 
|---|
 | 4934 | +template <typename T> class QForeachContainer {
 | 
|---|
 | 4935 | +public:
 | 
|---|
 | 4936 | +    QForeachContainer();
 | 
|---|
 | 4937 | +    int brk;
 | 
|---|
 | 4938 | +    typename T::const_iterator i;
 | 
|---|
 | 4939 | +};
 | 
|---|
 | 4940 | +
 | 
|---|
 | 4941 | +template <typename T> class QList {
 | 
|---|
 | 4942 | +public:
 | 
|---|
 | 4943 | +    class const_iterator {
 | 
|---|
 | 4944 | +    public:
 | 
|---|
 | 4945 | +        const_iterator(const const_iterator &o);
 | 
|---|
 | 4946 | +        const_iterator &operator++();
 | 
|---|
 | 4947 | +    };
 | 
|---|
 | 4948 | +};
 | 
|---|
 | 4949 | +
 | 
|---|
 | 4950 | +class QAction;
 | 
|---|
 | 4951 | +class QWidget {
 | 
|---|
 | 4952 | +public:
 | 
|---|
 | 4953 | +    QList<QAction*> actions() const;
 | 
|---|
 | 4954 | +};
 | 
|---|
 | 4955 | +class myDialog : public QWidget {
 | 
|---|
 | 4956 | +    myDialog();
 | 
|---|
 | 4957 | +};
 | 
|---|
 | 4958 | +
 | 
|---|
 | 4959 | +myDialog::myDialog()
 | 
|---|
 | 4960 | +{
 | 
|---|
 | 4961 | +    QForeachContainer<__typeof__(actions())> _container_;
 | 
|---|
 | 4962 | +    ({++_container_.brk; ++_container_.i;});
 | 
|---|
 | 4963 | +}
 | 
|---|
 | 4964 | +
 | 
|---|
 | 4965 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/expr/unary3.C gcc-4.4.1/gcc/testsuite/g++.dg/expr/unary3.C
 | 
|---|
 | 4966 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/expr/unary3.C   1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 4967 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/expr/unary3.C        2009-08-21 00:10:36.000000000 -0700
 | 
|---|
 | 4968 | @@ -0,0 +1,11 @@
 | 
|---|
 | 4969 | +// PR c++/41131
 | 
|---|
 | 4970 | +// { dg-do compile }
 | 
|---|
 | 4971 | +
 | 
|---|
 | 4972 | +struct X { enum E { a = 100 }; };
 | 
|---|
 | 4973 | +
 | 
|---|
 | 4974 | +int
 | 
|---|
 | 4975 | +main ()
 | 
|---|
 | 4976 | +{
 | 
|---|
 | 4977 | +  X x;
 | 
|---|
 | 4978 | +  (void) &x.a;    // { dg-error "lvalue required" }
 | 
|---|
 | 4979 | +}
 | 
|---|
 | 4980 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield2.C gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield2.C
 | 
|---|
 | 4981 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield2.C 2009-01-25 12:15:44.000000000 -0800
 | 
|---|
 | 4982 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield2.C      2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 4983 | @@ -1,6 +1,7 @@
 | 
|---|
 | 4984 |  /* { dg-do compile } */
 | 
|---|
 | 4985 |  /* Remove pedantic.  Allow the GCC extension to use char for bitfields.  */
 | 
|---|
 | 4986 |  /* { dg-options "" } */
 | 
|---|
 | 4987 | +/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 4988 |  
 | 
|---|
 | 4989 |  struct t
 | 
|---|
 | 4990 |  { /* { dg-message "note: Offset of packed bit-field 't::b' has changed in GCC 4.4" "" { target pcc_bitfield_type_matters } } */
 | 
|---|
 | 4991 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield3.C gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield3.C
 | 
|---|
 | 4992 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield3.C 2009-01-22 22:29:54.000000000 -0800
 | 
|---|
 | 4993 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield3.C      2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 4994 | @@ -1,5 +1,6 @@
 | 
|---|
 | 4995 |  /* { dg-do compile } */
 | 
|---|
 | 4996 |  /* { dg-options "-Wno-packed-bitfield-compat" } */
 | 
|---|
 | 4997 | +/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 4998 |  
 | 
|---|
 | 4999 |  struct t
 | 
|---|
 | 5000 |  {
 | 
|---|
 | 5001 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield4.C gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield4.C
 | 
|---|
 | 5002 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield4.C 2009-01-25 12:15:44.000000000 -0800
 | 
|---|
 | 5003 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield4.C      2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 5004 | @@ -1,5 +1,6 @@
 | 
|---|
 | 5005 |  /* { dg-do compile } */
 | 
|---|
 | 5006 |  /* { dg-options "" } */
 | 
|---|
 | 5007 | +/* { dg-options "-mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 5008 |  
 | 
|---|
 | 5009 |  struct t
 | 
|---|
 | 5010 |  { /* { dg-message "note: Offset of packed bit-field 't::b' has changed in GCC 4.4" "" { target pcc_bitfield_type_matters } } */
 | 
|---|
 | 5011 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield5.C gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield5.C
 | 
|---|
 | 5012 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/bitfield5.C 2009-01-22 22:29:54.000000000 -0800
 | 
|---|
 | 5013 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/ext/bitfield5.C      2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 5014 | @@ -1,5 +1,6 @@
 | 
|---|
 | 5015 |  /* { dg-do compile } */
 | 
|---|
 | 5016 |  /* { dg-options "-Wno-packed-bitfield-compat" } */
 | 
|---|
 | 5017 | +/* { dg-options "-Wno-packed-bitfield-compat -mno-ms-bitfields" { target i?86-*-netware } } */
 | 
|---|
 | 5018 |  
 | 
|---|
 | 5019 |  struct t
 | 
|---|
 | 5020 |  {
 | 
|---|
 | 5021 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/complit12.C gcc-4.4.1/gcc/testsuite/g++.dg/ext/complit12.C
 | 
|---|
 | 5022 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/ext/complit12.C 1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5023 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/ext/complit12.C      2009-08-06 10:22:19.000000000 -0700
 | 
|---|
 | 5024 | @@ -0,0 +1,65 @@
 | 
|---|
 | 5025 | +// PR c++/40948
 | 
|---|
 | 5026 | +// { dg-do run }
 | 
|---|
 | 5027 | +// { dg-options "" }
 | 
|---|
 | 5028 | +
 | 
|---|
 | 5029 | +int c;
 | 
|---|
 | 5030 | +struct M
 | 
|---|
 | 5031 | +{
 | 
|---|
 | 5032 | +  M () { ++c; }
 | 
|---|
 | 5033 | +  M (const M&) { ++c; }
 | 
|---|
 | 5034 | +  ~M () { --c; }
 | 
|---|
 | 5035 | +};
 | 
|---|
 | 5036 | +
 | 
|---|
 | 5037 | +struct S
 | 
|---|
 | 5038 | +{
 | 
|---|
 | 5039 | +  S ();
 | 
|---|
 | 5040 | +  M m[1];
 | 
|---|
 | 5041 | +};
 | 
|---|
 | 5042 | +
 | 
|---|
 | 5043 | +S::S () : m ((M[1]) { M () })
 | 
|---|
 | 5044 | +{
 | 
|---|
 | 5045 | +}
 | 
|---|
 | 5046 | +
 | 
|---|
 | 5047 | +struct T
 | 
|---|
 | 5048 | +{
 | 
|---|
 | 5049 | +  T ();
 | 
|---|
 | 5050 | +  M m[4];
 | 
|---|
 | 5051 | +};
 | 
|---|
 | 5052 | +
 | 
|---|
 | 5053 | +T::T () : m ((M[4]) { M (), M (), M (), M () })
 | 
|---|
 | 5054 | +{
 | 
|---|
 | 5055 | +}
 | 
|---|
 | 5056 | +
 | 
|---|
 | 5057 | +typedef M MA[1];
 | 
|---|
 | 5058 | +MA &bar (MA, MA& r) { return r; }
 | 
|---|
 | 5059 | +
 | 
|---|
 | 5060 | +M f(M m) { return m; }
 | 
|---|
 | 5061 | +
 | 
|---|
 | 5062 | +int main ()
 | 
|---|
 | 5063 | +{
 | 
|---|
 | 5064 | +  {
 | 
|---|
 | 5065 | +    M m[1] = (M[1]) { M () };
 | 
|---|
 | 5066 | +    if (c != 1)
 | 
|---|
 | 5067 | +      return 1;
 | 
|---|
 | 5068 | +    M n = (M) { M () };
 | 
|---|
 | 5069 | +    if (c != 2)
 | 
|---|
 | 5070 | +      return 2;
 | 
|---|
 | 5071 | +    M o[4] = (M[4]) { M (), M (), M (), M () };
 | 
|---|
 | 5072 | +    if (c != 6)
 | 
|---|
 | 5073 | +      return 3;
 | 
|---|
 | 5074 | +    S s;
 | 
|---|
 | 5075 | +    if (c != 7)
 | 
|---|
 | 5076 | +      return 4;
 | 
|---|
 | 5077 | +    T t;
 | 
|---|
 | 5078 | +    if (c != 11)
 | 
|---|
 | 5079 | +      return 5;
 | 
|---|
 | 5080 | +    MA ma = bar ((M[2]) { M(), M() }, m);
 | 
|---|
 | 5081 | +    if (c != 12)
 | 
|---|
 | 5082 | +      return 7;
 | 
|---|
 | 5083 | +    M mm[2] = ((M[2]) { f(M()), f(M()) });
 | 
|---|
 | 5084 | +    if (c != 14)
 | 
|---|
 | 5085 | +      return 8;
 | 
|---|
 | 5086 | +  }
 | 
|---|
 | 5087 | +  if (c != 0)
 | 
|---|
 | 5088 | +    return 6;
 | 
|---|
 | 5089 | +}
 | 
|---|
 | 5090 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/lookup/using21.C gcc-4.4.1/gcc/testsuite/g++.dg/lookup/using21.C
 | 
|---|
 | 5091 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/lookup/using21.C        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5092 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/lookup/using21.C     2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 5093 | @@ -0,0 +1,13 @@
 | 
|---|
 | 5094 | +// PR c++/40799
 | 
|---|
 | 5095 | +
 | 
|---|
 | 5096 | +namespace Bar {
 | 
|---|
 | 5097 | +  typedef int A;
 | 
|---|
 | 5098 | +}
 | 
|---|
 | 5099 | +class CollectionDeleteGuard {
 | 
|---|
 | 5100 | +public:
 | 
|---|
 | 5101 | +  CollectionDeleteGuard(int);
 | 
|---|
 | 5102 | +};
 | 
|---|
 | 5103 | +CollectionDeleteGuard::CollectionDeleteGuard(int)
 | 
|---|
 | 5104 | +{
 | 
|---|
 | 5105 | +  using Bar::A;
 | 
|---|
 | 5106 | +}
 | 
|---|
 | 5107 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/opt/pr40496.C gcc-4.4.1/gcc/testsuite/g++.dg/opt/pr40496.C
 | 
|---|
 | 5108 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/opt/pr40496.C   1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5109 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/opt/pr40496.C        2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 5110 | @@ -0,0 +1,18 @@
 | 
|---|
 | 5111 | +// { dg-do compile }
 | 
|---|
 | 5112 | +// { dg-options "-O2 -fprefetch-loop-arrays -msse2" { target i?86-*-* x86_64-*-* } }
 | 
|---|
 | 5113 | +
 | 
|---|
 | 5114 | +struct DOMStringHandle
 | 
|---|
 | 5115 | +{
 | 
|---|
 | 5116 | +  unsigned int fLength;
 | 
|---|
 | 5117 | +  int fRefCount;
 | 
|---|
 | 5118 | +};
 | 
|---|
 | 5119 | +static void *freeListPtr;
 | 
|---|
 | 5120 | +void foo(DOMStringHandle *dsg)
 | 
|---|
 | 5121 | +{
 | 
|---|
 | 5122 | +  int i;
 | 
|---|
 | 5123 | +  for (i = 1; i < 1023; i++)
 | 
|---|
 | 5124 | +    {
 | 
|---|
 | 5125 | +      *(void **) &dsg[i] = freeListPtr;
 | 
|---|
 | 5126 | +      freeListPtr = &dsg[i];
 | 
|---|
 | 5127 | +    }
 | 
|---|
 | 5128 | +}
 | 
|---|
 | 5129 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/other/gc4.C gcc-4.4.1/gcc/testsuite/g++.dg/other/gc4.C
 | 
|---|
 | 5130 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/other/gc4.C     1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5131 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/other/gc4.C  2009-08-29 19:06:32.000000000 -0700
 | 
|---|
 | 5132 | @@ -0,0 +1,14 @@
 | 
|---|
 | 5133 | +// PR c++/41120
 | 
|---|
 | 5134 | +// { dg-options "--param ggc-min-heapsize=0 --param ggc-min-expand=0" }
 | 
|---|
 | 5135 | +
 | 
|---|
 | 5136 | +struct A
 | 
|---|
 | 5137 | +{
 | 
|---|
 | 5138 | +  A();
 | 
|---|
 | 5139 | +};
 | 
|---|
 | 5140 | +
 | 
|---|
 | 5141 | +struct B
 | 
|---|
 | 5142 | +{
 | 
|---|
 | 5143 | +  A a;
 | 
|---|
 | 5144 | +};
 | 
|---|
 | 5145 | +
 | 
|---|
 | 5146 | +B b;
 | 
|---|
 | 5147 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/other/typedef3.C gcc-4.4.1/gcc/testsuite/g++.dg/other/typedef3.C
 | 
|---|
 | 5148 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/other/typedef3.C        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5149 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/other/typedef3.C     2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 5150 | @@ -0,0 +1,12 @@
 | 
|---|
 | 5151 | +// Contributed by Dodji Seketeli <dodji@redhat.com>
 | 
|---|
 | 5152 | +// Origin: PR c++/40357
 | 
|---|
 | 5153 | +// { dg-do compile }
 | 
|---|
 | 5154 | +
 | 
|---|
 | 5155 | +struct XalanCProcessor
 | 
|---|
 | 5156 | +{
 | 
|---|
 | 5157 | +      typedef enum {eInvalid, eXalanSourceTree, eXercesDOM} ParseOptionType;
 | 
|---|
 | 5158 | +          ParseOptionType getParseOption(void);
 | 
|---|
 | 5159 | +};
 | 
|---|
 | 5160 | +typedef XalanCProcessor::ParseOptionType ParseOptionType;
 | 
|---|
 | 5161 | +ParseOptionType XalanCProcessor::getParseOption(void) {}
 | 
|---|
 | 5162 | +
 | 
|---|
 | 5163 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/overload/defarg4.C gcc-4.4.1/gcc/testsuite/g++.dg/overload/defarg4.C
 | 
|---|
 | 5164 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/overload/defarg4.C      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5165 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/overload/defarg4.C   2009-08-07 06:15:43.000000000 -0700
 | 
|---|
 | 5166 | @@ -0,0 +1,26 @@
 | 
|---|
 | 5167 | +// Contributed by Dodji Seketeli <dodji@redhat.com>
 | 
|---|
 | 5168 | +// Origin PR c++/39987
 | 
|---|
 | 5169 | +// { dg-do "compile" }
 | 
|---|
 | 5170 | +
 | 
|---|
 | 5171 | +class foo
 | 
|---|
 | 5172 | +{
 | 
|---|
 | 5173 | + template<typename U>
 | 
|---|
 | 5174 | + static bool func(const U& x)
 | 
|---|
 | 5175 | + {}
 | 
|---|
 | 5176 | +public:
 | 
|---|
 | 5177 | + template<typename U>
 | 
|---|
 | 5178 | + unsigned int Find(const U& x, bool (*pFunc) (const U&) = func) const
 | 
|---|
 | 5179 | + {}
 | 
|---|
 | 5180 | +};
 | 
|---|
 | 5181 | +
 | 
|---|
 | 5182 | +class bar {
 | 
|---|
 | 5183 | + bool Initialize();
 | 
|---|
 | 5184 | +protected:
 | 
|---|
 | 5185 | + foo b;
 | 
|---|
 | 5186 | +};
 | 
|---|
 | 5187 | +
 | 
|---|
 | 5188 | +bool bar::Initialize()
 | 
|---|
 | 5189 | +{
 | 
|---|
 | 5190 | +        b.Find(b);
 | 
|---|
 | 5191 | +}
 | 
|---|
 | 5192 | +
 | 
|---|
 | 5193 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/parse/enum5.C gcc-4.4.1/gcc/testsuite/g++.dg/parse/enum5.C
 | 
|---|
 | 5194 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/parse/enum5.C   1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5195 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/parse/enum5.C        2009-08-31 14:20:07.000000000 -0700
 | 
|---|
 | 5196 | @@ -0,0 +1,17 @@
 | 
|---|
 | 5197 | +// PR c++/41127
 | 
|---|
 | 5198 | +
 | 
|---|
 | 5199 | +#define CHAR_BIT 8
 | 
|---|
 | 5200 | +enum EE {ee};
 | 
|---|
 | 5201 | +typedef unsigned int T;
 | 
|---|
 | 5202 | +
 | 
|---|
 | 5203 | +struct D {
 | 
|---|
 | 5204 | +        T : sizeof(unsigned int) * CHAR_BIT; // OK
 | 
|---|
 | 5205 | +        EE : sizeof(EE) * CHAR_BIT; // OK
 | 
|---|
 | 5206 | +        enum EE : sizeof(EE) * CHAR_BIT; // not OK
 | 
|---|
 | 5207 | +        enum EE xxxx : sizeof(EE) * CHAR_BIT; // OK
 | 
|---|
 | 5208 | +        T x : sizeof(unsigned int) * CHAR_BIT; // OK
 | 
|---|
 | 5209 | +        enum FF {ff} : sizeof(int) * CHAR_BIT; // OK
 | 
|---|
 | 5210 | +} element;
 | 
|---|
 | 5211 | +
 | 
|---|
 | 5212 | +enum EE xx;
 | 
|---|
 | 5213 | +EE yy;
 | 
|---|
 | 5214 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40321.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40321.C
 | 
|---|
 | 5215 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40321.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5216 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40321.C    2009-07-22 07:45:21.000000000 -0700
 | 
|---|
 | 5217 | @@ -0,0 +1,25 @@
 | 
|---|
 | 5218 | +/* { dg-do compile } */
 | 
|---|
 | 5219 | +
 | 
|---|
 | 5220 | +struct VectorD2
 | 
|---|
 | 5221 | +{
 | 
|---|
 | 5222 | +  VectorD2() : x(0), y(0) { }
 | 
|---|
 | 5223 | +  VectorD2(int _x, int _y) : x(_x), y(_y) { }
 | 
|---|
 | 5224 | +  int x, y;
 | 
|---|
 | 5225 | +  int GetLength2() const { return x*x + y*y; };
 | 
|---|
 | 5226 | +  VectorD2 operator+(const VectorD2 vec) const {
 | 
|---|
 | 5227 | +      return VectorD2(x+vec.x,y+vec.y);
 | 
|---|
 | 5228 | +  }
 | 
|---|
 | 5229 | +};
 | 
|---|
 | 5230 | +struct Shape
 | 
|---|
 | 5231 | +{
 | 
|---|
 | 5232 | +  enum Type { ST_RECT, ST_CIRCLE } type;
 | 
|---|
 | 5233 | +  VectorD2 pos;
 | 
|---|
 | 5234 | +  VectorD2 radius;
 | 
|---|
 | 5235 | +  bool CollisionWith(const Shape& s) const;
 | 
|---|
 | 5236 | +};
 | 
|---|
 | 5237 | +bool Shape::CollisionWith(const Shape& s) const
 | 
|---|
 | 5238 | +{
 | 
|---|
 | 5239 | +  if(type == ST_CIRCLE && s.type == ST_RECT)
 | 
|---|
 | 5240 | +    return s.CollisionWith(*this);
 | 
|---|
 | 5241 | +  return (pos + s.pos).GetLength2() < (radius + s.radius).GetLength2();
 | 
|---|
 | 5242 | +}
 | 
|---|
 | 5243 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40834.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40834.C
 | 
|---|
 | 5244 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40834.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5245 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40834.C    2009-08-05 07:45:15.000000000 -0700
 | 
|---|
 | 5246 | @@ -0,0 +1,52 @@
 | 
|---|
 | 5247 | +/* { dg-do run } */
 | 
|---|
 | 5248 | +
 | 
|---|
 | 5249 | +extern "C" void abort (void);
 | 
|---|
 | 5250 | +class XalanDOMString
 | 
|---|
 | 5251 | +{
 | 
|---|
 | 5252 | +public:
 | 
|---|
 | 5253 | +  int y;
 | 
|---|
 | 5254 | +};
 | 
|---|
 | 5255 | +
 | 
|---|
 | 5256 | +class XObject
 | 
|---|
 | 5257 | +{
 | 
|---|
 | 5258 | +public:
 | 
|---|
 | 5259 | +  const XalanDOMString& str() const { return x; }
 | 
|---|
 | 5260 | +  XalanDOMString x;
 | 
|---|
 | 5261 | +};
 | 
|---|
 | 5262 | +
 | 
|---|
 | 5263 | +class XObjectPtr
 | 
|---|
 | 5264 | +{
 | 
|---|
 | 5265 | +public:
 | 
|---|
 | 5266 | +  XObjectPtr(const XObjectPtr& theSource)
 | 
|---|
 | 5267 | +    {
 | 
|---|
 | 5268 | +      m_xobjectPtr = theSource.m_xobjectPtr;
 | 
|---|
 | 5269 | +    }
 | 
|---|
 | 5270 | +  const XObject* operator->() const
 | 
|---|
 | 5271 | +    {
 | 
|---|
 | 5272 | +      return m_xobjectPtr;
 | 
|---|
 | 5273 | +    };
 | 
|---|
 | 5274 | +  XObjectPtr(XObject *p) { m_xobjectPtr = p; }
 | 
|---|
 | 5275 | +  XObject* m_xobjectPtr;
 | 
|---|
 | 5276 | +};
 | 
|---|
 | 5277 | +
 | 
|---|
 | 5278 | +class FunctionSubstringBefore
 | 
|---|
 | 5279 | +{
 | 
|---|
 | 5280 | +public:
 | 
|---|
 | 5281 | +  int execute( const XObjectPtr arg1) const
 | 
|---|
 | 5282 | +    {
 | 
|---|
 | 5283 | +      const XalanDOMString& theFirstString = arg1->str();
 | 
|---|
 | 5284 | +      return theFirstString.y;
 | 
|---|
 | 5285 | +    }
 | 
|---|
 | 5286 | +};
 | 
|---|
 | 5287 | +
 | 
|---|
 | 5288 | +int
 | 
|---|
 | 5289 | +main ()
 | 
|---|
 | 5290 | +{
 | 
|---|
 | 5291 | +  XObject x; 
 | 
|---|
 | 5292 | +  XObjectPtr y (&x);
 | 
|---|
 | 5293 | +  x.x.y = -1;
 | 
|---|
 | 5294 | +  FunctionSubstringBefore z;
 | 
|---|
 | 5295 | +  if (z.execute (y) != -1)
 | 
|---|
 | 5296 | +    abort ();
 | 
|---|
 | 5297 | +  return 0;
 | 
|---|
 | 5298 | +}
 | 
|---|
 | 5299 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40924.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40924.C
 | 
|---|
 | 5300 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40924.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5301 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40924.C    2009-08-05 05:54:21.000000000 -0700
 | 
|---|
 | 5302 | @@ -0,0 +1,111 @@
 | 
|---|
 | 5303 | +// PR rtl-optimization/40924
 | 
|---|
 | 5304 | +// { dg-do run }
 | 
|---|
 | 5305 | +
 | 
|---|
 | 5306 | +extern "C" void abort (void);
 | 
|---|
 | 5307 | +
 | 
|---|
 | 5308 | +#define MAY_ALIAS __attribute__((__may_alias__))
 | 
|---|
 | 5309 | +
 | 
|---|
 | 5310 | +typedef struct { float v[2]; } floata;
 | 
|---|
 | 5311 | +typedef struct { int v[2]; } inta;
 | 
|---|
 | 5312 | +
 | 
|---|
 | 5313 | +typedef unsigned int uint MAY_ALIAS;
 | 
|---|
 | 5314 | +typedef signed int sint MAY_ALIAS;
 | 
|---|
 | 5315 | +typedef float flt MAY_ALIAS;
 | 
|---|
 | 5316 | +
 | 
|---|
 | 5317 | +static inline unsigned short
 | 
|---|
 | 5318 | +less_than (inta a, inta b)
 | 
|---|
 | 5319 | +{
 | 
|---|
 | 5320 | +  unsigned short r = 0;
 | 
|---|
 | 5321 | +  const uint *p1 = (const uint *) &a;
 | 
|---|
 | 5322 | +  const uint *p2 = (const uint *) &b;
 | 
|---|
 | 5323 | +  for (int i=0; i < 2; i++)
 | 
|---|
 | 5324 | +    if (p1[i] < p2[i]) r |= (1 << i);
 | 
|---|
 | 5325 | +  return r;
 | 
|---|
 | 5326 | +}
 | 
|---|
 | 5327 | +
 | 
|---|
 | 5328 | +static inline inta
 | 
|---|
 | 5329 | +multiply (inta b, inta c)
 | 
|---|
 | 5330 | +{
 | 
|---|
 | 5331 | +  inta r;
 | 
|---|
 | 5332 | +  sint *p3 = (sint *) &c;
 | 
|---|
 | 5333 | +  for (int i=0; i < 2; i++)
 | 
|---|
 | 5334 | +    r.v[i] = (int) (b.v[i] * p3[i] & 0xFFFFFFFF);
 | 
|---|
 | 5335 | +  return r;
 | 
|---|
 | 5336 | +}
 | 
|---|
 | 5337 | +
 | 
|---|
 | 5338 | +static inline floata
 | 
|---|
 | 5339 | +gather (inta indexes, const void *baseAddr)
 | 
|---|
 | 5340 | +{
 | 
|---|
 | 5341 | +  floata r;
 | 
|---|
 | 5342 | +
 | 
|---|
 | 5343 | +  sint *idx = (sint *) &indexes;
 | 
|---|
 | 5344 | +  flt *src = (flt *) baseAddr;
 | 
|---|
 | 5345 | +  for (int i=0; i < 2; i++)
 | 
|---|
 | 5346 | +    r.v[i] = *(src + idx[i]);
 | 
|---|
 | 5347 | +  return r;
 | 
|---|
 | 5348 | +}
 | 
|---|
 | 5349 | +
 | 
|---|
 | 5350 | +static inline inta
 | 
|---|
 | 5351 | +add (const inta &b, const inta &c)
 | 
|---|
 | 5352 | +{
 | 
|---|
 | 5353 | +  inta result;
 | 
|---|
 | 5354 | +  sint *r = (sint *) &result;
 | 
|---|
 | 5355 | +
 | 
|---|
 | 5356 | +  for (int i=0; i < 2; i++)
 | 
|---|
 | 5357 | +    r[i] = b.v[i] + c.v[i];
 | 
|---|
 | 5358 | +  return result;
 | 
|---|
 | 5359 | +}
 | 
|---|
 | 5360 | +
 | 
|---|
 | 5361 | +struct uintv
 | 
|---|
 | 5362 | +{
 | 
|---|
 | 5363 | +  inta data;
 | 
|---|
 | 5364 | +  inline uintv () { data.v[0] = 0; data.v[1] = 1; }
 | 
|---|
 | 5365 | +  inline uintv (unsigned int a)
 | 
|---|
 | 5366 | +  {
 | 
|---|
 | 5367 | +    for (int i=0; i < 2; i++)
 | 
|---|
 | 5368 | +      *(uint *) &data.v[i] = a;
 | 
|---|
 | 5369 | +  }
 | 
|---|
 | 5370 | +  inline uintv (inta x) : data (x) {}
 | 
|---|
 | 5371 | +  inline uintv operator* (const uintv &x) const
 | 
|---|
 | 5372 | +  { return multiply (data, x.data); }
 | 
|---|
 | 5373 | +  inline uintv operator+ (const uintv &x) const
 | 
|---|
 | 5374 | +  { return uintv (add (data, x.data)); }
 | 
|---|
 | 5375 | +  inline unsigned short operator< (const uintv &x) const
 | 
|---|
 | 5376 | +  { return less_than (data, x.data); }
 | 
|---|
 | 5377 | +};
 | 
|---|
 | 5378 | +
 | 
|---|
 | 5379 | +struct floatv
 | 
|---|
 | 5380 | +{
 | 
|---|
 | 5381 | +  floata data;
 | 
|---|
 | 5382 | +  explicit inline floatv (const uintv &x)
 | 
|---|
 | 5383 | +  {
 | 
|---|
 | 5384 | +    uint *p2 = (uint *) &x.data;
 | 
|---|
 | 5385 | +    for (int i=0; i < 2; i++)
 | 
|---|
 | 5386 | +      data.v[i] = p2[i];
 | 
|---|
 | 5387 | +  }
 | 
|---|
 | 5388 | +  inline floatv (const float *array, const uintv &indexes)
 | 
|---|
 | 5389 | +  {
 | 
|---|
 | 5390 | +    const uintv &offsets = indexes * uintv (1);
 | 
|---|
 | 5391 | +    data = gather (offsets.data, array);
 | 
|---|
 | 5392 | +  }
 | 
|---|
 | 5393 | +  unsigned short operator== (const floatv &x) const
 | 
|---|
 | 5394 | +  {
 | 
|---|
 | 5395 | +    unsigned short r = 0;
 | 
|---|
 | 5396 | +    for (int i=0; i < 2; i++)
 | 
|---|
 | 5397 | +      if (data.v[i] == x.data.v[i]) r |= (1 << i);
 | 
|---|
 | 5398 | +    return r;
 | 
|---|
 | 5399 | +  }
 | 
|---|
 | 5400 | +};
 | 
|---|
 | 5401 | +
 | 
|---|
 | 5402 | +int
 | 
|---|
 | 5403 | +main ()
 | 
|---|
 | 5404 | +{
 | 
|---|
 | 5405 | +  const float array[2] = { 2, 3 };
 | 
|---|
 | 5406 | +  for (uintv i; (i < 2) == 3; i = i + 2)
 | 
|---|
 | 5407 | +    {
 | 
|---|
 | 5408 | +      const floatv ii (i + 2);
 | 
|---|
 | 5409 | +      floatv a (array, i);
 | 
|---|
 | 5410 | +      if ((a == ii) != 3)
 | 
|---|
 | 5411 | +       abort ();
 | 
|---|
 | 5412 | +    }
 | 
|---|
 | 5413 | +}
 | 
|---|
 | 5414 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40991.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40991.C
 | 
|---|
 | 5415 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr40991.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5416 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr40991.C    2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 5417 | @@ -0,0 +1,113 @@
 | 
|---|
 | 5418 | +/* { dg-options "-std=gnu++0x" } */
 | 
|---|
 | 5419 | +
 | 
|---|
 | 5420 | +typedef __SIZE_TYPE__ size_t;
 | 
|---|
 | 5421 | +namespace std __attribute__ ((__visibility__ ("default"))) {
 | 
|---|
 | 5422 | +    using ::size_t;
 | 
|---|
 | 5423 | +    void __throw_bad_function_call() __attribute__((__noreturn__));
 | 
|---|
 | 5424 | +}
 | 
|---|
 | 5425 | +inline void* operator new(std::size_t, void* __p) throw() {
 | 
|---|
 | 5426 | +    return __p;
 | 
|---|
 | 5427 | +}
 | 
|---|
 | 5428 | +namespace std {
 | 
|---|
 | 5429 | +    class type_info {
 | 
|---|
 | 5430 | +    public:
 | 
|---|
 | 5431 | +       bool operator==(const type_info& __arg) const { }
 | 
|---|
 | 5432 | +    };
 | 
|---|
 | 5433 | +    namespace tr1 {
 | 
|---|
 | 5434 | +       template<typename _Tp, _Tp __v> struct integral_constant { };
 | 
|---|
 | 5435 | +       typedef integral_constant<bool, true> true_type;
 | 
|---|
 | 5436 | +       template<typename _Res, typename... _ArgTypes>
 | 
|---|
 | 5437 | +       struct _Maybe_unary_or_binary_function { };
 | 
|---|
 | 5438 | +       class _Undefined_class;
 | 
|---|
 | 5439 | +       union _Nocopy_types {
 | 
|---|
 | 5440 | +           void (_Undefined_class::*_M_member_pointer)();
 | 
|---|
 | 5441 | +       };
 | 
|---|
 | 5442 | +       union _Any_data {
 | 
|---|
 | 5443 | +           void* _M_access() {
 | 
|---|
 | 5444 | +               return &_M_pod_data[0];
 | 
|---|
 | 5445 | +           }
 | 
|---|
 | 5446 | +           char _M_pod_data[sizeof(_Nocopy_types)];
 | 
|---|
 | 5447 | +       };
 | 
|---|
 | 5448 | +       enum _Manager_operation { __get_type_info, __get_functor_ptr, __clone_functor, __destroy_functor };
 | 
|---|
 | 5449 | +       template<typename _Tp> struct _Simple_type_wrapper {
 | 
|---|
 | 5450 | +           _Simple_type_wrapper(_Tp __value) : __value(__value) { }
 | 
|---|
 | 5451 | +           _Tp __value;
 | 
|---|
 | 5452 | +       };
 | 
|---|
 | 5453 | +       template<typename _Signature> class function;
 | 
|---|
 | 5454 | +       class _Function_base {
 | 
|---|
 | 5455 | +       public:
 | 
|---|
 | 5456 | +           static const std::size_t _M_max_size = sizeof(_Nocopy_types);
 | 
|---|
 | 5457 | +           static const std::size_t _M_max_align = __alignof__(_Nocopy_types);
 | 
|---|
 | 5458 | +           template<typename _Functor> class _Base_manager {
 | 
|---|
 | 5459 | +               static const bool __stored_locally = (sizeof(_Functor) <= _M_max_size && __alignof__(_Functor) <= _M_max_align && (_M_max_align % __alignof__(_Functor) == 0));
 | 
|---|
 | 5460 | +               typedef integral_constant<bool, __stored_locally> _Local_storage;
 | 
|---|
 | 5461 | +           public:
 | 
|---|
 | 5462 | +               static bool _M_manager(_Any_data& __dest, const _Any_data& __source, _Manager_operation __op) { }
 | 
|---|
 | 5463 | +               static void _M_init_functor(_Any_data& __functor, const _Functor& __f) {
 | 
|---|
 | 5464 | +                   _M_init_functor(__functor, __f, _Local_storage());
 | 
|---|
 | 5465 | +               }
 | 
|---|
 | 5466 | +               template<typename _Class, typename _Tp> static bool _M_not_empty_function(_Tp _Class::* const& __mp) {
 | 
|---|
 | 5467 | +                   return __mp;
 | 
|---|
 | 5468 | +               }
 | 
|---|
 | 5469 | +               static void _M_init_functor(_Any_data& __functor, const _Functor& __f, true_type) {
 | 
|---|
 | 5470 | +                   new (__functor._M_access()) _Functor(__f);
 | 
|---|
 | 5471 | +               }
 | 
|---|
 | 5472 | +           };
 | 
|---|
 | 5473 | +           ~_Function_base() {
 | 
|---|
 | 5474 | +               if (_M_manager) _M_manager(_M_functor, _M_functor, __destroy_functor);
 | 
|---|
 | 5475 | +           }
 | 
|---|
 | 5476 | +           bool _M_empty() const {
 | 
|---|
 | 5477 | +               return !_M_manager;
 | 
|---|
 | 5478 | +           }
 | 
|---|
 | 5479 | +           typedef bool (*_Manager_type)(_Any_data&, const _Any_data&, _Manager_operation);
 | 
|---|
 | 5480 | +           _Any_data _M_functor;
 | 
|---|
 | 5481 | +           _Manager_type _M_manager;
 | 
|---|
 | 5482 | +       };
 | 
|---|
 | 5483 | +       template<typename _Signature, typename _Functor> class _Function_handler;
 | 
|---|
 | 5484 | +       template<typename _Class, typename _Member, typename _Res, typename... _ArgTypes> class _Function_handler<_Res(_ArgTypes...), _Member _Class::*> : public _Function_handler<void(_ArgTypes...), _Member _Class::*> {
 | 
|---|
 | 5485 | +       public:
 | 
|---|
 | 5486 | +           static _Res _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { }
 | 
|---|
 | 5487 | +       };
 | 
|---|
 | 5488 | +       template<typename _Class, typename _Member, typename... _ArgTypes> class _Function_handler<void(_ArgTypes...), _Member _Class::*> : public _Function_base::_Base_manager< _Simple_type_wrapper< _Member _Class::* > > { };
 | 
|---|
 | 5489 | +       template<typename _Res, typename... _ArgTypes> class function<_Res(_ArgTypes...)> : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, private _Function_base {
 | 
|---|
 | 5490 | +           typedef _Res _Signature_type(_ArgTypes...);
 | 
|---|
 | 5491 | +           struct _Useless { };
 | 
|---|
 | 5492 | +       public:
 | 
|---|
 | 5493 | +           template<typename _Functor> function(_Functor __f, _Useless = _Useless());
 | 
|---|
 | 5494 | +           _Res operator()(_ArgTypes... __args) const;
 | 
|---|
 | 5495 | +           const type_info& target_type() const;
 | 
|---|
 | 5496 | +           typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...);
 | 
|---|
 | 5497 | +           _Invoker_type _M_invoker;
 | 
|---|
 | 5498 | +       };
 | 
|---|
 | 5499 | +       template<typename _Res, typename... _ArgTypes> template<typename _Functor> function<_Res(_ArgTypes...)>:: function(_Functor __f, _Useless) : _Function_base() {
 | 
|---|
 | 5500 | +           typedef _Function_handler<_Signature_type, _Functor> _My_handler;
 | 
|---|
 | 5501 | +           if (_My_handler::_M_not_empty_function(__f)) {
 | 
|---|
 | 5502 | +               _M_invoker = &_My_handler::_M_invoke;
 | 
|---|
 | 5503 | +               _M_manager = &_My_handler::_M_manager;
 | 
|---|
 | 5504 | +               _My_handler::_M_init_functor(_M_functor, __f);
 | 
|---|
 | 5505 | +           }
 | 
|---|
 | 5506 | +       }
 | 
|---|
 | 5507 | +       template<typename _Res, typename... _ArgTypes> _Res function<_Res(_ArgTypes...)>:: operator()(_ArgTypes... __args) const {
 | 
|---|
 | 5508 | +           if (_M_empty()) {
 | 
|---|
 | 5509 | +               __throw_bad_function_call();
 | 
|---|
 | 5510 | +           }
 | 
|---|
 | 5511 | +           return _M_invoker(_M_functor, __args...);
 | 
|---|
 | 5512 | +       }
 | 
|---|
 | 5513 | +       template<typename _Res, typename... _ArgTypes> const type_info& function<_Res(_ArgTypes...)>:: target_type() const {
 | 
|---|
 | 5514 | +           if (_M_manager) {
 | 
|---|
 | 5515 | +               _Any_data __typeinfo_result;
 | 
|---|
 | 5516 | +               _M_manager(__typeinfo_result, _M_functor, __get_type_info);
 | 
|---|
 | 5517 | +           }
 | 
|---|
 | 5518 | +       }
 | 
|---|
 | 5519 | +    }
 | 
|---|
 | 5520 | +}
 | 
|---|
 | 5521 | +struct X {
 | 
|---|
 | 5522 | +    int bar;
 | 
|---|
 | 5523 | +};
 | 
|---|
 | 5524 | +void test05() {
 | 
|---|
 | 5525 | +    using std::tr1::function;
 | 
|---|
 | 5526 | +    X x;
 | 
|---|
 | 5527 | +    function<int(X&)> frm(&X::bar);
 | 
|---|
 | 5528 | +    frm(x) == 17;
 | 
|---|
 | 5529 | +    typeid(int X::*) == frm.target_type();
 | 
|---|
 | 5530 | +}
 | 
|---|
 | 5531 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41144.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41144.C
 | 
|---|
 | 5532 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41144.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5533 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41144.C    2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 5534 | @@ -0,0 +1,23 @@
 | 
|---|
 | 5535 | +/* { dg-do compile } */
 | 
|---|
 | 5536 | +
 | 
|---|
 | 5537 | +struct rgba8;
 | 
|---|
 | 5538 | +template<class ColorT> class span_gouraud     {
 | 
|---|
 | 5539 | +public:
 | 
|---|
 | 5540 | +    struct coord_type { };
 | 
|---|
 | 5541 | +    coord_type m_coord[3];
 | 
|---|
 | 5542 | +};
 | 
|---|
 | 5543 | +template<class ColorT> class span_gouraud_rgba : public span_gouraud<ColorT>   
 | 
|---|
 | 5544 | +{
 | 
|---|
 | 5545 | +  typedef ColorT color_type;
 | 
|---|
 | 5546 | +  typedef span_gouraud<color_type> base_type;
 | 
|---|
 | 5547 | +  typedef typename base_type::coord_type coord_type;
 | 
|---|
 | 5548 | +public:
 | 
|---|
 | 5549 | +  void prepare()         {
 | 
|---|
 | 5550 | +      coord_type coord[3];
 | 
|---|
 | 5551 | +  }
 | 
|---|
 | 5552 | +};
 | 
|---|
 | 5553 | +void the_application() {
 | 
|---|
 | 5554 | +    typedef span_gouraud_rgba<rgba8> gouraud_span_gen_type;
 | 
|---|
 | 5555 | +    gouraud_span_gen_type span_gouraud;
 | 
|---|
 | 5556 | +    span_gouraud.prepare();
 | 
|---|
 | 5557 | +}
 | 
|---|
 | 5558 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41257-2.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41257-2.C
 | 
|---|
 | 5559 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41257-2.C     1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5560 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41257-2.C  2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 5561 | @@ -0,0 +1,16 @@
 | 
|---|
 | 5562 | +/* { dg-do link } */
 | 
|---|
 | 5563 | +
 | 
|---|
 | 5564 | +struct A
 | 
|---|
 | 5565 | +{
 | 
|---|
 | 5566 | +  virtual ~A();
 | 
|---|
 | 5567 | +};
 | 
|---|
 | 5568 | +
 | 
|---|
 | 5569 | +struct B : virtual A
 | 
|---|
 | 5570 | +{
 | 
|---|
 | 5571 | +  virtual ~B() {}
 | 
|---|
 | 5572 | +};
 | 
|---|
 | 5573 | +
 | 
|---|
 | 5574 | +int main()
 | 
|---|
 | 5575 | +{
 | 
|---|
 | 5576 | +  return 0;
 | 
|---|
 | 5577 | +}
 | 
|---|
 | 5578 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41257.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41257.C
 | 
|---|
 | 5579 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41257.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5580 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41257.C    2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 5581 | @@ -0,0 +1,20 @@
 | 
|---|
 | 5582 | +/* { dg-do compile } */
 | 
|---|
 | 5583 | +
 | 
|---|
 | 5584 | +struct A
 | 
|---|
 | 5585 | +{
 | 
|---|
 | 5586 | +  virtual void foo();
 | 
|---|
 | 5587 | +  virtual ~A();
 | 
|---|
 | 5588 | +  int i;
 | 
|---|
 | 5589 | +};
 | 
|---|
 | 5590 | +
 | 
|---|
 | 5591 | +struct B : virtual A {};
 | 
|---|
 | 5592 | +
 | 
|---|
 | 5593 | +struct C : B
 | 
|---|
 | 5594 | +{
 | 
|---|
 | 5595 | +  virtual void foo();
 | 
|---|
 | 5596 | +};
 | 
|---|
 | 5597 | +
 | 
|---|
 | 5598 | +void bar()
 | 
|---|
 | 5599 | +{
 | 
|---|
 | 5600 | +  C().foo();
 | 
|---|
 | 5601 | +}
 | 
|---|
 | 5602 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41273.C gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41273.C
 | 
|---|
 | 5603 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/torture/pr41273.C       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5604 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/torture/pr41273.C    2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 5605 | @@ -0,0 +1,18 @@
 | 
|---|
 | 5606 | +/* { dg-do compile } */
 | 
|---|
 | 5607 | +/* { dg-options "-g" } */
 | 
|---|
 | 5608 | +
 | 
|---|
 | 5609 | +long *H2_ipX_ener_sort;
 | 
|---|
 | 5610 | +double H2_old_populations[2];
 | 
|---|
 | 5611 | +double H2_total;
 | 
|---|
 | 5612 | +
 | 
|---|
 | 5613 | +void H2_LevelPops()
 | 
|---|
 | 5614 | +{
 | 
|---|
 | 5615 | +  double sum_pop = 0.;
 | 
|---|
 | 5616 | +  long nEner = 0;
 | 
|---|
 | 5617 | +  while( nEner < 3 && sum_pop/H2_total < 0.99999 )
 | 
|---|
 | 5618 | +    {
 | 
|---|
 | 5619 | +      long ip = H2_ipX_ener_sort[nEner];
 | 
|---|
 | 5620 | +      sum_pop += H2_old_populations[ip];
 | 
|---|
 | 5621 | +      ++nEner;
 | 
|---|
 | 5622 | +    }
 | 
|---|
 | 5623 | +}
 | 
|---|
 | 5624 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.dg/warn/Wreturn-type-6.C gcc-4.4.1/gcc/testsuite/g++.dg/warn/Wreturn-type-6.C
 | 
|---|
 | 5625 | --- gcc-4.4.1.orig/gcc/testsuite/g++.dg/warn/Wreturn-type-6.C   1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5626 | +++ gcc-4.4.1/gcc/testsuite/g++.dg/warn/Wreturn-type-6.C        2009-07-26 09:05:22.000000000 -0700
 | 
|---|
 | 5627 | @@ -0,0 +1,13 @@
 | 
|---|
 | 5628 | +/* PR c++/40749 */
 | 
|---|
 | 5629 | +/* { dg-do "compile" } */
 | 
|---|
 | 5630 | +/* { dg-options "-Wreturn-type" } */
 | 
|---|
 | 5631 | +
 | 
|---|
 | 5632 | +struct A {};
 | 
|---|
 | 5633 | +const A a() {} /* { dg-warning "no return statement" } */
 | 
|---|
 | 5634 | +const A& b() {} /* { dg-warning "no return statement" } */
 | 
|---|
 | 5635 | +
 | 
|---|
 | 5636 | +const int c() {} /* { dg-warning "no return statement" } */
 | 
|---|
 | 5637 | +
 | 
|---|
 | 5638 | +template<class T>
 | 
|---|
 | 5639 | +const int foo(T t) {} /* { dg-warning "no return statement" } */
 | 
|---|
 | 5640 | +int d = foo<int>(0), e = foo<int>(1);
 | 
|---|
 | 5641 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/altreturn_7.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/altreturn_7.f90
 | 
|---|
 | 5642 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/altreturn_7.f90    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5643 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/altreturn_7.f90 2009-07-28 09:51:19.000000000 -0700
 | 
|---|
 | 5644 | @@ -0,0 +1,34 @@
 | 
|---|
 | 5645 | +! { dg-do compile }
 | 
|---|
 | 5646 | +!
 | 
|---|
 | 5647 | +! PR 40848: [4.5 Regression] ICE with alternate returns
 | 
|---|
 | 5648 | +!
 | 
|---|
 | 5649 | +! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
 | 
|---|
 | 5650 | +
 | 
|---|
 | 5651 | +MODULE TT
 | 
|---|
 | 5652 | +
 | 
|---|
 | 5653 | +INTERFACE M
 | 
|---|
 | 5654 | + MODULE PROCEDURE M1,M2
 | 
|---|
 | 5655 | +END INTERFACE
 | 
|---|
 | 5656 | +
 | 
|---|
 | 5657 | +CONTAINS
 | 
|---|
 | 5658 | +
 | 
|---|
 | 5659 | + SUBROUTINE M1(I,*)
 | 
|---|
 | 5660 | +   INTEGER :: I
 | 
|---|
 | 5661 | +   RETURN 1
 | 
|---|
 | 5662 | + END SUBROUTINE
 | 
|---|
 | 5663 | +
 | 
|---|
 | 5664 | + SUBROUTINE M2(I,J)
 | 
|---|
 | 5665 | +   INTEGER :: I,J
 | 
|---|
 | 5666 | + END SUBROUTINE
 | 
|---|
 | 5667 | +
 | 
|---|
 | 5668 | +END MODULE
 | 
|---|
 | 5669 | +
 | 
|---|
 | 5670 | +
 | 
|---|
 | 5671 | +  USE TT
 | 
|---|
 | 5672 | +  CALL M(1,*2)
 | 
|---|
 | 5673 | +  CALL ABORT()
 | 
|---|
 | 5674 | +2 CONTINUE
 | 
|---|
 | 5675 | +END
 | 
|---|
 | 5676 | +
 | 
|---|
 | 5677 | +! { dg-final { cleanup-modules "tt" } }
 | 
|---|
 | 5678 | +
 | 
|---|
 | 5679 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/c_f_pointer_tests_4.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/c_f_pointer_tests_4.f90
 | 
|---|
 | 5680 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/c_f_pointer_tests_4.f90    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5681 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/c_f_pointer_tests_4.f90 2009-08-20 13:42:38.000000000 -0700
 | 
|---|
 | 5682 | @@ -0,0 +1,15 @@
 | 
|---|
 | 5683 | +! { dg-do run }
 | 
|---|
 | 5684 | +program main
 | 
|---|
 | 5685 | +   use iso_c_binding, only: c_ptr, c_loc, c_f_pointer
 | 
|---|
 | 5686 | +   implicit none
 | 
|---|
 | 5687 | +   integer, dimension(2,1,2), target :: table
 | 
|---|
 | 5688 | +   table = reshape ( (/ 1,2,-1,-2/), (/2,1,2/))
 | 
|---|
 | 5689 | +   call set_table (c_loc (table))
 | 
|---|
 | 5690 | +contains
 | 
|---|
 | 5691 | +   subroutine set_table (cptr)
 | 
|---|
 | 5692 | +     type(c_ptr), intent(in) :: cptr
 | 
|---|
 | 5693 | +     integer, dimension(:,:,:), pointer :: table_tmp
 | 
|---|
 | 5694 | +     call c_f_pointer (cptr, table_tmp, (/2,1,2/))
 | 
|---|
 | 5695 | +     if (any(table_tmp /= table)) call abort
 | 
|---|
 | 5696 | +   end subroutine set_table
 | 
|---|
 | 5697 | +end program main
 | 
|---|
 | 5698 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/char_length_16.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/char_length_16.f90
 | 
|---|
 | 5699 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/char_length_16.f90 1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5700 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/char_length_16.f90      2009-07-28 09:51:19.000000000 -0700
 | 
|---|
 | 5701 | @@ -0,0 +1,12 @@
 | 
|---|
 | 5702 | +! { dg-do compile }
 | 
|---|
 | 5703 | +!
 | 
|---|
 | 5704 | +! PR 40822: [4.5 Regression] Internal compiler error when Fortran intrinsic LEN referenced before explicit declaration
 | 
|---|
 | 5705 | +!
 | 
|---|
 | 5706 | +! Contributed by Mat Cross <mathewc@nag.co.uk>
 | 
|---|
 | 5707 | +
 | 
|---|
 | 5708 | +SUBROUTINE SEARCH(ITEMVAL)
 | 
|---|
 | 5709 | +  CHARACTER (*) :: ITEMVAL
 | 
|---|
 | 5710 | +  CHARACTER (LEN(ITEMVAL)) :: ITEM
 | 
|---|
 | 5711 | +  INTRINSIC LEN
 | 
|---|
 | 5712 | +END
 | 
|---|
 | 5713 | +
 | 
|---|
 | 5714 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/derived_init_3.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/derived_init_3.f90
 | 
|---|
 | 5715 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/derived_init_3.f90 1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5716 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/derived_init_3.f90      2009-07-29 02:35:15.000000000 -0700
 | 
|---|
 | 5717 | @@ -0,0 +1,34 @@
 | 
|---|
 | 5718 | +! { dg-do run }
 | 
|---|
 | 5719 | +!
 | 
|---|
 | 5720 | +! PR fortran/40851
 | 
|---|
 | 5721 | +!
 | 
|---|
 | 5722 | +! Make sure the an INTENT(OUT) dummy is not initialized
 | 
|---|
 | 5723 | +! when it is a pointer.
 | 
|---|
 | 5724 | +!
 | 
|---|
 | 5725 | +! Contributed by Juergen Reuter <juergen.reuter@desy.de>.
 | 
|---|
 | 5726 | +!
 | 
|---|
 | 5727 | +program main
 | 
|---|
 | 5728 | +
 | 
|---|
 | 5729 | +  type :: string
 | 
|---|
 | 5730 | +     character,dimension(:),allocatable :: chars
 | 
|---|
 | 5731 | +  end type string
 | 
|---|
 | 5732 | +
 | 
|---|
 | 5733 | +  type :: string_container
 | 
|---|
 | 5734 | +     type(string) :: string
 | 
|---|
 | 5735 | +  end type string_container
 | 
|---|
 | 5736 | +
 | 
|---|
 | 5737 | +  type(string_container), target :: tgt
 | 
|---|
 | 5738 | +  type(string_container), pointer :: ptr
 | 
|---|
 | 5739 | +
 | 
|---|
 | 5740 | +  ptr => tgt
 | 
|---|
 | 5741 | +  call set_ptr (ptr)
 | 
|---|
 | 5742 | +  if (associated(ptr)) call abort()
 | 
|---|
 | 5743 | +
 | 
|---|
 | 5744 | +contains
 | 
|---|
 | 5745 | +
 | 
|---|
 | 5746 | +  subroutine set_ptr (ptr)
 | 
|---|
 | 5747 | +    type(string_container), pointer, intent(out) :: ptr
 | 
|---|
 | 5748 | +    ptr => null ()
 | 
|---|
 | 5749 | +  end subroutine set_ptr
 | 
|---|
 | 5750 | +
 | 
|---|
 | 5751 | +end program main
 | 
|---|
 | 5752 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/fmt_cache_1.f gcc-4.4.1/gcc/testsuite/gfortran.dg/fmt_cache_1.f
 | 
|---|
 | 5753 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/fmt_cache_1.f      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5754 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/fmt_cache_1.f   2009-07-23 10:50:56.000000000 -0700
 | 
|---|
 | 5755 | @@ -0,0 +1,33 @@
 | 
|---|
 | 5756 | +! { dg-do run { target fd_truncate } }
 | 
|---|
 | 5757 | +! pr40662 segfaults when specific format is invoked twice.
 | 
|---|
 | 5758 | +! pr40330  incorrect io.
 | 
|---|
 | 5759 | +! test case derived from pr40662, <jvdelisle@gcc.gnu.org>
 | 
|---|
 | 5760 | +      program astap
 | 
|---|
 | 5761 | +      character(40) teststring
 | 
|---|
 | 5762 | +      arlxca = 0.0
 | 
|---|
 | 5763 | +      open(10)
 | 
|---|
 | 5764 | +      write(10,40) arlxca
 | 
|---|
 | 5765 | +      write(10,40) arlxca
 | 
|---|
 | 5766 | +40    format(t4,"arlxca = ",1pg13.6,t27,"arlxcc = ",g13.6,t53,
 | 
|---|
 | 5767 | +     .            "atmpca = ",g13.6,t79,"atmpcc = ",g13.6,t105,
 | 
|---|
 | 5768 | +     .            "backup = ",g13.6,/,
 | 
|---|
 | 5769 | +     .         t4,"csgfac = ",g13.6,t27,"csgmax = ",g13.6,t53,
 | 
|---|
 | 5770 | +     .            "csgmin = ",g13.6,t79,"drlxca = ",g13.6,t105,
 | 
|---|
 | 5771 | +     .            "drlxcc = ",g13.6,/,
 | 
|---|
 | 5772 | +     .         t4,"dtimeh = ",g13.6,t27,"dtimei = ",g13.6,t53,
 | 
|---|
 | 5773 | +     .            "dtimel = ",g13.6,t79,"dtimeu = ",g13.6,t105,
 | 
|---|
 | 5774 | +     .            "dtmpca = ",g13.6,/,
 | 
|---|
 | 5775 | +     .         t4,"dtmpcc = ",g13.6,t27,"ebalna = ",g13.6,t53,
 | 
|---|
 | 5776 | +     .            "ebalnc = ",g13.6,t79,"ebalsa = ",g13.6,t105,
 | 
|---|
 | 5777 | +     .            "ebalsc = ",g13.6)
 | 
|---|
 | 5778 | +      rewind 10
 | 
|---|
 | 5779 | +      rewind 10
 | 
|---|
 | 5780 | +      teststring = ""
 | 
|---|
 | 5781 | +      read(10,'(a)') teststring
 | 
|---|
 | 5782 | +      if (teststring.ne."   arlxca =   0.00000     arlxcc = ")call abort
 | 
|---|
 | 5783 | +      teststring = ""
 | 
|---|
 | 5784 | +      read(10,'(a)') teststring
 | 
|---|
 | 5785 | +      if (teststring.ne."   arlxca =   0.00000     arlxcc = ")call abort
 | 
|---|
 | 5786 | +      end program astap
 | 
|---|
 | 5787 | +
 | 
|---|
 | 5788 | +
 | 
|---|
 | 5789 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/gomp/pr40878-1.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/gomp/pr40878-1.f90
 | 
|---|
 | 5790 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/gomp/pr40878-1.f90 1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5791 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/gomp/pr40878-1.f90      2009-07-28 09:33:08.000000000 -0700
 | 
|---|
 | 5792 | @@ -0,0 +1,63 @@
 | 
|---|
 | 5793 | +! PR fortran/40878
 | 
|---|
 | 5794 | +! { dg-do compile }
 | 
|---|
 | 5795 | +! { dg-options "-fopenmp" }
 | 
|---|
 | 5796 | +
 | 
|---|
 | 5797 | +subroutine test1
 | 
|---|
 | 5798 | +  integer :: j, k
 | 
|---|
 | 5799 | +  integer :: m = 2
 | 
|---|
 | 5800 | +!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "Constant expression required" }
 | 
|---|
 | 5801 | +  do k = 1, 2
 | 
|---|
 | 5802 | +    do j = 1, 6
 | 
|---|
 | 5803 | +    enddo
 | 
|---|
 | 5804 | +  enddo
 | 
|---|
 | 5805 | +!$omp end parallel do
 | 
|---|
 | 5806 | +end
 | 
|---|
 | 5807 | +subroutine test2
 | 
|---|
 | 5808 | +  integer :: j, k
 | 
|---|
 | 5809 | +  integer :: m
 | 
|---|
 | 5810 | +  m = 2
 | 
|---|
 | 5811 | +!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "Constant expression required" }
 | 
|---|
 | 5812 | +  do k = 1, 2
 | 
|---|
 | 5813 | +    do j = 1, 6
 | 
|---|
 | 5814 | +    enddo
 | 
|---|
 | 5815 | +  enddo
 | 
|---|
 | 5816 | +!$omp end parallel do
 | 
|---|
 | 5817 | +end
 | 
|---|
 | 5818 | +subroutine test3
 | 
|---|
 | 5819 | +  integer :: j, k
 | 
|---|
 | 5820 | +  integer, parameter :: m = 0
 | 
|---|
 | 5821 | +!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "not constant positive integer" }
 | 
|---|
 | 5822 | +  do k = 1, 2
 | 
|---|
 | 5823 | +    do j = 1, 6
 | 
|---|
 | 5824 | +    enddo
 | 
|---|
 | 5825 | +  enddo
 | 
|---|
 | 5826 | +!$omp end parallel do
 | 
|---|
 | 5827 | +end
 | 
|---|
 | 5828 | +subroutine test4
 | 
|---|
 | 5829 | +  integer :: j, k
 | 
|---|
 | 5830 | +  integer, parameter :: m = -2
 | 
|---|
 | 5831 | +!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "not constant positive integer" }
 | 
|---|
 | 5832 | +  do k = 1, 2
 | 
|---|
 | 5833 | +    do j = 1, 6
 | 
|---|
 | 5834 | +    enddo
 | 
|---|
 | 5835 | +  enddo
 | 
|---|
 | 5836 | +!$omp end parallel do
 | 
|---|
 | 5837 | +end
 | 
|---|
 | 5838 | +subroutine test5
 | 
|---|
 | 5839 | +  integer :: j, k
 | 
|---|
 | 5840 | +!$omp parallel do collapse(0) schedule (static,1) ! { dg-error "not constant positive integer" }
 | 
|---|
 | 5841 | +  do k = 1, 2
 | 
|---|
 | 5842 | +    do j = 1, 6
 | 
|---|
 | 5843 | +    enddo
 | 
|---|
 | 5844 | +  enddo
 | 
|---|
 | 5845 | +!$omp end parallel do
 | 
|---|
 | 5846 | +end
 | 
|---|
 | 5847 | +subroutine test6
 | 
|---|
 | 5848 | +  integer :: j, k
 | 
|---|
 | 5849 | +!$omp parallel do collapse(-1) schedule (static,1) ! { dg-error "not constant positive integer" }
 | 
|---|
 | 5850 | +  do k = 1, 2
 | 
|---|
 | 5851 | +    do j = 1, 6
 | 
|---|
 | 5852 | +    enddo
 | 
|---|
 | 5853 | +  enddo
 | 
|---|
 | 5854 | +!$omp end parallel do
 | 
|---|
 | 5855 | +end
 | 
|---|
 | 5856 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/gomp/pr40878-2.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/gomp/pr40878-2.f90
 | 
|---|
 | 5857 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/gomp/pr40878-2.f90 1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5858 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/gomp/pr40878-2.f90      2009-07-28 09:33:08.000000000 -0700
 | 
|---|
 | 5859 | @@ -0,0 +1,23 @@
 | 
|---|
 | 5860 | +! PR fortran/40878
 | 
|---|
 | 5861 | +! { dg-do compile }
 | 
|---|
 | 5862 | +! { dg-options "-fopenmp" } 
 | 
|---|
 | 5863 | +
 | 
|---|
 | 5864 | +subroutine test1
 | 
|---|
 | 5865 | +  integer :: j, k
 | 
|---|
 | 5866 | +  integer, parameter :: m = 2
 | 
|---|
 | 5867 | +!$omp parallel do collapse(m) schedule (static,1)
 | 
|---|
 | 5868 | +  do k = 1, 2
 | 
|---|
 | 5869 | +    do j = 1, 6
 | 
|---|
 | 5870 | +    enddo
 | 
|---|
 | 5871 | +  enddo
 | 
|---|
 | 5872 | +!$omp end parallel do
 | 
|---|
 | 5873 | +end
 | 
|---|
 | 5874 | +subroutine test2
 | 
|---|
 | 5875 | +  integer :: j, k
 | 
|---|
 | 5876 | +!$omp parallel do collapse(2) schedule (static,1)
 | 
|---|
 | 5877 | +  do k = 1, 2
 | 
|---|
 | 5878 | +    do j = 1, 6
 | 
|---|
 | 5879 | +    enddo
 | 
|---|
 | 5880 | +  enddo
 | 
|---|
 | 5881 | +!$omp end parallel do
 | 
|---|
 | 5882 | +end
 | 
|---|
 | 5883 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_3.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_3.f90
 | 
|---|
 | 5884 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_3.f90    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5885 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_3.f90 2009-09-11 15:11:06.000000000 -0700
 | 
|---|
 | 5886 | @@ -0,0 +1,40 @@
 | 
|---|
 | 5887 | +! { dg-do compile }
 | 
|---|
 | 5888 | +! { dg-options "-std=f95" }
 | 
|---|
 | 5889 | +!
 | 
|---|
 | 5890 | +! PR 39876: module procedure name that collides with the GNU intrinsic
 | 
|---|
 | 5891 | +!
 | 
|---|
 | 5892 | +! Contributed by Alexei Matveev <alexei.matveev+gcc@gmail.com>
 | 
|---|
 | 5893 | +
 | 
|---|
 | 5894 | +module p                           
 | 
|---|
 | 5895 | +  implicit none                                                                 
 | 
|---|
 | 5896 | +
 | 
|---|
 | 5897 | +  contains
 | 
|---|
 | 5898 | +
 | 
|---|
 | 5899 | +    subroutine test()
 | 
|---|
 | 5900 | +      implicit none
 | 
|---|
 | 5901 | +      print *, avg(erfc)
 | 
|---|
 | 5902 | +    end subroutine test
 | 
|---|
 | 5903 | +
 | 
|---|
 | 5904 | +    function avg(f)
 | 
|---|
 | 5905 | +      implicit none
 | 
|---|
 | 5906 | +      double precision :: avg
 | 
|---|
 | 5907 | +      interface
 | 
|---|
 | 5908 | +        double precision function f(x)
 | 
|---|
 | 5909 | +          implicit none
 | 
|---|
 | 5910 | +          double precision, intent(in) :: x
 | 
|---|
 | 5911 | +        end function f
 | 
|---|
 | 5912 | +      end interface
 | 
|---|
 | 5913 | +      avg = ( f(1.0D0) + f(2.0D0) ) / 2
 | 
|---|
 | 5914 | +    end function avg
 | 
|---|
 | 5915 | +
 | 
|---|
 | 5916 | +    function erfc(x)
 | 
|---|
 | 5917 | +      implicit none
 | 
|---|
 | 5918 | +      double precision, intent(in) :: x
 | 
|---|
 | 5919 | +      double precision             :: erfc
 | 
|---|
 | 5920 | +      erfc = x
 | 
|---|
 | 5921 | +    end function erfc
 | 
|---|
 | 5922 | +
 | 
|---|
 | 5923 | +end module p
 | 
|---|
 | 5924 | +
 | 
|---|
 | 5925 | +! { dg-final { cleanup-modules "p" } }
 | 
|---|
 | 5926 | +
 | 
|---|
 | 5927 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_4.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_4.f90
 | 
|---|
 | 5928 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_4.f90    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5929 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_4.f90 2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 5930 | @@ -0,0 +1,12 @@
 | 
|---|
 | 5931 | +! { dg-do compile }
 | 
|---|
 | 5932 | +! { dg-options "-Wsurprising" }
 | 
|---|
 | 5933 | +!
 | 
|---|
 | 5934 | +! PR 40995: [4.5 Regression] Spurious "Type specified for intrinsic function...ignored" message
 | 
|---|
 | 5935 | +!
 | 
|---|
 | 5936 | +! Contributed by Mat Cross <mathewc@nag.co.uk>
 | 
|---|
 | 5937 | +
 | 
|---|
 | 5938 | +subroutine sub(n,x)
 | 
|---|
 | 5939 | +  intrinsic abs
 | 
|---|
 | 5940 | +  integer n, x(abs(n))
 | 
|---|
 | 5941 | +end
 | 
|---|
 | 5942 | +
 | 
|---|
 | 5943 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_5.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_5.f90
 | 
|---|
 | 5944 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_5.f90    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5945 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_5.f90 2009-08-29 19:06:32.000000000 -0700
 | 
|---|
 | 5946 | @@ -0,0 +1,13 @@
 | 
|---|
 | 5947 | +! { dg-do compile }
 | 
|---|
 | 5948 | +! { dg-options "-fimplicit-none" }
 | 
|---|
 | 5949 | +!
 | 
|---|
 | 5950 | +! PR 41121: [4.5 Regression] compile-time error when building BLAS with -fimplicit-none
 | 
|---|
 | 5951 | +!
 | 
|---|
 | 5952 | +! Original test case: http://www.netlib.org/blas/dgbmv.f
 | 
|---|
 | 5953 | +! Reduced by Joost VandeVondele <jv244@cam.ac.uk>
 | 
|---|
 | 5954 | +
 | 
|---|
 | 5955 | +  INTRINSIC MIN
 | 
|---|
 | 5956 | +  INTEGER :: I,J
 | 
|---|
 | 5957 | +  print *,MIN(I,J)
 | 
|---|
 | 5958 | +END
 | 
|---|
 | 5959 | +
 | 
|---|
 | 5960 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_cmplx.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_cmplx.f90
 | 
|---|
 | 5961 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/intrinsic_cmplx.f90        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 5962 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/intrinsic_cmplx.f90     2009-07-23 17:28:43.000000000 -0700
 | 
|---|
 | 5963 | @@ -0,0 +1,9 @@
 | 
|---|
 | 5964 | +! { dg-do compile }
 | 
|---|
 | 5965 | +! PR fortran/40727
 | 
|---|
 | 5966 | +program test
 | 
|---|
 | 5967 | +  integer, parameter :: sp = kind(1.e0), dp = kind(1.d0)
 | 
|---|
 | 5968 | +  complex(sp) :: s
 | 
|---|
 | 5969 | +  complex(dp) :: d
 | 
|---|
 | 5970 | +  s =  cmplx(0.e0, cmplx(0.e0,0.e0)) ! { dg-error "either REAL or INTEGER" }
 | 
|---|
 | 5971 | +  d = dcmplx(0.d0, cmplx(0.d0,0.d0)) ! { dg-error "either REAL or INTEGER" }
 | 
|---|
 | 5972 | +end program test
 | 
|---|
 | 5973 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/namelist_40.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/namelist_40.f90
 | 
|---|
 | 5974 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/namelist_40.f90    2008-03-04 16:59:34.000000000 -0800
 | 
|---|
 | 5975 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/namelist_40.f90 2009-08-04 20:17:52.000000000 -0700
 | 
|---|
 | 5976 | @@ -1,4 +1,4 @@
 | 
|---|
 | 5977 | -! { dg-do run { target fd_truncate } }
 | 
|---|
 | 5978 | +! { dg-do run }
 | 
|---|
 | 5979 |  ! PR33672 Additional runtime checks needed for namelist reads
 | 
|---|
 | 5980 |  ! Submitted by Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 | 
|---|
 | 5981 |  
 | 
|---|
 | 5982 | @@ -47,7 +47,7 @@
 | 
|---|
 | 5983 |  end subroutine writenml
 | 
|---|
 | 5984 |  
 | 
|---|
 | 5985 |  end program namelist_40
 | 
|---|
 | 5986 | -! { dg-output "Multiple sub-objects with non-zero rank in namelist object x(\n|\r\n|\r)" }
 | 
|---|
 | 5987 | +! { dg-output "Multiple sub-objects with non-zero rank in namelist object x%m%ch(\n|\r\n|\r)" }
 | 
|---|
 | 5988 |  ! { dg-output "Missing colon in substring qualifier for namelist variable x%m%ch(\n|\r\n|\r)" }
 | 
|---|
 | 5989 |  ! { dg-output "Substring out of range for namelist variable x%m%ch(\n|\r\n|\r)" }
 | 
|---|
 | 5990 |  ! { dg-output "Bad character in substring qualifier for namelist variable x%m%ch(\n|\r\n|\r)" }
 | 
|---|
 | 5991 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/namelist_47.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/namelist_47.f90
 | 
|---|
 | 5992 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/namelist_47.f90    2008-05-16 07:07:37.000000000 -0700
 | 
|---|
 | 5993 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/namelist_47.f90 2009-08-04 20:17:52.000000000 -0700
 | 
|---|
 | 5994 | @@ -1,4 +1,4 @@
 | 
|---|
 | 5995 | -! { dg-do run { target fd_truncate } }
 | 
|---|
 | 5996 | +! { dg-do run }
 | 
|---|
 | 5997 |  
 | 
|---|
 | 5998 |  module nml_47
 | 
|---|
 | 5999 |    type             ::  mt
 | 
|---|
 | 6000 | @@ -45,7 +45,7 @@
 | 
|---|
 | 6001 |  end subroutine writenml
 | 
|---|
 | 6002 |  
 | 
|---|
 | 6003 |  end program namelist_47
 | 
|---|
 | 6004 | -! { dg-output "Multiple sub-objects with non-zero rank in namelist object x(\n|\r\n|\r)" }
 | 
|---|
 | 6005 | +! { dg-output "Multiple sub-objects with non-zero rank in namelist object x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
 | 
|---|
 | 6006 |  ! { dg-output "Missing colon in substring qualifier for namelist variable x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
 | 
|---|
 | 6007 |  ! { dg-output "Substring out of range for namelist variable x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
 | 
|---|
 | 6008 |  ! { dg-output "Bad character in substring qualifier for namelist variable x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
 | 
|---|
 | 6009 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/namelist_58.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/namelist_58.f90
 | 
|---|
 | 6010 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/namelist_58.f90    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6011 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/namelist_58.f90 2009-08-04 20:17:52.000000000 -0700
 | 
|---|
 | 6012 | @@ -0,0 +1,25 @@
 | 
|---|
 | 6013 | +! { dg-do run }
 | 
|---|
 | 6014 | +! PR40853 Error in namelist IO.
 | 
|---|
 | 6015 | +! Test case derived from example given in PR. < jvdelisle@gcc.gnu.org >
 | 
|---|
 | 6016 | +program test
 | 
|---|
 | 6017 | +  implicit none
 | 
|---|
 | 6018 | +  type tao_title_struct
 | 
|---|
 | 6019 | +    character(2) justify   
 | 
|---|
 | 6020 | +  end type
 | 
|---|
 | 6021 | +  type tao_plot_page_struct
 | 
|---|
 | 6022 | +    real shape_height_max 
 | 
|---|
 | 6023 | +    type (tao_title_struct) title ! Comment this line out and the bug goes away.
 | 
|---|
 | 6024 | +    real size(2)
 | 
|---|
 | 6025 | +  end type
 | 
|---|
 | 6026 | +  type (tao_plot_page_struct) plot_page
 | 
|---|
 | 6027 | +  namelist / params / plot_page
 | 
|---|
 | 6028 | +  open (10, status="scratch")
 | 
|---|
 | 6029 | +  write(10,'(a)')"  ¶ms"
 | 
|---|
 | 6030 | +  write(10,'(a)')"  plot_page%size=5 , 2,"
 | 
|---|
 | 6031 | +  write(10,'(a)')"/"
 | 
|---|
 | 6032 | +  rewind(10)
 | 
|---|
 | 6033 | +  read (10, nml = params)
 | 
|---|
 | 6034 | +  if (any(plot_page%size .ne. (/ 5, 2 /))) call abort
 | 
|---|
 | 6035 | +  close (10)
 | 
|---|
 | 6036 | +end program
 | 
|---|
 | 6037 | +
 | 
|---|
 | 6038 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41126.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41126.f90
 | 
|---|
 | 6039 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41126.f90        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6040 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41126.f90     2009-08-29 19:06:32.000000000 -0700
 | 
|---|
 | 6041 | @@ -0,0 +1,6 @@
 | 
|---|
 | 6042 | +! { dg-do compile }
 | 
|---|
 | 6043 | +SUBROUTINE write_cputime( checkpoint  )
 | 
|---|
 | 6044 | +  CHARACTER(LEN=*), INTENT(IN)             :: checkpoint
 | 
|---|
 | 6045 | +  CHARACTER(LEN=LEN_TRIM(checkpoint)+7)    :: string1
 | 
|---|
 | 6046 | +    string1 = ADJUSTL(string1)
 | 
|---|
 | 6047 | +END SUBROUTINE write_cputime
 | 
|---|
 | 6048 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41162.f gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41162.f
 | 
|---|
 | 6049 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41162.f  1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6050 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41162.f       2009-08-29 19:06:32.000000000 -0700
 | 
|---|
 | 6051 | @@ -0,0 +1,5 @@
 | 
|---|
 | 6052 | +! { dg-do compile }
 | 
|---|
 | 6053 | +! PRs 41154/41162
 | 
|---|
 | 6054 | +      write (*,'(1PD24.15,F4.2,0P)') 1.0d0
 | 
|---|
 | 6055 | +      write (*,'(1PD24.15,F4.2,0P/)') 1.0d0
 | 
|---|
 | 6056 | +      end
 | 
|---|
 | 6057 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41225.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41225.f90
 | 
|---|
 | 6058 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41225.f90        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6059 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41225.f90     2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 6060 | @@ -0,0 +1,20 @@
 | 
|---|
 | 6061 | +! { dg-do compile }
 | 
|---|
 | 6062 | +! { dg-options "-O2 -ffast-math -funroll-loops -ftree-vectorize -g" }
 | 
|---|
 | 6063 | +  SUBROUTINE block_15_1_1_1(kbd,kbc,kad,kac,pbd,pbc,pad,pac,prim,scale)
 | 
|---|
 | 6064 | +    INTEGER, PARAMETER :: dp=8
 | 
|---|
 | 6065 | +    REAL(KIND=dp) :: kbd(1*1), kbc(1*1), kad(15*1), kac(15*1), pbd(1*1), &
 | 
|---|
 | 6066 | +      pbc(1*1), pad(15*1), pac(15*1), prim(15*1*1*1), scale
 | 
|---|
 | 6067 | +    INTEGER                                  :: ma, mb, mc, md, p_index
 | 
|---|
 | 6068 | +      DO md = 1,1
 | 
|---|
 | 6069 | +        DO mc = 1,1
 | 
|---|
 | 6070 | +          DO mb = 1,1
 | 
|---|
 | 6071 | +            DO ma = 1,15
 | 
|---|
 | 6072 | +              p_index=p_index+1
 | 
|---|
 | 6073 | +              tmp = scale*prim(p_index)
 | 
|---|
 | 6074 | +              ks_bd = ks_bd + tmp* pac((mc-1)*15+ma)
 | 
|---|
 | 6075 | +            END DO
 | 
|---|
 | 6076 | +            kbd((md-1)*1+mb) = kbd((md-1)*1+mb) - ks_bd
 | 
|---|
 | 6077 | +          END DO
 | 
|---|
 | 6078 | +        END DO
 | 
|---|
 | 6079 | +      END DO
 | 
|---|
 | 6080 | +  END SUBROUTINE block_15_1_1_1
 | 
|---|
 | 6081 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41229.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41229.f90
 | 
|---|
 | 6082 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/pr41229.f90        1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6083 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/pr41229.f90     2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 6084 | @@ -0,0 +1,10 @@
 | 
|---|
 | 6085 | +! { dg-do compile }
 | 
|---|
 | 6086 | +! { dg-options "-O2 -g" }
 | 
|---|
 | 6087 | +SUBROUTINE cp_fm_triangular_multiply()
 | 
|---|
 | 6088 | +    INTEGER, PARAMETER :: dp=KIND(0.0D0)
 | 
|---|
 | 6089 | +    REAL(dp), ALLOCATABLE, DIMENSION(:)      :: tau, work
 | 
|---|
 | 6090 | +    REAL(KIND=dp), DIMENSION(:, :), POINTER  :: a
 | 
|---|
 | 6091 | +    ndim = SIZE(a,2)
 | 
|---|
 | 6092 | +    ALLOCATE(tau(ndim),STAT=istat)
 | 
|---|
 | 6093 | +    ALLOCATE(work(2*ndim),STAT=istat)
 | 
|---|
 | 6094 | +END SUBROUTINE
 | 
|---|
 | 6095 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/proc_ptr_25.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/proc_ptr_25.f90
 | 
|---|
 | 6096 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/proc_ptr_25.f90    1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6097 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/proc_ptr_25.f90 2009-08-29 19:06:32.000000000 -0700
 | 
|---|
 | 6098 | @@ -0,0 +1,36 @@
 | 
|---|
 | 6099 | +! { dg-do run }
 | 
|---|
 | 6100 | +!
 | 
|---|
 | 6101 | +! PR 41139: [4.5 Regression] a procedure pointer call as actual argument
 | 
|---|
 | 6102 | +!
 | 
|---|
 | 6103 | +! Original test case by Barron Bichon <barron.bichon@swri.org>
 | 
|---|
 | 6104 | +! Modified by Janus Weil <janus@gcc.gnu.org>
 | 
|---|
 | 6105 | +
 | 
|---|
 | 6106 | +PROGRAM test
 | 
|---|
 | 6107 | +
 | 
|---|
 | 6108 | + PROCEDURE(add), POINTER :: f
 | 
|---|
 | 6109 | + logical :: g
 | 
|---|
 | 6110 | +
 | 
|---|
 | 6111 | + ! Passing the function works
 | 
|---|
 | 6112 | + g=greater(4.,add(1.,2.))
 | 
|---|
 | 6113 | + if (.not. g) call abort()
 | 
|---|
 | 6114 | +
 | 
|---|
 | 6115 | + ! Passing the procedure pointer fails
 | 
|---|
 | 6116 | + f => add
 | 
|---|
 | 6117 | + g=greater(4.,f(1.,2.))
 | 
|---|
 | 6118 | + if (.not. g) call abort()
 | 
|---|
 | 6119 | +
 | 
|---|
 | 6120 | +CONTAINS
 | 
|---|
 | 6121 | +
 | 
|---|
 | 6122 | + REAL FUNCTION add(x,y)
 | 
|---|
 | 6123 | +   REAL, INTENT(in) :: x,y
 | 
|---|
 | 6124 | +   print *,"add:",x,y
 | 
|---|
 | 6125 | +   add = x+y
 | 
|---|
 | 6126 | + END FUNCTION add
 | 
|---|
 | 6127 | +
 | 
|---|
 | 6128 | + LOGICAL FUNCTION greater(x,y)
 | 
|---|
 | 6129 | +   REAL, INTENT(in) :: x, y
 | 
|---|
 | 6130 | +   greater = (x > y)
 | 
|---|
 | 6131 | + END FUNCTION greater
 | 
|---|
 | 6132 | +
 | 
|---|
 | 6133 | +END PROGRAM test
 | 
|---|
 | 6134 | +
 | 
|---|
 | 6135 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/structure_constructor_10.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/structure_constructor_10.f90
 | 
|---|
 | 6136 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/structure_constructor_10.f90       1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6137 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/structure_constructor_10.f90    2009-08-16 13:23:57.000000000 -0700
 | 
|---|
 | 6138 | @@ -0,0 +1,28 @@
 | 
|---|
 | 6139 | +! { dg-do compile }
 | 
|---|
 | 6140 | +!
 | 
|---|
 | 6141 | +! PR 41070: [4.5 Regression] Error: Components of structure constructor '' at (1) are PRIVATE
 | 
|---|
 | 6142 | +!
 | 
|---|
 | 6143 | +! Contributed by Michael Richmond <michael.a.richmond@nasa.gov>
 | 
|---|
 | 6144 | +
 | 
|---|
 | 6145 | +MODULE cdf_aux_mod
 | 
|---|
 | 6146 | +IMPLICIT NONE
 | 
|---|
 | 6147 | +
 | 
|---|
 | 6148 | +TYPE :: one_parameter
 | 
|---|
 | 6149 | +  CHARACTER (8) :: name
 | 
|---|
 | 6150 | +END TYPE one_parameter
 | 
|---|
 | 6151 | +
 | 
|---|
 | 6152 | +TYPE :: the_distribution
 | 
|---|
 | 6153 | +  CHARACTER (8) :: name
 | 
|---|
 | 6154 | +END TYPE the_distribution
 | 
|---|
 | 6155 | +
 | 
|---|
 | 6156 | +TYPE (the_distribution), PARAMETER :: the_beta = the_distribution('cdf_beta')
 | 
|---|
 | 6157 | +END MODULE cdf_aux_mod
 | 
|---|
 | 6158 | +
 | 
|---|
 | 6159 | +SUBROUTINE cdf_beta()
 | 
|---|
 | 6160 | +  USE cdf_aux_mod
 | 
|---|
 | 6161 | +  IMPLICIT NONE
 | 
|---|
 | 6162 | +  CALL check_complements(the_beta%name)
 | 
|---|
 | 6163 | +END SUBROUTINE cdf_beta
 | 
|---|
 | 6164 | +
 | 
|---|
 | 6165 | +! { dg-final { cleanup-modules "cdf_aux_mod" } }
 | 
|---|
 | 6166 | +
 | 
|---|
 | 6167 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
 | 
|---|
 | 6168 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90     1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6169 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90  2009-08-16 13:04:40.000000000 -0700
 | 
|---|
 | 6170 | @@ -0,0 +1,21 @@
 | 
|---|
 | 6171 | +! { dg-do run }
 | 
|---|
 | 6172 | +! PR40847 - an error in gfc_resolve_transfer caused the character length
 | 
|---|
 | 6173 | +! of 'mold' to be set incorrectly.
 | 
|---|
 | 6174 | +!
 | 
|---|
 | 6175 | +! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
 | 
|---|
 | 6176 | +!
 | 
|---|
 | 6177 | +program test_elemental
 | 
|---|
 | 6178 | +
 | 
|---|
 | 6179 | +if (any (transfer_size((/0.,0./),(/'a','b'/)) .ne. [4 ,4])) call abort
 | 
|---|
 | 6180 | +
 | 
|---|
 | 6181 | +contains
 | 
|---|
 | 6182 | +
 | 
|---|
 | 6183 | +   elemental function transfer_size (source, mold)
 | 
|---|
 | 6184 | +     real, intent(in)         :: source
 | 
|---|
 | 6185 | +     character(*), intent(in) :: mold
 | 
|---|
 | 6186 | +     integer                  :: transfer_size
 | 
|---|
 | 6187 | +     transfer_size = SIZE(TRANSFER(source, (/mold/)))
 | 
|---|
 | 6188 | +     return
 | 
|---|
 | 6189 | +   end function transfer_size
 | 
|---|
 | 6190 | +
 | 
|---|
 | 6191 | +end program test_elemental
 | 
|---|
 | 6192 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/typebound_proc_12.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/typebound_proc_12.f90
 | 
|---|
 | 6193 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/typebound_proc_12.f90      1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6194 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/typebound_proc_12.f90   2009-09-05 07:25:39.000000000 -0700
 | 
|---|
 | 6195 | @@ -0,0 +1,12 @@
 | 
|---|
 | 6196 | +! { dg-do compile }
 | 
|---|
 | 6197 | +! Test the fix for PR41258, where an ICE was caused by a search
 | 
|---|
 | 6198 | +! for a typebound procedure to resolve d%c%e
 | 
|---|
 | 6199 | +!
 | 
|---|
 | 6200 | +! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
 | 
|---|
 | 6201 | +!
 | 
|---|
 | 6202 | +  TYPE a
 | 
|---|
 | 6203 | +    TYPE(b), DIMENSION(:), POINTER :: c  ! { dg-error "type that has not been declared" }
 | 
|---|
 | 6204 | +  END TYPE
 | 
|---|
 | 6205 | +  TYPE(a), POINTER :: d
 | 
|---|
 | 6206 | +  CALL X(d%c%e)         ! { dg-error "before it is defined" }
 | 
|---|
 | 6207 | +end
 | 
|---|
 | 6208 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/use_only_4.f90 gcc-4.4.1/gcc/testsuite/gfortran.dg/use_only_4.f90
 | 
|---|
 | 6209 | --- gcc-4.4.1.orig/gcc/testsuite/gfortran.dg/use_only_4.f90     1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6210 | +++ gcc-4.4.1/gcc/testsuite/gfortran.dg/use_only_4.f90  2009-08-25 11:54:58.000000000 -0700
 | 
|---|
 | 6211 | @@ -0,0 +1,34 @@
 | 
|---|
 | 6212 | +! { dg-do compile }
 | 
|---|
 | 6213 | +! Test the fix for PR41062, in which an ICE would ensue because
 | 
|---|
 | 6214 | +! of confusion between the two 'one's in the creation of module
 | 
|---|
 | 6215 | +! debug info.
 | 
|---|
 | 6216 | +!
 | 
|---|
 | 6217 | +! Reported by Norman S. Clerman <clerman@fuse.net>
 | 
|---|
 | 6218 | +! Reduced testcase by Tobias Burnus <burnus@gcc.gnu.org>
 | 
|---|
 | 6219 | +!
 | 
|---|
 | 6220 | +module m1
 | 
|---|
 | 6221 | +   interface one  ! GENERIC "one"
 | 
|---|
 | 6222 | +     module procedure one1
 | 
|---|
 | 6223 | +   end interface
 | 
|---|
 | 6224 | +contains
 | 
|---|
 | 6225 | +  subroutine one1()
 | 
|---|
 | 6226 | +    call abort
 | 
|---|
 | 6227 | +  end subroutine one1
 | 
|---|
 | 6228 | +end module m1
 | 
|---|
 | 6229 | +
 | 
|---|
 | 6230 | +module m2
 | 
|---|
 | 6231 | +use m1, only : one  ! USE generic "one"
 | 
|---|
 | 6232 | +contains
 | 
|---|
 | 6233 | +  subroutine two()
 | 
|---|
 | 6234 | +    call one()  ! Call internal "one"
 | 
|---|
 | 6235 | +  contains
 | 
|---|
 | 6236 | +    subroutine one() ! Internal "one"
 | 
|---|
 | 6237 | +      print *, "m2"
 | 
|---|
 | 6238 | +    end subroutine one
 | 
|---|
 | 6239 | +  end subroutine two
 | 
|---|
 | 6240 | +end module m2
 | 
|---|
 | 6241 | +
 | 
|---|
 | 6242 | +  use m2
 | 
|---|
 | 6243 | +  call two
 | 
|---|
 | 6244 | +end
 | 
|---|
 | 6245 | +! { dg-final { cleanup-modules "m1 m2" } }
 | 
|---|
 | 6246 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/gnat.dg/array8.adb gcc-4.4.1/gcc/testsuite/gnat.dg/array8.adb
 | 
|---|
 | 6247 | --- gcc-4.4.1.orig/gcc/testsuite/gnat.dg/array8.adb     1969-12-31 16:00:00.000000000 -0800
 | 
|---|
 | 6248 | +++ gcc-4.4.1/gcc/testsuite/gnat.dg/array8.adb  2009-09-10 11:57:46.000000000 -0700
 | 
|---|
 | 6249 | @@ -0,0 +1,34 @@
 | 
|---|
 | 6250 | +-- { dg-do compile }
 | 
|---|
 | 6251 | +-- { dg-options "-O2" }
 | 
|---|
 | 6252 | +
 | 
|---|
 | 6253 | +PROCEDURE Array8 IS
 | 
|---|
 | 6254 | +
 | 
|---|
 | 6255 | +  function ID (I : Integer) return Integer is
 | 
|---|
 | 6256 | +  begin
 | 
|---|
 | 6257 | +    return I;
 | 
|---|
 | 6258 | +  end;
 | 
|---|
 | 6259 | +
 | 
|---|
 | 6260 | +  SUBTYPE STB IS INTEGER RANGE ID(-8) .. -5;
 | 
|---|
 | 6261 | +
 | 
|---|
 | 6262 | +  TYPE TB IS ARRAY (STB RANGE <>) OF INTEGER;
 | 
|---|
 | 6263 | +
 | 
|---|
 | 6264 | +  GENERIC
 | 
|---|
 | 6265 | +    B1 : TB;
 | 
|---|
 | 6266 | +  PROCEDURE PROC1;
 | 
|---|
 | 6267 | +
 | 
|---|
 | 6268 | +  PROCEDURE PROC1 IS
 | 
|---|
 | 6269 | +  BEGIN
 | 
|---|
 | 6270 | +    IF B1'FIRST /= -8 THEN
 | 
|---|
 | 6271 | +      raise Program_Error;
 | 
|---|
 | 6272 | +    ELSIF B1'LAST /= ID(-5) THEN
 | 
|---|
 | 6273 | +      raise Program_Error;
 | 
|---|
 | 6274 | +    ELSIF B1 /= (7, 6, 5, 4) THEN
 | 
|---|
 | 6275 | +      raise Program_Error;
 | 
|---|
 | 6276 | +    END IF;
 | 
|---|
 | 6277 | +  END;
 | 
|---|
 | 6278 | +
 | 
|---|
 | 6279 | +  PROCEDURE PROC2 IS NEW PROC1 ((7, 6, ID(5), 4));
 | 
|---|
 | 6280 | +
 | 
|---|
 | 6281 | +BEGIN
 | 
|---|
 | 6282 | +  PROC2;
 | 
|---|
 | 6283 | +END;
 | 
|---|
 | 6284 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.old-deja/g++.brendan/init4.C gcc-4.4.1/gcc/testsuite/g++.old-deja/g++.brendan/init4.C
 | 
|---|
 | 6285 | --- gcc-4.4.1.orig/gcc/testsuite/g++.old-deja/g++.brendan/init4.C       2003-04-30 19:02:59.000000000 -0700
 | 
|---|
 | 6286 | +++ gcc-4.4.1/gcc/testsuite/g++.old-deja/g++.brendan/init4.C    2009-07-24 11:06:08.000000000 -0700
 | 
|---|
 | 6287 | @@ -2,4 +2,4 @@
 | 
|---|
 | 6288 |  // GROUPS passed initialization
 | 
|---|
 | 6289 |  struct CharList { int i; };
 | 
|---|
 | 6290 |  
 | 
|---|
 | 6291 | -const CharList& terminals = { 1 };// { dg-error "" } .*
 | 
|---|
 | 6292 | +const CharList& terminals = { 1 }; // { dg-error "initializer lists" } c++0x
 | 
|---|
 | 6293 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C gcc-4.4.1/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C
 | 
|---|
 | 6294 | --- gcc-4.4.1.orig/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C        2009-03-11 10:52:06.000000000 -0700
 | 
|---|
 | 6295 | +++ gcc-4.4.1/gcc/testsuite/g++.old-deja/g++.jason/thunk2.C     2009-07-27 23:56:49.000000000 -0700
 | 
|---|
 | 6296 | @@ -1,6 +1,5 @@
 | 
|---|
 | 6297 |  // { dg-do run { target fpic } }
 | 
|---|
 | 6298 |  // { dg-options "-fPIC" }
 | 
|---|
 | 6299 | -// { dg-bogus "\[Uu\]nresolved symbol .(_GLOBAL_OFFSET_TABLE_|\[_.A-Za-z\]\[_.0-9A-Za-z\]*@(PLT|GOT|GOTOFF))|\[Bb\]ad fixup at .DATA.:" "PIC unsupported" { xfail *-*-netware* } 0 }
 | 
|---|
 | 6300 |  // { dg-skip-if "requires unsupported run-time relocation" { spu-*-* } { "*" } { "" } }
 | 
|---|
 | 6301 |  // Test that non-variadic function calls using thunks and PIC work right.
 | 
|---|
 | 6302 |  
 | 
|---|
 | 6303 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/g++.old-deja/g++.law/weak.C gcc-4.4.1/gcc/testsuite/g++.old-deja/g++.law/weak.C
 | 
|---|
 | 6304 | --- gcc-4.4.1.orig/gcc/testsuite/g++.old-deja/g++.law/weak.C    2005-12-09 15:34:09.000000000 -0800
 | 
|---|
 | 6305 | +++ gcc-4.4.1/gcc/testsuite/g++.old-deja/g++.law/weak.C 2009-07-25 06:54:21.000000000 -0700
 | 
|---|
 | 6306 | @@ -1,4 +1,5 @@
 | 
|---|
 | 6307 |  // { dg-do link { target i?86-*-linux* x86_64-*-linux* } }
 | 
|---|
 | 6308 | +// { dg-require-effective-target static }
 | 
|---|
 | 6309 |  // { dg-options "-static" }
 | 
|---|
 | 6310 |  // Bug: g++ fails to instantiate operator<<.
 | 
|---|
 | 6311 |  
 | 
|---|
 | 6312 | diff -Naur gcc-4.4.1.orig/gcc/testsuite/lib/target-supports.exp gcc-4.4.1/gcc/testsuite/lib/target-supports.exp
 | 
|---|
 | 6313 | --- gcc-4.4.1.orig/gcc/testsuite/lib/target-supports.exp        2009-07-21 00:22:51.000000000 -0700
 | 
|---|
 | 6314 | +++ gcc-4.4.1/gcc/testsuite/lib/target-supports.exp     2009-08-28 02:57:51.000000000 -0700
 | 
|---|
 | 6315 | @@ -611,6 +611,13 @@
 | 
|---|
 | 6316 |      } "-pthread"]
 | 
|---|
 | 6317 |  }
 | 
|---|
 | 6318 |  
 | 
|---|
 | 6319 | +# Return 1 if the target supports -static
 | 
|---|
 | 6320 | +proc check_effective_target_static {} {
 | 
|---|
 | 6321 | +    return [check_no_compiler_messages static executable {
 | 
|---|
 | 6322 | +       int main (void) { return 0; }
 | 
|---|
 | 6323 | +    } "-static"]
 | 
|---|
 | 6324 | +}
 | 
|---|
 | 6325 | +
 | 
|---|
 | 6326 |  # Return 1 if the target supports -fstack-protector
 | 
|---|
 | 6327 |  proc check_effective_target_fstack_protector {} {
 | 
|---|
 | 6328 |      return [check_runtime fstack_protector {
 | 
|---|
 | 6329 | @@ -1269,7 +1276,8 @@
 | 
|---|
 | 6330 |         verbose "check_effective_target_vect_cmdline_needed: using cached result" 2
 | 
|---|
 | 6331 |      } else {
 | 
|---|
 | 6332 |         set et_vect_cmdline_needed_saved 1
 | 
|---|
 | 6333 | -       if { [istarget ia64-*-*]
 | 
|---|
 | 6334 | +       if { [istarget alpha*-*-*]
 | 
|---|
 | 6335 | +            || [istarget ia64-*-*]
 | 
|---|
 | 6336 |              || (([istarget x86_64-*-*] || [istarget i?86-*-*])
 | 
|---|
 | 6337 |                  && [check_effective_target_lp64])
 | 
|---|
 | 6338 |              || ([istarget powerpc*-*-*]
 | 
|---|
 | 6339 | diff -Naur gcc-4.4.1.orig/gcc/tree-ssa.c gcc-4.4.1/gcc/tree-ssa.c
 | 
|---|
 | 6340 | --- gcc-4.4.1.orig/gcc/tree-ssa.c       2009-03-27 10:20:51.000000000 -0700
 | 
|---|
 | 6341 | +++ gcc-4.4.1/gcc/tree-ssa.c    2009-08-03 12:27:32.000000000 -0700
 | 
|---|
 | 6342 | @@ -1472,7 +1472,12 @@
 | 
|---|
 | 6343 |  
 | 
|---|
 | 6344 |    /* We do not care about LHS.  */
 | 
|---|
 | 6345 |    if (wi->is_lhs)
 | 
|---|
 | 6346 | -    return NULL_TREE;
 | 
|---|
 | 6347 | +    {
 | 
|---|
 | 6348 | +      /* Except for operands of INDIRECT_REF.  */
 | 
|---|
 | 6349 | +      if (!INDIRECT_REF_P (t))
 | 
|---|
 | 6350 | +       return NULL_TREE;
 | 
|---|
 | 6351 | +      t = TREE_OPERAND (t, 0);
 | 
|---|
 | 6352 | +    }
 | 
|---|
 | 6353 |  
 | 
|---|
 | 6354 |    switch (TREE_CODE (t))
 | 
|---|
 | 6355 |      {
 | 
|---|
 | 6356 | diff -Naur gcc-4.4.1.orig/gcc/tree-ssa-ifcombine.c gcc-4.4.1/gcc/tree-ssa-ifcombine.c
 | 
|---|
 | 6357 | --- gcc-4.4.1.orig/gcc/tree-ssa-ifcombine.c     2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 6358 | +++ gcc-4.4.1/gcc/tree-ssa-ifcombine.c  2009-08-09 14:39:19.000000000 -0700
 | 
|---|
 | 6359 | @@ -151,7 +151,7 @@
 | 
|---|
 | 6360 |      {
 | 
|---|
 | 6361 |        gimple def_stmt = SSA_NAME_DEF_STMT (candidate);
 | 
|---|
 | 6362 |        if (is_gimple_assign (def_stmt)
 | 
|---|
 | 6363 | -         && gimple_assign_cast_p (def_stmt))
 | 
|---|
 | 6364 | +         && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt)))
 | 
|---|
 | 6365 |         {
 | 
|---|
 | 6366 |           if (TYPE_PRECISION (TREE_TYPE (candidate))
 | 
|---|
 | 6367 |               <= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (def_stmt))))
 | 
|---|
 | 6368 | @@ -162,21 +162,6 @@
 | 
|---|
 | 6369 |    return candidate;
 | 
|---|
 | 6370 |  }
 | 
|---|
 | 6371 |  
 | 
|---|
 | 6372 | -/* Helpers for recognize_single_bit_test defined mainly for source code
 | 
|---|
 | 6373 | -   formating.  */
 | 
|---|
 | 6374 | -
 | 
|---|
 | 6375 | -static int
 | 
|---|
 | 6376 | -operand_precision (tree t)
 | 
|---|
 | 6377 | -{
 | 
|---|
 | 6378 | -  return TYPE_PRECISION (TREE_TYPE (t));
 | 
|---|
 | 6379 | -}
 | 
|---|
 | 6380 | -
 | 
|---|
 | 6381 | -static bool
 | 
|---|
 | 6382 | -integral_operand_p (tree t)
 | 
|---|
 | 6383 | -{
 | 
|---|
 | 6384 | -  return INTEGRAL_TYPE_P (TREE_TYPE (t));
 | 
|---|
 | 6385 | -}
 | 
|---|
 | 6386 | -
 | 
|---|
 | 6387 |  /* Recognize a single bit test pattern in GIMPLE_COND and its defining
 | 
|---|
 | 6388 |     statements.  Store the name being tested in *NAME and the bit
 | 
|---|
 | 6389 |     in *BIT.  The GIMPLE_COND computes *NAME & (1 << *BIT).
 | 
|---|
 | 6390 | @@ -212,15 +197,11 @@
 | 
|---|
 | 6391 |        stmt = SSA_NAME_DEF_STMT (orig_name);
 | 
|---|
 | 6392 |  
 | 
|---|
 | 6393 |        while (is_gimple_assign (stmt)
 | 
|---|
 | 6394 | -            && (gimple_assign_ssa_name_copy_p (stmt)
 | 
|---|
 | 6395 | -                || (gimple_assign_cast_p (stmt)
 | 
|---|
 | 6396 | -                    && integral_operand_p (gimple_assign_lhs (stmt))
 | 
|---|
 | 6397 | -                    && integral_operand_p (gimple_assign_rhs1 (stmt))
 | 
|---|
 | 6398 | -                    && (operand_precision (gimple_assign_lhs (stmt))
 | 
|---|
 | 6399 | -                        <= operand_precision (gimple_assign_rhs1 (stmt))))))
 | 
|---|
 | 6400 | -       {
 | 
|---|
 | 6401 | -         stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));
 | 
|---|
 | 6402 | -       }
 | 
|---|
 | 6403 | +            && ((CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (stmt))
 | 
|---|
 | 6404 | +                 && (TYPE_PRECISION (TREE_TYPE (gimple_assign_lhs (stmt)))
 | 
|---|
 | 6405 | +                     <= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (stmt)))))
 | 
|---|
 | 6406 | +                || gimple_assign_ssa_name_copy_p (stmt)))
 | 
|---|
 | 6407 | +       stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));
 | 
|---|
 | 6408 |  
 | 
|---|
 | 6409 |        /* If we found such, decompose it.  */
 | 
|---|
 | 6410 |        if (is_gimple_assign (stmt)
 | 
|---|
 | 6411 | diff -Naur gcc-4.4.1.orig/gcc/tree-ssa-pre.c gcc-4.4.1/gcc/tree-ssa-pre.c
 | 
|---|
 | 6412 | --- gcc-4.4.1.orig/gcc/tree-ssa-pre.c   2009-02-20 07:20:38.000000000 -0800
 | 
|---|
 | 6413 | +++ gcc-4.4.1/gcc/tree-ssa-pre.c        2009-07-22 07:45:21.000000000 -0700
 | 
|---|
 | 6414 | @@ -3507,11 +3507,7 @@
 | 
|---|
 | 6415 |  }
 | 
|---|
 | 6416 |  
 | 
|---|
 | 6417 |  
 | 
|---|
 | 6418 | -/* Add OP to EXP_GEN (block), and possibly to the maximal set if it is
 | 
|---|
 | 6419 | -   not defined by a phi node.
 | 
|---|
 | 6420 | -   PHI nodes can't go in the maximal sets because they are not in
 | 
|---|
 | 6421 | -   TMP_GEN, so it is possible to get into non-monotonic situations
 | 
|---|
 | 6422 | -   during ANTIC calculation, because it will *add* bits.  */
 | 
|---|
 | 6423 | +/* Add OP to EXP_GEN (block), and possibly to the maximal set.  */
 | 
|---|
 | 6424 |  
 | 
|---|
 | 6425 |  static void
 | 
|---|
 | 6426 |  add_to_exp_gen (basic_block block, tree op)
 | 
|---|
 | 6427 | @@ -3523,9 +3519,7 @@
 | 
|---|
 | 6428 |         return;
 | 
|---|
 | 6429 |        result = get_or_alloc_expr_for_name (op);
 | 
|---|
 | 6430 |        bitmap_value_insert_into_set (EXP_GEN (block), result);
 | 
|---|
 | 6431 | -      if (TREE_CODE (op) != SSA_NAME
 | 
|---|
 | 6432 | -         || gimple_code (SSA_NAME_DEF_STMT (op)) != GIMPLE_PHI)
 | 
|---|
 | 6433 | -       bitmap_value_insert_into_set (maximal_set, result);
 | 
|---|
 | 6434 | +      bitmap_value_insert_into_set (maximal_set, result);
 | 
|---|
 | 6435 |      }
 | 
|---|
 | 6436 |  }
 | 
|---|
 | 6437 |  
 | 
|---|
 | 6438 | @@ -3544,6 +3538,20 @@
 | 
|---|
 | 6439 |        add_to_value (get_expr_value_id (e), e);
 | 
|---|
 | 6440 |        bitmap_insert_into_set (PHI_GEN (block), e);
 | 
|---|
 | 6441 |        bitmap_value_insert_into_set (AVAIL_OUT (block), e);
 | 
|---|
 | 6442 | +      if (!in_fre)
 | 
|---|
 | 6443 | +       {
 | 
|---|
 | 6444 | +         unsigned i;
 | 
|---|
 | 6445 | +         for (i = 0; i < gimple_phi_num_args (phi); ++i)
 | 
|---|
 | 6446 | +           {
 | 
|---|
 | 6447 | +             tree arg = gimple_phi_arg_def (phi, i);
 | 
|---|
 | 6448 | +             if (TREE_CODE (arg) == SSA_NAME)
 | 
|---|
 | 6449 | +               {
 | 
|---|
 | 6450 | +                 e = get_or_alloc_expr_for_name (arg);
 | 
|---|
 | 6451 | +                 add_to_value (get_expr_value_id (e), e);
 | 
|---|
 | 6452 | +                 bitmap_value_insert_into_set (maximal_set, e);
 | 
|---|
 | 6453 | +               }
 | 
|---|
 | 6454 | +           }
 | 
|---|
 | 6455 | +       }
 | 
|---|
 | 6456 |      }
 | 
|---|
 | 6457 |  }
 | 
|---|
 | 6458 |  
 | 
|---|
 | 6459 | @@ -4254,11 +4262,12 @@
 | 
|---|
 | 6460 |        FOR_ALL_BB (bb)
 | 
|---|
 | 6461 |         {
 | 
|---|
 | 6462 |           print_bitmap_set (dump_file, EXP_GEN (bb), "exp_gen", bb->index);
 | 
|---|
 | 6463 | -         print_bitmap_set (dump_file, TMP_GEN (bb), "tmp_gen",
 | 
|---|
 | 6464 | -                                 bb->index);
 | 
|---|
 | 6465 | -         print_bitmap_set (dump_file, AVAIL_OUT (bb), "avail_out",
 | 
|---|
 | 6466 | -                                 bb->index);
 | 
|---|
 | 6467 | +         print_bitmap_set (dump_file, PHI_GEN (bb), "phi_gen", bb->index);
 | 
|---|
 | 6468 | +         print_bitmap_set (dump_file, TMP_GEN (bb), "tmp_gen", bb->index);
 | 
|---|
 | 6469 | +         print_bitmap_set (dump_file, AVAIL_OUT (bb), "avail_out", bb->index);
 | 
|---|
 | 6470 |         }
 | 
|---|
 | 6471 | +
 | 
|---|
 | 6472 | +      print_bitmap_set (dump_file, maximal_set, "maximal", 0);
 | 
|---|
 | 6473 |      }
 | 
|---|
 | 6474 |  
 | 
|---|
 | 6475 |    /* Insert can get quite slow on an incredibly large number of basic
 | 
|---|
 | 6476 | diff -Naur gcc-4.4.1.orig/gcc/version.c gcc-4.4.1/gcc/version.c
 | 
|---|
 | 6477 | --- gcc-4.4.1.orig/gcc/version.c        2007-08-21 08:35:30.000000000 -0700
 | 
|---|
 | 6478 | +++ gcc-4.4.1/gcc/version.c     2009-09-12 09:16:46.000000000 -0700
 | 
|---|
 | 6479 | @@ -14,4 +14,4 @@
 | 
|---|
 | 6480 |     Makefile.  */
 | 
|---|
 | 6481 |  
 | 
|---|
 | 6482 |  const char version_string[] = BASEVER DATESTAMP DEVPHASE REVISION;
 | 
|---|
 | 6483 | -const char pkgversion_string[] = PKGVERSION;
 | 
|---|
 | 6484 | +const char pkgversion_string[] = "(GCC for Cross-LFS 4.4.1.20090912) ";
 | 
|---|
 | 6485 | diff -Naur gcc-4.4.1.orig/libcpp/macro.c gcc-4.4.1/libcpp/macro.c
 | 
|---|
 | 6486 | --- gcc-4.4.1.orig/libcpp/macro.c       2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6487 | +++ gcc-4.4.1/libcpp/macro.c    2009-09-02 11:47:29.000000000 -0700
 | 
|---|
 | 6488 | @@ -375,7 +375,7 @@
 | 
|---|
 | 6489 |         }
 | 
|---|
 | 6490 |  
 | 
|---|
 | 6491 |        escape_it = (token->type == CPP_STRING || token->type == CPP_CHAR
 | 
|---|
 | 6492 | -                  || token->type == CPP_WSTRING || token->type == CPP_STRING
 | 
|---|
 | 6493 | +                  || token->type == CPP_WSTRING || token->type == CPP_WCHAR
 | 
|---|
 | 6494 |                    || token->type == CPP_STRING32 || token->type == CPP_CHAR32
 | 
|---|
 | 6495 |                    || token->type == CPP_STRING16 || token->type == CPP_CHAR16);
 | 
|---|
 | 6496 |  
 | 
|---|
 | 6497 | diff -Naur gcc-4.4.1.orig/libdecnumber/decCommon.c gcc-4.4.1/libdecnumber/decCommon.c
 | 
|---|
 | 6498 | --- gcc-4.4.1.orig/libdecnumber/decCommon.c     2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6499 | +++ gcc-4.4.1/libdecnumber/decCommon.c  2009-08-13 09:58:06.000000000 -0700
 | 
|---|
 | 6500 | @@ -1089,6 +1089,7 @@
 | 
|---|
 | 6501 |    return 10;
 | 
|---|
 | 6502 |    } /* decFloatRadix */
 | 
|---|
 | 6503 |  
 | 
|---|
 | 6504 | +#if (DECCHECK || DECTRACE)
 | 
|---|
 | 6505 |  /* ------------------------------------------------------------------ */
 | 
|---|
 | 6506 |  /* decFloatShow -- printf a decFloat in hexadecimal and decimal              */
 | 
|---|
 | 6507 |  /*   df         is the decFloat to show                                      */
 | 
|---|
 | 6508 | @@ -1115,6 +1116,7 @@
 | 
|---|
 | 6509 |    printf(">%s> %s [big-endian] %s\n", tag, hexbuf, buff);
 | 
|---|
 | 6510 |    return;
 | 
|---|
 | 6511 |    } /* decFloatShow */
 | 
|---|
 | 6512 | +#endif
 | 
|---|
 | 6513 |  
 | 
|---|
 | 6514 |  /* ------------------------------------------------------------------ */
 | 
|---|
 | 6515 |  /* decFloatToBCD -- get sign, exponent, and BCD8 from a decFloat      */
 | 
|---|
 | 6516 | diff -Naur gcc-4.4.1.orig/libgfortran/intrinsics/dtime.c gcc-4.4.1/libgfortran/intrinsics/dtime.c
 | 
|---|
 | 6517 | --- gcc-4.4.1.orig/libgfortran/intrinsics/dtime.c       2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6518 | +++ gcc-4.4.1/libgfortran/intrinsics/dtime.c    2009-08-24 20:30:25.000000000 -0700
 | 
|---|
 | 6519 | @@ -38,9 +38,10 @@
 | 
|---|
 | 6520 |  void
 | 
|---|
 | 6521 |  dtime_sub (gfc_array_r4 *t, GFC_REAL_4 *result)
 | 
|---|
 | 6522 |  {
 | 
|---|
 | 6523 | -  static GFC_REAL_4 tu = 0.0, ts = 0.0, tt = 0.0;
 | 
|---|
 | 6524 |    GFC_REAL_4 *tp;
 | 
|---|
 | 6525 |    long user_sec, user_usec, system_sec, system_usec;
 | 
|---|
 | 6526 | +  static long us = 0, uu = 0, ss = 0 , su = 0;
 | 
|---|
 | 6527 | +  GFC_REAL_4 tu, ts, tt;
 | 
|---|
 | 6528 |  
 | 
|---|
 | 6529 |    if (((t->dim[0].ubound + 1 - t->dim[0].lbound)) < 2)
 | 
|---|
 | 6530 |      runtime_error ("Insufficient number of elements in TARRAY.");
 | 
|---|
 | 6531 | @@ -48,15 +49,19 @@
 | 
|---|
 | 6532 |    __gthread_mutex_lock (&dtime_update_lock);
 | 
|---|
 | 6533 |    if (__time_1 (&user_sec, &user_usec, &system_sec, &system_usec) == 0)
 | 
|---|
 | 6534 |      {
 | 
|---|
 | 6535 | -      tu = (GFC_REAL_4)(user_sec + 1.e-6 * user_usec) - tu;
 | 
|---|
 | 6536 | -      ts = (GFC_REAL_4)(system_sec + 1.e-6 * system_usec) - ts;
 | 
|---|
 | 6537 | +      tu = (GFC_REAL_4) ((user_sec - us) + 1.e-6 * (user_usec - uu));
 | 
|---|
 | 6538 | +      ts = (GFC_REAL_4) ((system_sec - ss) + 1.e-6 * (system_usec - su));
 | 
|---|
 | 6539 |        tt = tu + ts;
 | 
|---|
 | 6540 | +      us = user_sec;
 | 
|---|
 | 6541 | +      uu = user_usec;
 | 
|---|
 | 6542 | +      ss = system_sec;
 | 
|---|
 | 6543 | +      su = system_usec;
 | 
|---|
 | 6544 |      }
 | 
|---|
 | 6545 |    else
 | 
|---|
 | 6546 |      {
 | 
|---|
 | 6547 | -      tu = (GFC_REAL_4)-1.0;
 | 
|---|
 | 6548 | -      ts = (GFC_REAL_4)-1.0;
 | 
|---|
 | 6549 | -      tt = (GFC_REAL_4)-1.0;
 | 
|---|
 | 6550 | +      tu = -1;
 | 
|---|
 | 6551 | +      ts = -1;
 | 
|---|
 | 6552 | +      tt = -1;
 | 
|---|
 | 6553 |      }
 | 
|---|
 | 6554 |  
 | 
|---|
 | 6555 |    tp = t->data;
 | 
|---|
 | 6556 | diff -Naur gcc-4.4.1.orig/libgfortran/intrinsics/iso_c_binding.c gcc-4.4.1/libgfortran/intrinsics/iso_c_binding.c
 | 
|---|
 | 6557 | --- gcc-4.4.1.orig/libgfortran/intrinsics/iso_c_binding.c       2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6558 | +++ gcc-4.4.1/libgfortran/intrinsics/iso_c_binding.c    2009-08-20 13:42:38.000000000 -0700
 | 
|---|
 | 6559 | @@ -137,8 +137,8 @@
 | 
|---|
 | 6560 |        f_ptr_out->offset = f_ptr_out->dim[0].lbound * f_ptr_out->dim[0].stride;
 | 
|---|
 | 6561 |        for (i = 1; i < shapeSize; i++)
 | 
|---|
 | 6562 |          {
 | 
|---|
 | 6563 | -          f_ptr_out->dim[i].stride = (f_ptr_out->dim[i-1].ubound + 1)
 | 
|---|
 | 6564 | -            - f_ptr_out->dim[i-1].lbound;
 | 
|---|
 | 6565 | +          f_ptr_out->dim[i].stride = ((f_ptr_out->dim[i-1].ubound + 1)
 | 
|---|
 | 6566 | +            - f_ptr_out->dim[i-1].lbound) * f_ptr_out->dim[i-1].stride;
 | 
|---|
 | 6567 |            f_ptr_out->offset += f_ptr_out->dim[i].lbound
 | 
|---|
 | 6568 |              * f_ptr_out->dim[i].stride;
 | 
|---|
 | 6569 |          }
 | 
|---|
 | 6570 | diff -Naur gcc-4.4.1.orig/libgfortran/intrinsics/time_1.h gcc-4.4.1/libgfortran/intrinsics/time_1.h
 | 
|---|
 | 6571 | --- gcc-4.4.1.orig/libgfortran/intrinsics/time_1.h      2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6572 | +++ gcc-4.4.1/libgfortran/intrinsics/time_1.h   2009-08-24 20:30:25.000000000 -0700
 | 
|---|
 | 6573 | @@ -51,6 +51,10 @@
 | 
|---|
 | 6574 |  #  endif
 | 
|---|
 | 6575 |  #endif
 | 
|---|
 | 6576 |  
 | 
|---|
 | 6577 | +#ifdef HAVE_SYS_TYPES_H
 | 
|---|
 | 6578 | +     #include <sys/types.h>
 | 
|---|
 | 6579 | +#endif
 | 
|---|
 | 6580 | +
 | 
|---|
 | 6581 |  /* The most accurate way to get the CPU time is getrusage (). */
 | 
|---|
 | 6582 |  #if defined (HAVE_GETRUSAGE) && defined (HAVE_SYS_RESOURCE_H)
 | 
|---|
 | 6583 |  #  include <sys/resource.h>
 | 
|---|
 | 6584 | @@ -112,7 +116,7 @@
 | 
|---|
 | 6585 |  {
 | 
|---|
 | 6586 |  #if defined (HAVE_GETRUSAGE) && defined (HAVE_SYS_RESOURCE_H)
 | 
|---|
 | 6587 |    struct rusage usage;
 | 
|---|
 | 6588 | -  getrusage (0, &usage);
 | 
|---|
 | 6589 | +  getrusage (RUSAGE_SELF, &usage);
 | 
|---|
 | 6590 |  
 | 
|---|
 | 6591 |    *user_sec = usage.ru_utime.tv_sec;
 | 
|---|
 | 6592 |    *user_usec = usage.ru_utime.tv_usec;
 | 
|---|
 | 6593 | diff -Naur gcc-4.4.1.orig/libgfortran/io/list_read.c gcc-4.4.1/libgfortran/io/list_read.c
 | 
|---|
 | 6594 | --- gcc-4.4.1.orig/libgfortran/io/list_read.c   2009-06-08 20:15:04.000000000 -0700
 | 
|---|
 | 6595 | +++ gcc-4.4.1/libgfortran/io/list_read.c        2009-08-04 20:15:18.000000000 -0700
 | 
|---|
 | 6596 | @@ -2772,7 +2772,7 @@
 | 
|---|
 | 6597 |  
 | 
|---|
 | 6598 |    if (nl->type == GFC_DTYPE_DERIVED)
 | 
|---|
 | 6599 |      nml_touch_nodes (nl);
 | 
|---|
 | 6600 | -  if (component_flag && nl->var_rank > 0)
 | 
|---|
 | 6601 | +  if (component_flag && nl->var_rank > 0 && nl->next)
 | 
|---|
 | 6602 |      nl = first_nl;
 | 
|---|
 | 6603 |  
 | 
|---|
 | 6604 |    /* Make sure no extraneous qualifiers are there.  */
 | 
|---|
 | 6605 | diff -Naur gcc-4.4.1.orig/libgomp/omp_lib.h.in gcc-4.4.1/libgomp/omp_lib.h.in
 | 
|---|
 | 6606 | --- gcc-4.4.1.orig/libgomp/omp_lib.h.in 2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6607 | +++ gcc-4.4.1/libgomp/omp_lib.h.in      2009-08-19 00:11:43.000000000 -0700
 | 
|---|
 | 6608 | @@ -42,16 +42,16 @@
 | 
|---|
 | 6609 |        external omp_set_num_threads
 | 
|---|
 | 6610 |  
 | 
|---|
 | 6611 |        external omp_get_dynamic, omp_get_nested
 | 
|---|
 | 6612 | -      logical*4 omp_get_dynamic, omp_get_nested
 | 
|---|
 | 6613 | +      logical(4) omp_get_dynamic, omp_get_nested
 | 
|---|
 | 6614 |        external omp_test_lock, omp_in_parallel
 | 
|---|
 | 6615 | -      logical*4 omp_test_lock, omp_in_parallel
 | 
|---|
 | 6616 | +      logical(4) omp_test_lock, omp_in_parallel
 | 
|---|
 | 6617 |  
 | 
|---|
 | 6618 |        external omp_get_max_threads, omp_get_num_procs
 | 
|---|
 | 6619 | -      integer*4 omp_get_max_threads, omp_get_num_procs
 | 
|---|
 | 6620 | +      integer(4) omp_get_max_threads, omp_get_num_procs
 | 
|---|
 | 6621 |        external omp_get_num_threads, omp_get_thread_num
 | 
|---|
 | 6622 | -      integer*4 omp_get_num_threads, omp_get_thread_num
 | 
|---|
 | 6623 | +      integer(4) omp_get_num_threads, omp_get_thread_num
 | 
|---|
 | 6624 |        external omp_test_nest_lock
 | 
|---|
 | 6625 | -      integer*4 omp_test_nest_lock
 | 
|---|
 | 6626 | +      integer(4) omp_test_nest_lock
 | 
|---|
 | 6627 |  
 | 
|---|
 | 6628 |        external omp_get_wtick, omp_get_wtime
 | 
|---|
 | 6629 |        double precision omp_get_wtick, omp_get_wtime
 | 
|---|
 | 6630 | @@ -61,6 +61,6 @@
 | 
|---|
 | 6631 |        external omp_get_max_active_levels, omp_get_level
 | 
|---|
 | 6632 |        external omp_get_ancestor_thread_num, omp_get_team_size
 | 
|---|
 | 6633 |        external omp_get_active_level
 | 
|---|
 | 6634 | -      integer*4 omp_get_thread_limit, omp_get_max_active_levels
 | 
|---|
 | 6635 | -      integer*4 omp_get_level, omp_get_ancestor_thread_num
 | 
|---|
 | 6636 | -      integer*4 omp_get_team_size, omp_get_active_level
 | 
|---|
 | 6637 | +      integer(4) omp_get_thread_limit, omp_get_max_active_levels
 | 
|---|
 | 6638 | +      integer(4) omp_get_level, omp_get_ancestor_thread_num
 | 
|---|
 | 6639 | +      integer(4) omp_get_team_size, omp_get_active_level
 | 
|---|
 | 6640 | diff -Naur gcc-4.4.1.orig/libjava/contrib/aotcompile.py.in gcc-4.4.1/libjava/contrib/aotcompile.py.in
 | 
|---|
 | 6641 | --- gcc-4.4.1.orig/libjava/contrib/aotcompile.py.in     2009-04-26 07:24:38.000000000 -0700
 | 
|---|
 | 6642 | +++ gcc-4.4.1/libjava/contrib/aotcompile.py.in  2009-07-23 07:27:31.000000000 -0700
 | 
|---|
 | 6643 | @@ -15,7 +15,11 @@
 | 
|---|
 | 6644 |  
 | 
|---|
 | 6645 |  import classfile
 | 
|---|
 | 6646 |  import copy
 | 
|---|
 | 6647 | -import md5
 | 
|---|
 | 6648 | +# The md5 module is deprecated in Python 2.5
 | 
|---|
 | 6649 | +try: 
 | 
|---|
 | 6650 | +    from hashlib import md5 
 | 
|---|
 | 6651 | +except ImportError: 
 | 
|---|
 | 6652 | +    from md5 import md5
 | 
|---|
 | 6653 |  import operator
 | 
|---|
 | 6654 |  import os
 | 
|---|
 | 6655 |  import sys
 | 
|---|
 | 6656 | @@ -182,7 +186,7 @@
 | 
|---|
 | 6657 |      def addClass(self, bytes, name):
 | 
|---|
 | 6658 |          """Subclasses call this from their __init__ method for
 | 
|---|
 | 6659 |          every class they find."""
 | 
|---|
 | 6660 | -        digest = md5.new(bytes).digest()
 | 
|---|
 | 6661 | +        digest = md5(bytes).digest()
 | 
|---|
 | 6662 |          self.classes[digest] = bytes
 | 
|---|
 | 6663 |          self.classnames[digest] = name
 | 
|---|
 | 6664 |  
 | 
|---|
 | 6665 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/config/abi/pre/gnu.ver gcc-4.4.1/libstdc++-v3/config/abi/pre/gnu.ver
 | 
|---|
 | 6666 | --- gcc-4.4.1.orig/libstdc++-v3/config/abi/pre/gnu.ver  2009-05-05 14:44:27.000000000 -0700
 | 
|---|
 | 6667 | +++ gcc-4.4.1/libstdc++-v3/config/abi/pre/gnu.ver       2009-08-26 12:04:11.000000000 -0700
 | 
|---|
 | 6668 | @@ -32,7 +32,9 @@
 | 
|---|
 | 6669 |        std::a[e-z]*;
 | 
|---|
 | 6670 |  #     std::ba[a-r]*;
 | 
|---|
 | 6671 |        std::basic_[a-e]*;
 | 
|---|
 | 6672 | -      std::basic_f[a-r]*;
 | 
|---|
 | 6673 | +      std::basic_f[a-h]*;
 | 
|---|
 | 6674 | +#     std::basic_filebuf;
 | 
|---|
 | 6675 | +      std::basic_f[j-r]*;
 | 
|---|
 | 6676 |  #     std::basic_fstream;
 | 
|---|
 | 6677 |        std::basic_f[t-z]*;
 | 
|---|
 | 6678 |        std::basic_[g-h]*;
 | 
|---|
 | 6679 | @@ -273,28 +275,40 @@
 | 
|---|
 | 6680 |      _ZNSdC*;
 | 
|---|
 | 6681 |      _ZNSdD*;
 | 
|---|
 | 6682 |  
 | 
|---|
 | 6683 | +    # std::basic_filebuf
 | 
|---|
 | 6684 | +    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EEC*;
 | 
|---|
 | 6685 | +    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EED*;
 | 
|---|
 | 6686 | +    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE[0-3]*;
 | 
|---|
 | 6687 | +    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4openEPKc*;
 | 
|---|
 | 6688 | +    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4sync*;
 | 
|---|
 | 6689 | +    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE[5-9]*;
 | 
|---|
 | 6690 | +    _ZNKSt13basic_filebufI[cw]St11char_traitsI[cw]EE7is_openEv;
 | 
|---|
 | 6691 | +
 | 
|---|
 | 6692 |      # std::basic_fstream
 | 
|---|
 | 6693 | -    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC*;
 | 
|---|
 | 6694 | +    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC[12]Ev;
 | 
|---|
 | 6695 | +    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC[12]EPKc*;
 | 
|---|
 | 6696 |      _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EED*;
 | 
|---|
 | 6697 |      _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE5closeEv;
 | 
|---|
 | 6698 |      _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
 | 
|---|
 | 6699 | -    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE4open*;
 | 
|---|
 | 6700 | +    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE4openEPKc*;
 | 
|---|
 | 6701 |      _ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
 | 
|---|
 | 6702 |  
 | 
|---|
 | 6703 |      # std::basic_ifstream
 | 
|---|
 | 6704 | -    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC*;
 | 
|---|
 | 6705 | +    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC[12]Ev;
 | 
|---|
 | 6706 | +    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC[12]EPKc*;
 | 
|---|
 | 6707 |      _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EED*;
 | 
|---|
 | 6708 |      _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE5closeEv;
 | 
|---|
 | 6709 |      _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
 | 
|---|
 | 6710 | -    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE4open*;
 | 
|---|
 | 6711 | +    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE4openEPKc*;
 | 
|---|
 | 6712 |      _ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
 | 
|---|
 | 6713 |  
 | 
|---|
 | 6714 |      # std::basic_ofstream
 | 
|---|
 | 6715 | -    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC*;
 | 
|---|
 | 6716 | +    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC[12]Ev;
 | 
|---|
 | 6717 | +    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC[12]EPKc*;
 | 
|---|
 | 6718 |      _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EED*;
 | 
|---|
 | 6719 |      _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE5closeEv;
 | 
|---|
 | 6720 |      _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE7is_openEv;
 | 
|---|
 | 6721 | -    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE4open*;
 | 
|---|
 | 6722 | +    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE4openEPKc*;
 | 
|---|
 | 6723 |      _ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
 | 
|---|
 | 6724 |  
 | 
|---|
 | 6725 |      # std::basic_istream<char>
 | 
|---|
 | 6726 | @@ -966,6 +980,19 @@
 | 
|---|
 | 6727 |  
 | 
|---|
 | 6728 |  } GLIBCXX_3.4.11;
 | 
|---|
 | 6729 |  
 | 
|---|
 | 6730 | +GLIBCXX_3.4.13 {
 | 
|---|
 | 6731 | +
 | 
|---|
 | 6732 | +    # new fstream members
 | 
|---|
 | 6733 | +    _ZNSt13basic_filebufI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
 | 
|---|
 | 6734 | +    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC[12]ERKSsSt13_Ios_Openmode;
 | 
|---|
 | 6735 | +    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
 | 
|---|
 | 6736 | +    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC[12]ERKSsSt13_Ios_Openmode;
 | 
|---|
 | 6737 | +    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
 | 
|---|
 | 6738 | +    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC[12]ERKSsSt13_Ios_Openmode;
 | 
|---|
 | 6739 | +    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE4openERKSsSt13_Ios_Openmode;
 | 
|---|
 | 6740 | +
 | 
|---|
 | 6741 | +} GLIBCXX_3.4.12;
 | 
|---|
 | 6742 | +
 | 
|---|
 | 6743 |  # Symbols in the support library (libsupc++) have their own tag.
 | 
|---|
 | 6744 |  CXXABI_1.3 {
 | 
|---|
 | 6745 |  
 | 
|---|
 | 6746 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/configure gcc-4.4.1/libstdc++-v3/configure
 | 
|---|
 | 6747 | --- gcc-4.4.1.orig/libstdc++-v3/configure       2009-05-07 03:23:06.000000000 -0700
 | 
|---|
 | 6748 | +++ gcc-4.4.1/libstdc++-v3/configure    2009-08-26 12:04:11.000000000 -0700
 | 
|---|
 | 6749 | @@ -1567,7 +1567,7 @@
 | 
|---|
 | 6750 |  ### am handles this now?  ORIGINAL_LD_FOR_MULTILIBS=$LD
 | 
|---|
 | 6751 |  
 | 
|---|
 | 6752 |  # For libtool versioning info, format is CURRENT:REVISION:AGE
 | 
|---|
 | 6753 | -libtool_VERSION=6:12:0
 | 
|---|
 | 6754 | +libtool_VERSION=6:13:0
 | 
|---|
 | 6755 |  
 | 
|---|
 | 6756 |  
 | 
|---|
 | 6757 |  # Find the rest of the source tree framework.
 | 
|---|
 | 6758 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/configure.ac gcc-4.4.1/libstdc++-v3/configure.ac
 | 
|---|
 | 6759 | --- gcc-4.4.1.orig/libstdc++-v3/configure.ac    2009-05-07 03:23:06.000000000 -0700
 | 
|---|
 | 6760 | +++ gcc-4.4.1/libstdc++-v3/configure.ac 2009-08-26 12:04:11.000000000 -0700
 | 
|---|
 | 6761 | @@ -12,7 +12,7 @@
 | 
|---|
 | 6762 |  ### am handles this now?  ORIGINAL_LD_FOR_MULTILIBS=$LD
 | 
|---|
 | 6763 |  
 | 
|---|
 | 6764 |  # For libtool versioning info, format is CURRENT:REVISION:AGE
 | 
|---|
 | 6765 | -libtool_VERSION=6:12:0
 | 
|---|
 | 6766 | +libtool_VERSION=6:13:0
 | 
|---|
 | 6767 |  AC_SUBST(libtool_VERSION)
 | 
|---|
 | 6768 |  
 | 
|---|
 | 6769 |  # Find the rest of the source tree framework.
 | 
|---|
 | 6770 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/include/parallel/multiway_merge.h gcc-4.4.1/libstdc++-v3/include/parallel/multiway_merge.h
 | 
|---|
 | 6771 | --- gcc-4.4.1.orig/libstdc++-v3/include/parallel/multiway_merge.h       2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6772 | +++ gcc-4.4.1/libstdc++-v3/include/parallel/multiway_merge.h    2009-09-11 09:36:00.000000000 -0700
 | 
|---|
 | 6773 | @@ -1224,7 +1224,7 @@
 | 
|---|
 | 6774 |                  offsets[num_threads - 1].begin(),  comp);
 | 
|---|
 | 6775 |          }
 | 
|---|
 | 6776 |      }
 | 
|---|
 | 6777 | -
 | 
|---|
 | 6778 | +  delete[] borders;
 | 
|---|
 | 6779 |  
 | 
|---|
 | 6780 |    for (int slab = 0; slab < num_threads; ++slab)
 | 
|---|
 | 6781 |      {
 | 
|---|
 | 6782 | @@ -1305,11 +1305,8 @@
 | 
|---|
 | 6783 |          std::iterator_traits<RandomAccessIterator1>::value_type value_type;
 | 
|---|
 | 6784 |  
 | 
|---|
 | 6785 |        // Leave only non-empty sequences.
 | 
|---|
 | 6786 | -      std::pair<RandomAccessIterator1, RandomAccessIterator1>* ne_seqs =
 | 
|---|
 | 6787 | -        static_cast<std::pair<RandomAccessIterator1, RandomAccessIterator1>*>(
 | 
|---|
 | 6788 | -        ::operator new(
 | 
|---|
 | 6789 | -            sizeof(std::pair<RandomAccessIterator1, RandomAccessIterator1>)
 | 
|---|
 | 6790 | -              * (seqs_end - seqs_begin)));
 | 
|---|
 | 6791 | +      typedef std::pair<RandomAccessIterator1, RandomAccessIterator1> seq_type;
 | 
|---|
 | 6792 | +      seq_type* ne_seqs = new seq_type[seqs_end - seqs_begin];
 | 
|---|
 | 6793 |        int k = 0;
 | 
|---|
 | 6794 |        difference_type total_length = 0;
 | 
|---|
 | 6795 |        for (RandomAccessIteratorIterator raii = seqs_begin;
 | 
|---|
 | 6796 | @@ -1319,9 +1316,7 @@
 | 
|---|
 | 6797 |            if(seq_length > 0)
 | 
|---|
 | 6798 |              {
 | 
|---|
 | 6799 |                total_length += seq_length;
 | 
|---|
 | 6800 | -              //ne_seqs[k] = *raii;
 | 
|---|
 | 6801 | -              new(&(ne_seqs[k++]))
 | 
|---|
 | 6802 | -                std::pair<RandomAccessIterator1, RandomAccessIterator1>(*raii);
 | 
|---|
 | 6803 | +              ne_seqs[k++] = *raii;
 | 
|---|
 | 6804 |              }
 | 
|---|
 | 6805 |          }
 | 
|---|
 | 6806 |  
 | 
|---|
 | 6807 | @@ -1331,7 +1326,7 @@
 | 
|---|
 | 6808 |  
 | 
|---|
 | 6809 |        if (total_length == 0 || k == 0)
 | 
|---|
 | 6810 |        {
 | 
|---|
 | 6811 | -        ::operator delete(ne_seqs);
 | 
|---|
 | 6812 | +        delete[] ne_seqs;
 | 
|---|
 | 6813 |          return target;
 | 
|---|
 | 6814 |        }
 | 
|---|
 | 6815 |  
 | 
|---|
 | 6816 | @@ -1366,8 +1361,7 @@
 | 
|---|
 | 6817 |            for (int c = 0; c < k; ++c)
 | 
|---|
 | 6818 |              target_position += pieces[iam][c].first;
 | 
|---|
 | 6819 |  
 | 
|---|
 | 6820 | -          std::pair<RandomAccessIterator1, RandomAccessIterator1>* chunks
 | 
|---|
 | 6821 | -            = new std::pair<RandomAccessIterator1, RandomAccessIterator1>[k];
 | 
|---|
 | 6822 | +          seq_type* chunks = new seq_type[k];
 | 
|---|
 | 6823 |  
 | 
|---|
 | 6824 |            for (int s = 0; s < k; ++s)
 | 
|---|
 | 6825 |              {
 | 
|---|
 | 6826 | @@ -1399,6 +1393,7 @@
 | 
|---|
 | 6827 |          }
 | 
|---|
 | 6828 |  
 | 
|---|
 | 6829 |        delete[] pieces;
 | 
|---|
 | 6830 | +      delete[] ne_seqs;
 | 
|---|
 | 6831 |  
 | 
|---|
 | 6832 |        return target + length;
 | 
|---|
 | 6833 |      }
 | 
|---|
 | 6834 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/include/std/valarray gcc-4.4.1/libstdc++-v3/include/std/valarray
 | 
|---|
 | 6835 | --- gcc-4.4.1.orig/libstdc++-v3/include/std/valarray    2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6836 | +++ gcc-4.4.1/libstdc++-v3/include/std/valarray 2009-07-22 03:25:53.000000000 -0700
 | 
|---|
 | 6837 | @@ -1,7 +1,7 @@
 | 
|---|
 | 6838 |  // The template and inlines for the -*- C++ -*- valarray class.
 | 
|---|
 | 6839 |  
 | 
|---|
 | 6840 |  // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
 | 
|---|
 | 6841 | -// 2006, 2007, 2009
 | 
|---|
 | 6842 | +// 2006, 2007, 2008, 2009
 | 
|---|
 | 6843 |  // Free Software Foundation, Inc.
 | 
|---|
 | 6844 |  //
 | 
|---|
 | 6845 |  // This file is part of the GNU ISO C++ Library.  This library is free
 | 
|---|
 | 6846 | @@ -647,7 +647,7 @@
 | 
|---|
 | 6847 |    template<typename _Tp>
 | 
|---|
 | 6848 |      inline
 | 
|---|
 | 6849 |      valarray<_Tp>::valarray(initializer_list<_Tp> __l)
 | 
|---|
 | 6850 | -      : _M_size(__l.size()), _M_data(__valarray_get_storage<_Tp>(__l.size()))
 | 
|---|
 | 6851 | +    : _M_size(__l.size()), _M_data(__valarray_get_storage<_Tp>(__l.size()))
 | 
|---|
 | 6852 |      { std::__valarray_copy_construct (__l.begin(), __l.end(), _M_data); }
 | 
|---|
 | 6853 |  #endif
 | 
|---|
 | 6854 |  
 | 
|---|
 | 6855 | @@ -681,6 +681,7 @@
 | 
|---|
 | 6856 |      {
 | 
|---|
 | 6857 |        _GLIBCXX_DEBUG_ASSERT(_M_size == __l.size());
 | 
|---|
 | 6858 |        std::__valarray_copy(__l.begin(), __l.size(), _M_data);
 | 
|---|
 | 6859 | +      return *this;
 | 
|---|
 | 6860 |      }
 | 
|---|
 | 6861 |  #endif
 | 
|---|
 | 6862 |  
 | 
|---|
 | 6863 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/src/Makefile.am gcc-4.4.1/libstdc++-v3/src/Makefile.am
 | 
|---|
 | 6864 | --- gcc-4.4.1.orig/libstdc++-v3/src/Makefile.am 2009-04-09 16:23:07.000000000 -0700
 | 
|---|
 | 6865 | +++ gcc-4.4.1/libstdc++-v3/src/Makefile.am      2009-08-26 12:04:11.000000000 -0700
 | 
|---|
 | 6866 | @@ -277,6 +277,11 @@
 | 
|---|
 | 6867 |  atomic.o: atomic.cc
 | 
|---|
 | 6868 |         $(CXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6869 |  
 | 
|---|
 | 6870 | +fstream-inst.lo: fstream-inst.cc
 | 
|---|
 | 6871 | +       $(LTCXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6872 | +fstream-inst.o: fstream-inst.cc
 | 
|---|
 | 6873 | +       $(CXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6874 | +
 | 
|---|
 | 6875 |  string-inst.lo: string-inst.cc
 | 
|---|
 | 6876 |         $(LTCXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6877 |  string-inst.o: string-inst.cc
 | 
|---|
 | 6878 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/src/Makefile.in gcc-4.4.1/libstdc++-v3/src/Makefile.in
 | 
|---|
 | 6879 | --- gcc-4.4.1.orig/libstdc++-v3/src/Makefile.in 2009-01-16 18:03:25.000000000 -0800
 | 
|---|
 | 6880 | +++ gcc-4.4.1/libstdc++-v3/src/Makefile.in      2009-08-26 12:04:11.000000000 -0700
 | 
|---|
 | 6881 | @@ -888,6 +888,11 @@
 | 
|---|
 | 6882 |  atomic.o: atomic.cc
 | 
|---|
 | 6883 |         $(CXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6884 |  
 | 
|---|
 | 6885 | +fstream-inst.lo: fstream-inst.cc
 | 
|---|
 | 6886 | +       $(LTCXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6887 | +fstream-inst.o: fstream-inst.cc
 | 
|---|
 | 6888 | +       $(CXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6889 | +
 | 
|---|
 | 6890 |  string-inst.lo: string-inst.cc
 | 
|---|
 | 6891 |         $(LTCXXCOMPILE) -std=gnu++0x -c $<
 | 
|---|
 | 6892 |  string-inst.o: string-inst.cc
 | 
|---|
 | 6893 | diff -Naur gcc-4.4.1.orig/libstdc++-v3/testsuite/util/testsuite_abi.cc gcc-4.4.1/libstdc++-v3/testsuite/util/testsuite_abi.cc
 | 
|---|
 | 6894 | --- gcc-4.4.1.orig/libstdc++-v3/testsuite/util/testsuite_abi.cc 2009-05-05 14:44:27.000000000 -0700
 | 
|---|
 | 6895 | +++ gcc-4.4.1/libstdc++-v3/testsuite/util/testsuite_abi.cc      2009-08-26 12:04:11.000000000 -0700
 | 
|---|
 | 6896 | @@ -184,6 +184,7 @@
 | 
|---|
 | 6897 |        known_versions.push_back("GLIBCXX_3.4.10");
 | 
|---|
 | 6898 |        known_versions.push_back("GLIBCXX_3.4.11");
 | 
|---|
 | 6899 |        known_versions.push_back("GLIBCXX_3.4.12");
 | 
|---|
 | 6900 | +      known_versions.push_back("GLIBCXX_3.4.13");
 | 
|---|
 | 6901 |        known_versions.push_back("GLIBCXX_LDBL_3.4");
 | 
|---|
 | 6902 |        known_versions.push_back("GLIBCXX_LDBL_3.4.7");
 | 
|---|
 | 6903 |        known_versions.push_back("GLIBCXX_LDBL_3.4.10");
 | 
|---|