GCC Bugzilla has been upgraded from version 4.4.9 to 5.0rc3. If you see any problem, please report it to bug 64968.
View | Details | Raw Unified | Return to bug 32575
Collapse All | Expand All

(-)gcc/tree-ssa-pre.c (+12 lines)
Lines 45-50 along with GCC; see the file COPYING3. Link Here
45
#include "langhooks.h"
45
#include "langhooks.h"
46
#include "cfgloop.h"
46
#include "cfgloop.h"
47
#include "tree-ssa-sccvn.h"
47
#include "tree-ssa-sccvn.h"
48
#include "params.h"
48
49
49
/* TODO:
50
/* TODO:
50
51
Lines 2017-2022 compute_antic (void) Link Here
2017
2018
2018
  if (do_partial_partial)
2019
  if (do_partial_partial)
2019
    {
2020
    {
2021
      unsigned long max_pa_length = PARAM_VALUE (PARAM_MAX_PARTIAL_ANTIC_LENGTH);
2020
      sbitmap_ones (changed_blocks);
2022
      sbitmap_ones (changed_blocks);
2021
      mark_dfs_back_edges ();
2023
      mark_dfs_back_edges ();
2022
      num_iterations = 0;
2024
      num_iterations = 0;
Lines 2036-2041 compute_antic (void) Link Here
2036
		    |= compute_partial_antic_aux (block,
2038
		    |= compute_partial_antic_aux (block,
2037
						  TEST_BIT (has_abnormal_preds,
2039
						  TEST_BIT (has_abnormal_preds,
2038
							    block->index));
2040
							    block->index));
2041
		  /* PR 32575: Detect and abort on exponential behaviour.  */
2042
		  if (max_pa_length
2043
		      && bitmap_count_bits (PA_IN (block)->values) > max_pa_length)
2044
		    {
2045
		      if (dump_file && (dump_flags & TDF_STATS))
2046
			fprintf (dump_file, "compute_partial_antic: loop aborted as array length was too big (%ld vs %ld)\n",
2047
				 bitmap_count_bits (PA_IN (block)->values),
2048
				 max_pa_length);
2049
		      break;
2050
		    }
2039
		}
2051
		}
2040
	    }
2052
	    }
2041
	  /* Theoretically possible, but *highly* unlikely.  */
2053
	  /* Theoretically possible, but *highly* unlikely.  */
(-)gcc/Makefile.in (-1 / +1 lines)
Lines 2068-2074 tree-ssa-pre.o : tree-ssa-pre.c $(TREE_F Link Here
2068
   $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
2068
   $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
2069
   $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
2069
   $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
2070
   alloc-pool.h $(BASIC_BLOCK_H) bitmap.h $(HASHTAB_H) $(TREE_GIMPLE_H) \
2070
   alloc-pool.h $(BASIC_BLOCK_H) bitmap.h $(HASHTAB_H) $(TREE_GIMPLE_H) \
2071
   $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h
2071
   $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H)
2072
tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
2072
tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
2073
   $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
2073
   $(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
2074
   $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
2074
   $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(FLAGS_H) $(CFGLOOP_H) \
(-)gcc/params.def (+6 lines)
Lines 707-712 DEFPARAM (PARAM_USE_CANONICAL_TYPES, Link Here
707
	  "use-canonical-types",
707
	  "use-canonical-types",
708
	  "Whether to use canonical types",
708
	  "Whether to use canonical types",
709
	  1, 0, 1)
709
	  1, 0, 1)
710
711
DEFPARAM (PARAM_MAX_PARTIAL_ANTIC_LENGTH,
712
	  "max-partial-antic-length",
713
	  "Maximum length of partial antic set when performing tree pre optimization",
714
	  1UL << 17, 0, 0)
715
710
/*
716
/*
711
Local variables:
717
Local variables:
712
mode:c
718
mode:c
(-)gcc/doc/invoke.texi (+10 lines)
Lines 7112-7117 mechanism for comparing types in C++ and Link Here
7112
bugs in the canonical type system are causing compilation failures,
7112
bugs in the canonical type system are causing compilation failures,
7113
set this value to 0 to disable canonical types.
7113
set this value to 0 to disable canonical types.
7114
7114
7115
@item max-partial-antic-length
7116
Maximum length of the partial antic set computed during the tree
7117
partial redundancy elimination optimization (@option{-ftree-pre}) when
7118
optimizing at @option{-O3} and above.  For some sorts of source code
7119
the enhanced partial redundancy elimination optimization can run away,
7120
consuming all of the memory available on the host machine.  This
7121
parameter sets a limit on the length of the sets that are computed,
7122
which prevents the runaway behaviour.  Setting a value of 0 for
7123
this paramter will allow an unlimited set length.
7124
7115
@end table
7125
@end table
7116
@end table
7126
@end table
7117
7127

Return to bug 32575