Merge in trunk.
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Dec 2013 17:31:30 +0000 (17:31 +0000)
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 13 Dec 2013 17:31:30 +0000 (17:31 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/wide-int@205966 138bc75d-0d04-0410-961f-82ee72b054a4

97 files changed:
1  2 
gcc/ada/gcc-interface/decl.c
gcc/alias.c
gcc/c-family/c-common.c
gcc/c-family/cilk.c
gcc/c/c-decl.c
gcc/c/c-parser.c
gcc/c/c-typeck.c
gcc/cfgloop.c
gcc/cfgloop.h
gcc/combine.c
gcc/config/aarch64/aarch64.c
gcc/config/arm/arm.c
gcc/config/bfin/bfin.c
gcc/config/i386/i386.c
gcc/config/msp430/msp430.c
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md
gcc/config/sparc/sparc.c
gcc/coretypes.h
gcc/cp/class.c
gcc/cp/decl.c
gcc/cse.c
gcc/dbxout.c
gcc/defaults.h
gcc/doc/rtl.texi
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/dwarf2out.c
gcc/dwarf2out.h
gcc/expmed.c
gcc/expr.c
gcc/final.c
gcc/fold-const.c
gcc/fortran/trans-decl.c
gcc/genmodes.c
gcc/genrecog.c
gcc/gimple-fold.c
gcc/gimple-ssa-strength-reduction.c
gcc/gimple.c
gcc/graphite-sese-to-poly.c
gcc/ipa-devirt.c
gcc/ipa-prop.c
gcc/loop-unroll.c
gcc/lto-streamer-in.c
gcc/lto-streamer-out.c
gcc/lto/lto.c
gcc/objc/objc-act.c
gcc/omp-low.c
gcc/optabs.c
gcc/postreload.c
gcc/predict.c
gcc/recog.c
gcc/rtl.def
gcc/rtl.h
gcc/rtlanal.c
gcc/sched-vis.c
gcc/sel-sched-ir.c
gcc/simplify-rtx.c
gcc/target.def
gcc/target.h
gcc/targhooks.h
gcc/tree-affine.h
gcc/tree-call-cdce.c
gcc/tree-cfg.c
gcc/tree-core.h
gcc/tree-data-ref.c
gcc/tree-dfa.c
gcc/tree-inline.c
gcc/tree-object-size.c
gcc/tree-predcom.c
gcc/tree-ssa-ccp.c
gcc/tree-ssa-forwprop.c
gcc/tree-ssa-loop-im.c
gcc/tree-ssa-loop-ivopts.c
gcc/tree-ssa-loop-niter.c
gcc/tree-ssa-loop.h
gcc/tree-ssa-math-opts.c
gcc/tree-ssa-phiopt.c
gcc/tree-ssa-pre.c
gcc/tree-ssa-reassoc.c
gcc/tree-ssa-sccvn.c
gcc/tree-ssa-structalias.c
gcc/tree-ssa-uninit.c
gcc/tree-ssa.c
gcc/tree-switch-conversion.c
gcc/tree-vect-data-refs.c
gcc/tree-vect-generic.c
gcc/tree-vect-loop-manip.c
gcc/tree-vect-loop.c
gcc/tree-vect-stmts.c
gcc/tree-vrp.c
gcc/tree.c
gcc/tree.def
gcc/tree.h
gcc/value-prof.c
gcc/var-tracking.c
gcc/varasm.c

Simple merge
diff --cc gcc/alias.c
Simple merge
Simple merge
Simple merge
diff --cc gcc/c/c-decl.c
Simple merge
Simple merge
@@@ -49,7 -49,7 +49,8 @@@ along with GCC; see the file COPYING3
  #include "c-family/c-objc.h"
  #include "c-family/c-common.h"
  #include "c-family/c-ubsan.h"
+ #include "cilk.h"
 +#include "wide-int.h"
  
  /* Possible cases of implicit bad conversions.  Used to select
     diagnostic messages in convert_for_assignment.  */
diff --cc gcc/cfgloop.c
Simple merge
diff --cc gcc/cfgloop.h
Simple merge
diff --cc gcc/combine.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc gcc/coretypes.h
Simple merge
diff --cc gcc/cp/class.c
Simple merge
diff --cc gcc/cp/decl.c
@@@ -59,7 -59,7 +59,8 @@@ along with GCC; see the file COPYING3
  #include "splay-tree.h"
  #include "plugin.h"
  #include "cgraph.h"
+ #include "cilk.h"
 +#include "wide-int.h"
  
  /* Possible cases of bad specifiers type used by bad_specifiers. */
  enum bad_spec_place {
diff --cc gcc/cse.c
Simple merge
diff --cc gcc/dbxout.c
Simple merge
diff --cc gcc/defaults.h
@@@ -471,18 -471,6 +471,14 @@@ see the files COPYING3 and COPYING.RUNT
     your target, you should override these values by defining the
     appropriate symbols in your tm.h file.  */
  
- #ifndef BITS_PER_UNIT
- #define BITS_PER_UNIT 8
- #endif
 +#if BITS_PER_UNIT == 8
 +#define LOG2_BITS_PER_UNIT 3
 +#elif BITS_PER_UNIT == 16
 +#define LOG2_BITS_PER_UNIT 4
 +#else
 +#error Unknown BITS_PER_UNIT
 +#endif
 +
  #ifndef BITS_PER_WORD
  #define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD)
  #endif
Simple merge
diff --cc gcc/doc/tm.texi
Simple merge
Simple merge
diff --cc gcc/dwarf2out.c
Simple merge
diff --cc gcc/dwarf2out.h
@@@ -26,11 -25,10 +26,11 @@@ along with GCC; see the file COPYING3
  typedef struct die_struct *dw_die_ref;
  typedef const struct die_struct *const_dw_die_ref;
  
- typedef struct dw_val_struct *dw_val_ref;
- typedef struct dw_cfi_struct *dw_cfi_ref;
- typedef struct dw_loc_descr_struct *dw_loc_descr_ref;
+ typedef struct dw_val_node *dw_val_ref;
+ typedef struct dw_cfi_node *dw_cfi_ref;
+ typedef struct dw_loc_descr_node *dw_loc_descr_ref;
  typedef struct dw_loc_list_struct *dw_loc_list_ref;
 +typedef wide_int *wide_int_ptr;
  
  
  /* Call frames are described using a sequence of Call Frame
diff --cc gcc/expmed.c
@@@ -56,6 -59,10 +59,9 @@@ static void store_split_bit_field (rtx
  static rtx extract_fixed_bit_field (enum machine_mode, rtx,
                                    unsigned HOST_WIDE_INT,
                                    unsigned HOST_WIDE_INT, rtx, int);
 -static rtx mask_rtx (enum machine_mode, int, int, int);
+ static rtx extract_fixed_bit_field_1 (enum machine_mode, rtx,
+                                     unsigned HOST_WIDE_INT,
+                                     unsigned HOST_WIDE_INT, rtx, int);
  static rtx lshift_value (enum machine_mode, unsigned HOST_WIDE_INT, int);
  static rtx extract_split_bit_field (rtx, unsigned HOST_WIDE_INT,
                                    unsigned HOST_WIDE_INT, int);
diff --cc gcc/expr.c
Simple merge
diff --cc gcc/final.c
Simple merge
Simple merge
Simple merge
diff --cc gcc/genmodes.c
Simple merge
diff --cc gcc/genrecog.c
@@@ -779,13 -776,12 +777,13 @@@ add_to_sequence (rtx pattern, struct de
            if (pred)
              {
                test->u.pred.data = pred;
 -              allows_const_int = pred->codes[CONST_INT];
 +              allows_const_int = (pred->codes[CONST_INT]
 +                                  || pred->codes[CONST_WIDE_INT]);
                if (was_code == MATCH_PARALLEL
                    && pred->singleton != PARALLEL)
-                 message_with_line (pattern_lineno,
-                       "predicate '%s' used in match_parallel "
-                       "does not allow only PARALLEL", pred->name);
+                 error_with_line (pattern_lineno,
+                                  "predicate '%s' used in match_parallel "
+                                  "does not allow only PARALLEL", pred->name);
                else
                  code = pred->singleton;
              }
Simple merge
Simple merge
diff --cc gcc/gimple.c
Simple merge
Simple merge
Simple merge
diff --cc gcc/ipa-prop.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc gcc/lto/lto.c
Simple merge
Simple merge
diff --cc gcc/omp-low.c
Simple merge
diff --cc gcc/optabs.c
Simple merge
Simple merge
diff --cc gcc/predict.c
Simple merge
diff --cc gcc/recog.c
Simple merge
diff --cc gcc/rtl.def
Simple merge
diff --cc gcc/rtl.h
Simple merge
diff --cc gcc/rtlanal.c
Simple merge
diff --cc gcc/sched-vis.c
Simple merge
Simple merge
Simple merge
diff --cc gcc/target.def
Simple merge
diff --cc gcc/target.h
Simple merge
diff --cc gcc/targhooks.h
Simple merge
@@@ -32,10 -30,10 +32,10 @@@ struct aff_comb_el
    tree val;
  
    /* Its coefficient in the combination.  */
 -  double_int coef;
 +  widest_int coef;
  };
  
- typedef struct affine_tree_combination
+ struct aff_tree
  {
    /* Type of the result of the combination.  */
    tree type;
       than MAX_AFF_ELTS elements.  Type of REST will be either sizetype for
       TYPE of POINTER_TYPEs or TYPE.  */
    tree rest;
- } aff_tree;
+ };
  
 -double_int double_int_ext_for_comb (double_int, aff_tree *);
 -void aff_combination_const (aff_tree *, tree, double_int);
 +widest_int wide_int_ext_for_comb (const widest_int &, aff_tree *);
 +void aff_combination_const (aff_tree *, tree, const widest_int &);
  void aff_combination_elt (aff_tree *, tree, tree);
 -void aff_combination_scale (aff_tree *, double_int);
 +void aff_combination_scale (aff_tree *, const widest_int &);
  void aff_combination_mult (aff_tree *, aff_tree *, aff_tree *);
  void aff_combination_add (aff_tree *, aff_tree *);
 -void aff_combination_add_elt (aff_tree *, tree, double_int);
 +void aff_combination_add_elt (aff_tree *, tree, const widest_int &);
  void aff_combination_remove_elt (aff_tree *, unsigned);
  void aff_combination_convert (aff_tree *, tree);
  void tree_to_aff_combination (tree, tree, aff_tree *);
Simple merge
diff --cc gcc/tree-cfg.c
Simple merge
diff --cc gcc/tree-core.h
Simple merge
Simple merge
diff --cc gcc/tree-dfa.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -169,9 -171,17 +169,17 @@@ determine_value_range (struct loop *loo
                }
              else
                {
 -                minv = minv.max (minc, TYPE_UNSIGNED (type));
 -                maxv = maxv.min (maxc, TYPE_UNSIGNED (type));
 +                minv = wi::max (minv, minc, sgn);
 +                maxv = wi::min (maxv, maxc, sgn);
-                 gcc_assert (wi::le_p (minv, maxv, sgn));
+                 /* If the PHI result range are inconsistent with
+                    the VAR range, give up on looking at the PHI
+                    results.  This can happen if VR_UNDEFINED is
+                    involved.  */
 -                if (minv.cmp (maxv, TYPE_UNSIGNED (type)) > 0)
++                if (wi::gt_p (minv, maxv))
+                   {
+                     rtype = get_range_info (var, &minv, &maxv);
+                     break;
+                   }
                }
            }
        }
@@@ -20,11 -20,9 +20,11 @@@ along with GCC; see the file COPYING3
  #ifndef GCC_TREE_SSA_LOOP_H
  #define GCC_TREE_SSA_LOOP_H
  
 +#include "wide-int.h"
 +
  /* Affine iv.  */
  
- typedef struct affine_iv_d
+ struct affine_iv
  {
    /* Iv = BASE + STEP * i.  */
    tree base, step;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc gcc/tree-ssa.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc gcc/tree-vrp.c
Simple merge
diff --cc gcc/tree.c
Simple merge
diff --cc gcc/tree.def
Simple merge
diff --cc gcc/tree.h
Simple merge
Simple merge
Simple merge
diff --cc gcc/varasm.c
Simple merge