r277244 - in /branches/gcc-9-branch/gcc: Change...

jakub@gcc.gnu.org jakub@gcc.gnu.org
Mon Oct 21 11:36:00 GMT 2019


Author: jakub
Date: Mon Oct 21 11:36:36 2019
New Revision: 277244

URL: https://gcc.gnu.org/viewcvs?rev=277244&root=gcc&view=rev
Log:
	Backported from mainline
	2019-09-02  Jakub Jelinek  <jakub@redhat.com>

	PR go/91617
	* fold-const.c (range_check_type): For enumeral and boolean
	type, pass 1 to type_for_size langhook instead of
	TYPE_UNSIGNED (etype).  Return unsigned_type_for result whenever
	etype isn't TYPE_UNSIGNED INTEGER_TYPE.
	(build_range_check): Don't call unsigned_type_for for pointer types.
	* match.pd (X / C1 op C2): Don't call unsigned_type_for on
	range_check_type result.

	2019-08-29  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/91351
	* tree-cfg.c (generate_range_test): Use range_check_type instead of
	unsigned_type_for.
	* tree-cfgcleanup.c (convert_single_case_switch): Punt if
	range_check_type returns NULL.
	* tree-switch-conversion.c (switch_conversion::build_one_array):
	Use range_check_type instead of unsigned_type_for, don't perform
	linear opt if it returns NULL.
	(bit_test_cluster::find_bit_tests): Formatting fix.
	(bit_test_cluster::emit): Use range_check_type instead of
	unsigned_type_for.
	(switch_decision_tree::try_switch_expansion): Punt if range_check_type
	returns NULL.

	* g++.dg/opt/pr91351.C: New test.

Added:
    branches/gcc-9-branch/gcc/testsuite/g++.dg/opt/pr91351.C
Modified:
    branches/gcc-9-branch/gcc/ChangeLog
    branches/gcc-9-branch/gcc/fold-const.c
    branches/gcc-9-branch/gcc/match.pd
    branches/gcc-9-branch/gcc/testsuite/ChangeLog
    branches/gcc-9-branch/gcc/tree-cfg.c
    branches/gcc-9-branch/gcc/tree-cfgcleanup.c
    branches/gcc-9-branch/gcc/tree-switch-conversion.c



More information about the Gcc-cvs mailing list