Mercurial > hg > CbC > CbC_gcc
diff gcc/tree-ssanames.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
line wrap: on
line diff
--- a/gcc/tree-ssanames.c Fri Oct 27 22:46:09 2017 +0900 +++ b/gcc/tree-ssanames.c Thu Oct 25 07:37:49 2018 +0900 @@ -1,5 +1,5 @@ /* Generic routines for manipulating SSA_NAME expressions - Copyright (C) 2003-2017 Free Software Foundation, Inc. + Copyright (C) 2003-2018 Free Software Foundation, Inc. This file is part of GCC. @@ -29,6 +29,8 @@ #include "stor-layout.h" #include "tree-into-ssa.h" #include "tree-ssa.h" +#include "cfgloop.h" +#include "tree-scalar-evolution.h" /* Rewriting a function into SSA form can create a huge number of SSA_NAMEs, many of which may be thrown away shortly after their creation if jumps @@ -241,6 +243,9 @@ void flush_ssaname_freelist (void) { + /* If there were any SSA names released reset the SCEV cache. */ + if (! vec_safe_is_empty (FREE_SSANAMES_QUEUE (cfun))) + scev_reset_htab (); vec_safe_splice (FREE_SSANAMES (cfun), FREE_SSANAMES_QUEUE (cfun)); vec_safe_truncate (FREE_SSANAMES_QUEUE (cfun), 0); } @@ -326,7 +331,7 @@ NAME. */ void -set_range_info_raw (tree name, enum value_range_type range_type, +set_range_info_raw (tree name, enum value_range_kind range_type, const wide_int_ref &min, const wide_int_ref &max) { gcc_assert (!POINTER_TYPE_P (TREE_TYPE (name))); @@ -367,7 +372,7 @@ NAME while making sure we don't store useless range info. */ void -set_range_info (tree name, enum value_range_type range_type, +set_range_info (tree name, enum value_range_kind range_type, const wide_int_ref &min, const wide_int_ref &max) { gcc_assert (!POINTER_TYPE_P (TREE_TYPE (name))); @@ -392,11 +397,11 @@ } -/* Gets range information MIN, MAX and returns enum value_range_type - corresponding to tree ssa_name NAME. enum value_range_type returned +/* Gets range information MIN, MAX and returns enum value_range_kind + corresponding to tree ssa_name NAME. enum value_range_kind returned is used to determine if MIN and MAX are valid values. */ -enum value_range_type +enum value_range_kind get_range_info (const_tree name, wide_int *min, wide_int *max) { gcc_assert (!POINTER_TYPE_P (TREE_TYPE (name))); @@ -562,7 +567,7 @@ int saved_ssa_name_version = SSA_NAME_VERSION (var); use_operand_p imm = &(SSA_NAME_IMM_USE_NODE (var)); - if (MAY_HAVE_DEBUG_STMTS) + if (MAY_HAVE_DEBUG_BIND_STMTS) insert_debug_temp_for_var_def (NULL, var); if (flag_checking) @@ -643,13 +648,16 @@ misalignment by INCREMENT modulo its current alignment. */ void -adjust_ptr_info_misalignment (struct ptr_info_def *pi, - unsigned int increment) +adjust_ptr_info_misalignment (struct ptr_info_def *pi, poly_uint64 increment) { if (pi->align != 0) { - pi->misalign += increment; - pi->misalign &= (pi->align - 1); + increment += pi->misalign; + if (!known_misalignment (increment, pi->align, &pi->misalign)) + { + pi->align = known_alignment (increment); + pi->misalign = 0; + } } } @@ -719,7 +727,7 @@ /* Creates a duplicate of the range_info_def at RANGE_INFO of type RANGE_TYPE for use by the SSA name NAME. */ void -duplicate_ssa_name_range_info (tree name, enum value_range_type range_type, +duplicate_ssa_name_range_info (tree name, enum value_range_kind range_type, struct range_info_def *range_info) { struct range_info_def *new_range_info;