Commit Graph

154286 Commits

Author SHA1 Message Date
Ian Lance Taylor
b901cf9dd9 compiler: avoid crash on erroneous type
If there is an error constructing the backend type, the GCC backend
    will report that the size is 1.  That will then cause construction of
    the ptrmask to crash.  Avoid that case by just generating an empty
    ptrmask.
    
    Noticed while compiling a broken package.  The policy I've been
    following is to not commit a test case for a compiler crash on invalid
    code, so no test case.
    
    Reviewed-on: https://go-review.googlesource.com/45775

From-SVN: r249208
2017-06-14 23:42:53 +00:00
Maciej W. Rozycki
3466430f38 MIPS16/GCC: Emit bounds checking as RTL in `casesi'
gcc/
	* config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
	(casesi): Emit bounds checking as RTL.
	(casesi_internal_mips16_<mode>): Remove bounds checking.

	gcc/testsuite/
	* gcc.target/mips/data-sym-jump.c: Adjust for whitespace changes.
	* gcc.target/mips/pr51513-1.c: New test.
	* gcc.target/mips/pr51513-2.c: New test.

From-SVN: r249207
2017-06-14 23:26:40 +00:00
Jonathan Wakely
cdd17d6e99 Fix libstdc++ testsuite failures with -D_GLIBCXX_USE_CXX11_ABI=0
* doc/xml/manual/test.xml: Correct instructions on running tests.
	* testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
	pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
	Likewise.
	* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
	* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/char/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
	exceptions_failbit.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/extractors_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
	* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/char/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
	exceptions_null.cc: Likewise.
	* testsuite/27_io/ios_base/storage/2.cc: Likewise.

From-SVN: r249206
2017-06-14 20:38:30 +01:00
Ian Lance Taylor
be75f645e6 Makefile.def: Add check-gotools to go check targets.
* Makefile.def: Add check-gotools to go check targets.
	* Makefile.in: Rebuild.

From-SVN: r249204
2017-06-14 19:36:42 +00:00
Ian Lance Taylor
eec2130ea2 Makefile.am (libgosrcdir): Define.
* Makefile.am (libgosrcdir): Define.
	(check-head, check-gccgo, check-go-tool): New targets.
	(CHECK_ENV): Define.
	(check): New target.
	(mostlyclean-local): New target.
	* Makefile.in: Rebuild.

From-SVN: r249203
2017-06-14 19:26:21 +00:00
Max Filippov
1a711a0b5c gcc: xtensa: allow XCHAL_* macros to be non-constant
XCHAL_* macros from the xtensa-config.h are used in a number of places
that require them to be preprocessor constants. Rewrite these places so
that non-constant XCHAL_* definitions could be used there.

2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
	* config/xtensa/xtensa.c (xtensa_option_override): Append
	MASK_CONST16 to target_flags in the absence of TARGET_L32R.
	(hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
	 xtensa_doloop_hooks): Define unconditionally.
	(xtensa_reorg_loops): Only call reorg_loops in the presence of
	TARGET_LOOPS.
	* config/xtensa/xtensa.h (TARGET_L32R): New definition.
	(TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
	for it in xtensa_option_override.
	(HARD_FRAME_POINTER_IS_FRAME_POINTER,
	 HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.

From-SVN: r249202
2017-06-14 17:19:44 +00:00
Boris Kolpackov
e72c4afd99 Recognize '-' as special -MF argument (write to stdout)
Sometimes it is useful to generate pre-processed output to a file and
the dependency information to stdout for further analysis/processing.
For example:

g++ -E -MD -fdirectives-only -o test.ii test.cxx

This will generate the dependency information to test.d (as per the
documentation). While changing this behavior is probably unwise, one
traditional (e.g., supported by -o) way to handle this is to recognize
the special '-' file name as an instruction to write to stdout:

g++ -E -MD -fdirectives-only -o test.ii -MF - test.cxx

Currently this will create a file named '-'. The included patch
changes this behavior to write to stdout.

Note also that Clang has supported this from at least version 3.5.

gcc:
2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>

	* doc/cppopts.texi: Document '-' special value to -MF.

gcc/c-family:
2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>

	* c-opts.c (c_common_finish): Handle '-' special value to -MF.

From-SVN: r249201
2017-06-14 17:05:57 +01:00
Wilco Dijkstra
4524009c09 Improve Cortex-A53 FP scheduler
The Cortex-A53 scheduler model of FMAC bypass is not quite right
for FMAC to FMAC forwarding.  Experiments also show the latencies of
FP operations are too high as well.  Rather than adding more bypasses,
adjust the latencies of FP instructions to get a better schedule on
average.  As a result SPECFP2006 is 1.1% faster.

    gcc/
	* config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
	(cortex_a53_fconst): Likewise.
	(cortex_a53_fpmul): Likewise.
	(cortex_a53_f_load_64): Likewise.
	(cortex_a53_f_load_many): Likewise.
	(cortex_a53_advsimd_alu): Likewise.
	(cortex_a53_advsimd_alu_q): Likewise.
	(cortex_a53_advsimd_mul): Likewise.
	(cortex_a53_advsimd_mul_q): Likewise.
	(fpmac bypass): Add new bypass for fpmac-fpmac case.
	Add missing fmul, r2f_cvt and fconst cases.

From-SVN: r249200
2017-06-14 14:51:46 +00:00
Ian Lance Taylor
ea9a08f5df cmd/cgo: make _cgo_flags consistent across runs
The go tool will pass -I objdir as one of the flags, where objdir is
    the temporary build directory. Remove that from _cgo_flags: we don't
    need it, and it will be different each time.
    
    Sort the flags to avoid the unpredictable map iteration order.
    
    This matters for gccgo because for a package that uses cgo, the go
    tool when building for gccgo will store the _cgo_flags file in the
    archive. That means that we want to generate identical _cgo_flags for
    every run.
    
    The test for this is the cmd/go testsuite, to follow in a future CL.
    
    Reviewed-on: https://go-review.googlesource.com/45692

From-SVN: r249199
2017-06-14 13:59:02 +00:00
Ian Lance Taylor
1279f21fc5 cmd/go: gccgo: consistent results, fix vendoring
Pass the -fdebug-prefix-map and -gno-record-gcc-switches compiler
    options to gccgo to generate consistent results.
    
    Fix the vendoring code to look for /vendor/, not just /vendor, to
    avoid being confused by something like vendor/vendor.org.
    
    Tested by the cmd/go tests in a followup CL.
    
    Reviewed-on: https://go-review.googlesource.com/45695

From-SVN: r249198
2017-06-14 13:56:04 +00:00
Ian Lance Taylor
8ba20d7eb8 cmd/go: skip tests that do not work with gccgo
These tests fail for various reasons, most commonly because gccgo
    doesn't really have GOROOT, so things like `go build errors` fail.
    
    Reviewed-on: https://go-review.googlesource.com/45696

From-SVN: r249197
2017-06-14 13:53:43 +00:00
Ian Lance Taylor
b205ec303f go/build: use GCCGOTOOLDIR to find gccgo tools
Add the environment variable GCCGOTOOLDIR to permit overriding the default
    directory where tools like cgo are found when building with gccgo.
    
    This will be used by the cmd/go tests in a future CL.
    
    Reviewed-on: https://go-review.googlesource.com/45694

From-SVN: r249196
2017-06-14 13:50:53 +00:00
Ian Lance Taylor
0818233f80 internal/testenv: support testing gccgo
If GO_TESTING_GOTOOLS is set in the environment, permit tests using
    gccgo to run the go tool. Like GO_BUILDER_NAME, this should not be set
    normally. But it is needed when testing the go tool itself, and will
    be set by the gotools Makefile in a future CL.
    
    Reviewed-on: https://go-review.googlesource.com/45693

From-SVN: r249195
2017-06-14 13:47:28 +00:00
Ian Lance Taylor
6916d6104f compiler: remove "DIR/../" when joining relative import path
Otherwise if DIR does not exist, the path does not work. This matches
    what the gc cmd/compile tool does, because it calls path.Join.
    
    The test for this is the cmd/go tests, to be added in a follow-up CL.
    
    Reviewed-on: https://go-review.googlesource.com/45691

From-SVN: r249194
2017-06-14 13:37:48 +00:00
Richard Biener
26fda5f59a re PR tree-optimization/81083 (ICE: Unable to coalesce ssa_names 4 and 13 which are marked as MUST COALESCE)
2017-06-14  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81083
	* gcc.dg/torture/pr81083.c: Add prototypes.

From-SVN: r249193
2017-06-14 11:43:31 +00:00
Richard Biener
909263f855 re PR middle-end/81088 (UBSAN: false positive as a result of reassosiation)
2017-06-14  Richard Biener  <rguenther@suse.de>

	PR middle-end/81088
	* fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
	literal constants.
	(fold_binary_loc): When associating do not treat pre-existing
	TREE_OVERFLOW on literal constants as a reason to allow
	TREE_OVERFLOW on associated literal constants.

	* c-c++-common/ubsan/pr81088.c: New testcase.

From-SVN: r249192
2017-06-14 11:40:20 +00:00
Jakub Jelinek
c74985e3ee cp-gimplify.c (cp_genericize_r): Turn most of the function into a switch (TREE_CODE (stmt)) statement from long...
* cp-gimplify.c (cp_genericize_r): Turn most of the function
	into a switch (TREE_CODE (stmt)) statement from long else if
	sequence.

From-SVN: r249191
2017-06-14 13:24:48 +02:00
Eric Botcazou
938a807a68 sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
* config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
	(MASK_FEATURES): New macro.
	* config/sparc/sparc.c (sparc_option_override): Remove the special
	handling of -mfpu and generalize it to all MASK_FEATURES switches.

From-SVN: r249189
2017-06-14 11:22:19 +00:00
Eric Botcazou
9348614880 simplify-rtx.c (simplify_binary_operation_1): Do not simplify a division of 0 if non-call exceptions are enabled.
* simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
	a division of 0 if non-call exceptions are enabled.

From-SVN: r249188
2017-06-14 10:40:34 +00:00
Andrew Pinski
85c1b6d7c8 re PR target/71663 (aarch64 Vector initialization can be improved slightly)
PR target/71663
gcc
	* config/aarch64/aarch64.c (aarch64_expand_vector_init):
	Improve vector initialization code gen for only variable case.

gcc/testsuite
	* gcc.target/aarch64/vect-init-1.c: Newtestcase.
	* gcc.target/aarch64/vect-init-2.c: Likewise.
	* gcc.target/aarch64/vect-init-3.c: Likewise.
	* gcc.target/aarch64/vect-init-4.c: Likewise.
	* gcc.target/aarch64/vect-init-5.c: Likewise.


Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@cavium.com>

From-SVN: r249187
2017-06-14 10:20:07 +00:00
Paolo Carlini
bee9e49f6c re PR c++/58541 ([c++11] Bogus "error: redeclaration ... differs in ‘constexpr’")
2017-06-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58541
	* g++.dg/cpp0x/constexpr-58541.C: New.

From-SVN: r249186
2017-06-14 09:18:57 +00:00
Eric Botcazou
280cace458 * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
From-SVN: r249183
2017-06-14 07:44:59 +00:00
Richard Biener
24d020bd46 re PR tree-optimization/81083 (ICE: Unable to coalesce ssa_names 4 and 13 which are marked as MUST COALESCE)
2017-06-14  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81083
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
	as values.

	* gcc.dg/torture/pr81083.c: New testcase.

From-SVN: r249182
2017-06-14 07:22:32 +00:00
Jakub Jelinek
6aa397703c vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
	* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise.  Adjust comment.

From-SVN: r249181
2017-06-14 08:29:09 +02:00
Jakub Jelinek
11c16c2a22 vrp101.c: Fix scan-tree-dump regex.
* gcc.dg/tree-ssa/vrp101.c: Fix scan-tree-dump regex.
	* gcc.dg/tree-ssa/builtin-sprintf-2.c: Likewise.  Adjust comment.

From-SVN: r249180
2017-06-14 08:25:06 +02:00
GCC Administrator
f3bc6d3ad3 Daily bump.
From-SVN: r249179
2017-06-14 00:16:20 +00:00
Jakub Jelinek
f31a833983 re PR sanitizer/80973 (ICE with lambda and -fsanitize=undefined)
PR c++/80973
	* cp-gimplify.c (cp_genericize_r): Don't instrument MEM_REF second
	argument even if it has REFERENCE_TYPE.

	* g++.dg/ubsan/pr80973.C: New test.

From-SVN: r249174
2017-06-13 22:05:20 +02:00
Jakub Jelinek
c60dc05326 re PR c++/80984 (ICE with label/variable ambiguity)
PR c++/80984
	* cp-gimplify.c (cp_genericize): Only look for VAR_DECLs in
	BLOCK_VARS (outer) chain.
	(cxx_omp_const_qual_no_mutable): Likewise.

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

From-SVN: r249173
2017-06-13 22:02:38 +02:00
Ian Lance Taylor
e2fea9319e re PR go/80964 (cross-gotools are not executable on host system)
PR go/80964
	* configure.ac: Set NATIVE if host_alias = target_alias.
	* configure: Rebuild.

From-SVN: r249172
2017-06-13 19:56:45 +00:00
Marek Polacek
8a51658814 re PR objc/80949 (ICE in do_warn_duplicated_branches_r)
PR objc/80949
	* c-warn.c (do_warn_duplicated_branches): Return if any of the
	branches is null.

From-SVN: r249171
2017-06-13 17:30:58 +00:00
Segher Boessenkool
6ae036b330 rs6000: Comment fixes + some leftovers
* config/rs6000/rs6000.c: Update all comments that mentioned SPE.
	(rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
	* config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
	* config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete.  Adjust former use.
	* config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
	* config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.

From-SVN: r249170
2017-06-13 19:18:51 +02:00
Segher Boessenkool
d20ae4d7da rs6000: Remove VECTOR_SPE
* config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
	* config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.

From-SVN: r249169
2017-06-13 19:17:54 +02:00
Segher Boessenkool
a1450d5ff2 rs6000: Remove FIXED_SCRATCH
* config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.

From-SVN: r249168
2017-06-13 19:16:57 +02:00
Segher Boessenkool
2f5f2b57e9 rs6000: Updates to t-rtems
* config/rs6000/t-rtems: Don't handle SPE.

From-SVN: r249167
2017-06-13 19:15:42 +02:00
Segher Boessenkool
22f8f4a943 rs6000: Updates to t-linux
* config/rs6000/t-linux: Don't handle SPE.

From-SVN: r249166
2017-06-13 19:14:25 +02:00
Segher Boessenkool
37e3456afe rs6000: Remove eabispe.h
* config/rs6000/eabispe.h: Delete file.

From-SVN: r249165
2017-06-13 19:13:24 +02:00
Segher Boessenkool
bcfa5d6f88 rs6000: Remove t-spe
* config/rs6000/t-spe: Delete file.

From-SVN: r249164
2017-06-13 19:10:57 +02:00
Segher Boessenkool
afb0e4255a rs6000: Remove SPE_CONST_OFFSET_OK
* config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
	(rs6000_legitimate_offset_address_p): Return false for anything in
	V2SImode or V2SFmode.

From-SVN: r249163
2017-06-13 19:06:37 +02:00
Segher Boessenkool
5b1ebbca8d rs6000: Sanitize vector modes
This removes the vector modes that were only used by SPE.  It also
rearranges things so it is easier to see what is there, and for what.


	* config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
	except V2SF and V2SI.  Rearrange the vector modes, and add comments.
	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
	and V4HImode.
	(reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
	(rs6000_legitimate_offset_address_p): Ditto.
	(rs6000_emit_move): Ditto.
	(rs6000_init_builtins): Remove V4HI_type_node.

From-SVN: r249162
2017-06-13 19:05:26 +02:00
Ian Lance Taylor
78a88fb63f compiler: containing small bfunction mixup in Gogo::write_globals
Fix buglet in Gogo::write_globals-- in a couple of places the
    wrong Bfunction was being used for the containing (not target)
    function when creating calls for init functions.
    
    Reviewed-on: https://go-review.googlesource.com/45510

From-SVN: r249159
2017-06-13 14:26:07 +00:00
Martin Liska
45b2222a13 Implement no_sanitize function attribute
2017-06-13  Martin Liska  <mliska@suse.cz>

	PR sanitize/78204
	* c-c++-common/ubsan/attrib-2.c (float_cast2): Enhance the
	test by adding no_sanitize attribute.
	* gcc.dg/asan/use-after-scope-4.c: Likewise.
2017-06-13  Martin Liska  <mliska@suse.cz>

	PR sanitize/78204
	* c-attribs.c (add_no_sanitize_value): New function.
	(handle_no_sanitize_attribute): Likewise.
	(handle_no_sanitize_address_attribute): Use the function.
	(handle_no_sanitize_thread_attribute): New function.
	(handle_no_address_safety_analysis_attribute): Use
	add_no_sanitize_value.
	(handle_no_sanitize_undefined_attribute): Likewise.
	* c-common.h: Declare new functions.
	* c-ubsan.c (ubsan_instrument_division): Use sanitize_flags_p.
	(ubsan_instrument_shift): Likewise.
	(ubsan_instrument_bounds): Likewise.
	(ubsan_maybe_instrument_array_ref): Likewise.
	(ubsan_maybe_instrument_reference_or_call): Likewise.
2017-06-13  Martin Liska  <mliska@suse.cz>

	PR sanitize/78204
	* asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
	(gate_asan): Likewise.
	* asan.h (asan_no_sanitize_address_p): Remove the function.
	(sanitize_flags_p): New function.
	* builtins.def: Fix coding style.
	* common.opt: Use renamed enum value.
	* convert.c (convert_to_integer_1): Use sanitize_flags_p.
	* doc/extend.texi: Document no_sanitize attribute.
	* flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
	to SANITIZE_UNDEFINED_NONDEFAULT.
	* gcc.c (sanitize_spec_function): Use the renamed enum value.
	* gimple-fold.c (optimize_atomic_compare_exchange_p):
	Use sanitize_flags_p.
	* gimplify.c (gimplify_function_tree): Likewise.
	* ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
	* opts.c (parse_no_sanitize_attribute): New function.
	(common_handle_option): Use renamed enum value.
	* opts.h (parse_no_sanitize_attribute): Declare.
	* tree.c (sanitize_flags_p): New function.
	* tree.h: Declared here.
	* tsan.c: Use sanitize_flags_p.
	* ubsan.c (ubsan_expand_null_ifn): Likewise.
	(instrument_mem_ref): Likewise.
	(instrument_bool_enum_load): Likewise.
	(do_ubsan_in_current_function): Remove the function.
	(pass_ubsan::execute): Use sanitize_flags_p.
	* ubsan.h: Remove do_ubsan_in_current_function
	* tree-cfg.c (print_no_sanitize_attr_value): New function.
	(dump_function_to_file): Use it here.
2017-06-13  Martin Liska  <mliska@suse.cz>

	PR sanitize/78204
	* class.c (build_base_path): Use sanitize_flags_p.
	* cp-gimplify.c (cp_genericize_r): Likewise.
	(cp_genericize_tree): Likewise.
	(cp_genericize): Likewise.
	* cp-ubsan.c (cp_ubsan_instrument_vptr_p): Likewise.
	* decl.c (compute_array_index_type): Likewise.
	(start_preparsed_function): Likewise.
	* decl2.c (one_static_initialization_or_destruction): Likewise.
	* init.c (finish_length_check): Likewise.
	* lambda.c (maybe_add_lambda_conv_op): Likewise.
	* typeck.c (cp_build_binary_op): Likewise.
	(build_static_cast_1): Likewise.
2017-06-13  Martin Liska  <mliska@suse.cz>

	PR sanitize/78204
	* c-convert.c (convert): Use sanitize_flags_p.
	* c-decl.c (grokdeclarator): Likewise.
	* c-typeck.c (convert_for_assignment): Likewise.
	(c_finish_return): Likewise.
	(build_binary_op): Likewise.

From-SVN: r249158
2017-06-13 13:59:05 +00:00
Renlin Li
ef0e344124 [ARM][Testsuite]make dump_stack function call conditional in cold-lc.c
After r249013, die () and dump_stack () are both in cold section. This makes
the compiler generate bl instruction for the function call, instead of
honoring the -mlong-calls option.

This patch changes the dump_stack function call conditional, which fixes the
regression.

gcc/testsuite/

	* gcc.target/arm/cold-lc.c: Update coding style, call dump_stack
	conditionally.

From-SVN: r249157
2017-06-13 13:57:45 +00:00
Ian Lance Taylor
09a871c466 runtime: don't always show frames with no function in traceback
If there is no function name, the traceback is generally
    uninformative.  In earlier versions we did not show such frames.
    Restore that behavior.  These frames can be seen with GOTRACEBACK=system.
    
    Reviewed-on: https://go-review.googlesource.com/45431

From-SVN: r249156
2017-06-13 13:29:26 +00:00
Martin Jambor
5622463a6d Fixed spelling mistake in gcc/ChangeLog
From-SVN: r249155
2017-06-13 13:46:14 +02:00
Martin Jambor
345683a95f [PR80803 2/2] Diligent queuing in SRA grp_write prop
2017-06-13  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/80803
	PR tree-optimization/81063
	* tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
	(propagate_subaccesses_across_link): Enqueue subtree whneve necessary
	instead of relying on the caller.

testsuite/
	gcc.dg/tree-ssa/pr80803.c: New test.
	gcc.dg/tree-ssa/pr81063.c: Likewise.

From-SVN: r249154
2017-06-13 13:40:24 +02:00
Martin Jambor
35a952ba70 [PR80803 1/2] Streamline SRA access enqueuing
2017-06-13  Martin Jambor  <mjambor@suse.cz>

	* tree-sra.c (add_access_to_work_queue): Only enqueue accesses
	that have a first_link.
	(sort_and_splice_var_accesses): Do not check first_link before
	enquing.
	(subtree_mark_written_and_enqueue): Likewise.
	(propagate_all_subaccesses): Likewise and do not stop at first
	parent with a first_link.

From-SVN: r249153
2017-06-13 13:34:51 +02:00
Martin Jambor
7aa923e02f Trivial fix in dump_access_tree_1
2017-06-13  Martin Jambor  <mjambor@suse.cz>

	* tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
	instead of f.

From-SVN: r249152
2017-06-13 13:32:02 +02:00
Yury Gribov
9ebc3467fe match.pd: New pattern.
2017-06-13  Yury Gribov  <tetra2005@gmail.com>

gcc/
	* match.pd: New pattern.

gcc/testsuite/
	* c-c++-common/fold-masked-cmp-3.c: New test.

From-SVN: r249151
2017-06-13 14:19:23 +03:00
Yury Gribov
df06757229 tree-vrp.c (is_masked_range_test): New function.
2017-06-13  Yury Gribov  <tetra2005@gmail.com>

gcc/
	* tree-vrp.c (is_masked_range_test): New function.
	(register_edge_assert_for): Determine ranges for
	some bit tests.

From-SVN: r249150
2017-06-13 14:16:15 +03:00
Yury Gribov
16842d34e7 re PR tree-optimization/67328 (range test rather than single bit test for code testing enum values)
2017-06-13  Yury Gribov  <tetra2005@gmail.com>

gcc/
	PR tree-optimization/67328
	* fold-const.c (maskable_range_p): New function.
	(build_range_check): Generate bittests if possible.

gcc/testsuite/
	PR tree-optimization/67328
	* c-c++-common/fold-masked-cmp-1.c: New test.
	* c-c++-common/fold-masked-cmp-2.c: Likewise.
	* gcc.dg/pr46309.c: Fix pattern.
	* gcc.dg/pr46309-2.c: Likewise.

From-SVN: r249149
2017-06-13 14:13:52 +03:00