Commit Graph

141218 Commits

Author SHA1 Message Date
Trevor Saunders
f407dfe985 always define DYNAMIC_CHAIN_ADDRESS
gcc/ChangeLog:

2015-10-10  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* defaults.h (DYNAMIC_CHAIN_ADDRESS): New default definition.
	* builtins.c (expand_builtin_return_addr): Adjust.

From-SVN: r228687
2015-10-11 00:48:11 +00:00
Trevor Saunders
baf37960f6 always define SETUP_FRAME_ADDRESSES
gcc/ChangeLog:

2015-10-10  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* defaults.h (SETUP_FRAME_ADDRESSES): New default definition.
	* builtins.c (expand_builtin_return_addr): Adjust.
	* doc/tm.texi: Likewise.
	* doc/tm.texi.in: Likewise.
	* except.c (expand_builtin_unwind_init): Likewise.

From-SVN: r228686
2015-10-11 00:48:02 +00:00
Trevor Saunders
579f294624 always define INITIAL_FRAME_ADDRESS_RTX
gcc/ChangeLog:

2015-10-10  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* builtins.c (expand_builtin_return_addr): Adjust.
	* defaults.h (INITIAL_FRAME_ADDRESS_RTX): New default definition.

From-SVN: r228685
2015-10-11 00:47:52 +00:00
GCC Administrator
9c02b29a87 Daily bump.
From-SVN: r228684
2015-10-11 00:16:12 +00:00
Jan Hubicka
6ba9c455ff tree.c (type_with_interoperable_signedness): New.
* tree.c (type_with_interoperable_signedness): New.
	(gimple_canonical_types_compatible_p): Use it.
	* tree.h (type_with_interoperable_signedness): Declare

From-SVN: r228681
2015-10-10 19:44:07 +00:00
Jan Hubicka
9c4eeafc11 tree.c (type_with_interoperable_signedness): New.
* tree.c (type_with_interoperable_signedness): New.
	(gimple_canonical_types_compatible_p): Use it.
	* tree.h (type_with_interoperable_signedness): Declare

	* lto.c (hash_canonical_type): Honor
	type_with_interoperable_signedness.

	* gfortran.dg/lto/bind_c-2_0.f90: New testcase.
	* gfortran.dg/lto/bind_c-2_1.c: New testcase.
	* gfortran.dg/lto/bind_c-3_0.f90: New testcase.
	* gfortran.dg/lto/bind_c-3_1.c: New testcase.
	* gfortran.dg/lto/bind_c-4_0.f90: New testcase.
	* gfortran.dg/lto/bind_c-4_1.c: New testcase.
	* gfortran.dg/lto/bind_c-5_0.f90: New testcase.
	* gfortran.dg/lto/bind_c-5_1.c: New testcase.

From-SVN: r228680
2015-10-10 19:43:49 +00:00
Jan Hubicka
05486daafd fold-const.c (operand_equal_p): Document OEP_ADDRESS_OF and OEP_CONSTANT_ADDRESS_OF...
* fold-const.c (operand_equal_p): Document OEP_ADDRESS_OF
	and OEP_CONSTANT_ADDRESS_OF; skip type compatibility checks
	when OEP_ADDRESS_OF is se.

From-SVN: r228679
2015-10-10 19:37:47 +00:00
Aditya Kumar
ea17c0fef4 add dump of data dependences
2015-10-07  Aditya Kumar  <aditya.k7@samsung.com>
                Sebastian Pop  <s.pop@samsung.com>

                * graphite-dependences.c (scop_get_dependences): Add dump of the
                data dependence graph.
                * graphite-poly.c (print_isl_union_map): New.
                (debug_isl_union_map): New.
                * graphite-poly.h (print_isl_union_map): Declare.
                (debug_isl_union_map): Declare.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>

From-SVN: r228677
2015-10-10 14:53:16 +00:00
Aditya Kumar
5c24066b86 clean up debug functions
2015-10-07  Aditya Kumar  <aditya.k7@samsung.com>
                Sebastian Pop  <s.pop@samsung.com>

        * graphite-poly.c (print_iteration_domain): Remove verbosity.
        Remove OpenScop formatting.
        (print_iteration_domains): Same.
        (debug_iteration_domain): Same.
        (debug_iteration_domains): Same.
        (print_pdr): Same.
        (debug_pdr): Same.
        (dump_gbb_cases): Same.
        (dump_gbb_conditions): Same.
        (print_pdrs): Same.
        (debug_pdrs): Same.
        (print_pbb_body): Same.
        (print_pbb): Same.
        (print_scop_params): Same.
        (print_scop_context): Same.
        (print_scop): Same.
        (debug_pbb_domain): Same.
        (debug_pbb): Same.
        (debug_scop_context): Same.
        (debug_scop): Same.
        (debug_scop_params): Same.
        * graphite-poly.h: Same.
        * graphite.c (graphite_transform_loops): Same.

Co-Authored-By: Sebastian Pop <s.pop@samsung.com>

From-SVN: r228676
2015-10-10 14:53:10 +00:00
Trevor Saunders
9a24a3cc20 remove an unneeded as_a<rtx_insn *> ()
gcc/ChangeLog:

2015-10-10  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* function.c (stack_protect_epilogue): Remove as_a<rtx_insn *> ()
	call that isn't needed.

From-SVN: r228675
2015-10-10 14:32:56 +00:00
GCC Administrator
b3fe7d2b4e Daily bump.
From-SVN: r228672
2015-10-10 00:16:12 +00:00
Jeff Law
9cf1766f2f Re: [PATCH] Update SSA_NAME manager to use two lists
* tree-ssanames.c (flush_ssaname_freelist): Use splice and truncate
	rather than moving each name to the freelist individually.

From-SVN: r228668
2015-10-09 15:16:16 -06:00
Steve Ellcey
4c926b8a61 mips.exp (mips_option_groups): Add -mframe-header-opt and -mno-frame-header-opt options.
2015-10-09  Steve Ellcey  <sellcey@imgtec.com>

	* gcc.target/mips/mips.exp (mips_option_groups): Add -mframe-header-opt
	and -mno-frame-header-opt options.
	* gcc.target/mips/frame-header-1.c: New file.
	* gcc.target/mips/frame-header-2.c: New file.
	* gcc.target/mips/frame-header-3.c: New file.

From-SVN: r228667
2015-10-09 17:12:26 +00:00
Steve Ellcey
d41c8b4c43 config.gcc (mips*-*-*): Add frame-header-opt.o to extra_objs.
2015-10-05  Steve Ellcey  <sellcey@imgtec.com>

	* config.gcc (mips*-*-*): Add frame-header-opt.o to extra_objs.
	* frame-header-opt.c: New file.
	* config/mips/mips-proto.h (mips_register_frame_header_opt):
	Add prototype.
	* config/mips/mips.c (mips_compute_frame_info): Check
	optimize_call_stack flag.
	(mips_option_override): Register new frame_header_opt pass.
 	(mips_frame_info, mips_int_mask, mips_shadow_set,
	machine_function): Move these types to...
	* config/mips/mips.h: here.
	(machine_function): Add does_not_use_frame_header and
	optimize_call_stack fields.
	* config/mips/t-mips (frame-header-opt.o): Add new make rule.
	* doc/invoke.texi (-mframe-header-opt, -mno-frame-header-opt):
	Document new flags.
	* config/mips/mips.opt (mframe-header-opt): Add new option.

From-SVN: r228666
2015-10-09 17:10:42 +00:00
Uros Bizjak
b867c7ca88 * config/i386/i386.c
(expand_set_or_movmem_prologue_epilogue_by_misaligned_moves): Use
	ROUND_DOWN where applicable.

From-SVN: r228665
2015-10-09 18:53:37 +02:00
Jeff Law
7532abf27b [PATCH] [6/n] Fix minor SSA_NAME leaks
* tree-vect-stmts.c (free_stmt_vec_info): Free the LHS of the
	correct statement.

From-SVN: r228663
2015-10-09 10:34:00 -06:00
Renlin Li
97400916d7 [PATCH][ARM]Add earlyclobber modifier for neon_(vtrn, vuzp, vzip)<mode>_insn rtx
pattern.

gcc/

2015-10-09  Renlin Li  <renlin.li@arm.com>

	* config/arm/neon.md (neon_vuzp<mode>_insn): Add & modifier for
        operands[0] and operands[2].
        (neon_vtrn<mode>_insn): Likewise.
        (neon_vzip<mode>_insn): Likewise.

From-SVN: r228662
2015-10-09 16:22:33 +00:00
Andre Vieira
84ff66b884 [PATCH V3][GCC] Algorithmic optimization in match and simplify
gcc/ChangeLog

	* match.pd: ((X inner_op C0) outer_op C1) New pattern.
	((X & C2) << C1): Expand to...
	(X {&,^,|} C2 << C1): ...This.
	((X & C2) >> C1): Expand to...
	(X {&,^,|} C2 >> C1): ...This.

gcc/testsuite/ChangeLog

	* gcc.dg/tree-ssa/forwprop-33.c: New.


Co-Authored-By: Hale Wang <hale.wang@arm.com>

From-SVN: r228661
2015-10-09 16:08:35 +00:00
Alexander Fomin
0fc87f2fc2 AVX512: Fix embedded rounding/SAE specifier position.
gcc/

	PR target/67895
	* config/i386/sse.md (define_insn "sse_cvtsi2ss<round_name>"):
	Adjust embedded rounding/SAE specifier position.
	(define_insn "sse_cvtsi2ssq<round_name>"): Likewise.
	(define_insn "cvtusi2<ssescalarmodesuffix>32<round_name>"): Likewise.
	(define_insn "cvtusi2<ssescalarmodesuffix>64<round_name>"): Likewise.
	(define_insn "sse2_cvtsi2sdq<round_name>"): Likewise.
	(define_insn "avx512dq_rangep<mode><mask_name><round_saeonly_name>"):
	Likewise.
	(define_insn "avx512dq_ranges<mode><round_saeonly_name>"): Likewise.

gcc/testsuite

	PR target/67895
	* gcc.target/i386/avx512dq-vrangepd-1.c: Adjust assembly regexp.
	* gcc.target/i386/avx512dq-vrangeps-1.c: Likewise.
	* gcc.target/i386/avx512dq-vrangesd-1.c: Likewise.
	* gcc.target/i386/avx512dq-vrangess-1.c: Likewise.
	* gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Likewise.
	* gcc.target/i386/avx512f-vcvtsi2ss-1.c: Likewise.
	* gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Likewise.
	* gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Likewise.
	* gcc.target/i386/avx512f-vcvtusi2ss-1.c: Likewise.
	* gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Likewise.

From-SVN: r228660
2015-10-09 11:57:06 -04:00
David Malcolm
9e531d3749 Testsuite: add dg-{begin|end}-multiline-output commands
This patch adds an easy way to write tests for expected multiline
output.  For example we can test carets and underlines for
a particular diagnostic with:

/* { dg-begin-multiline-output "" }
 typedef struct _GMutex GMutex;
                ^~~~~~~
   { dg-end-multiline-output "" } */

multiline.exp is used by prune.exp; hence we need to load it before
prune.exp via *load_gcc_lib* for the testsuites of the various
non-"gcc" support libraries (e.g. boehm-gc).

gcc/testsuite/ChangeLog:
	* lib/multiline.exp: New file.
	* lib/prune.exp: Load multiline.exp.
	(prune_gcc_output): Call into multiline.exp to handle any
	multiline output directives.
	* lib/libgo.exp: Load multiline.exp before prune.exp, using
	load_gcc_lib.

boehm-gc/ChangeLog:
	* testsuite/lib/boehm-gc.exp: Load multiline.exp before
	prune.exp, using load_gcc_lib.

libatomic/ChangeLog:
	* testsuite/lib/libatomic.exp: Load multiline.exp before
	prune.exp, using load_gcc_lib.

libgomp/ChangeLog:
	* testsuite/lib/libgomp.exp: Load multiline.exp before prune.exp,
	using load_gcc_lib.

libitm/ChangeLog:
	* testsuite/lib/libitm.exp: Load multiline.exp before prune.exp,
	using load_gcc_lib.

libvtv/ChangeLog:
	* testsuite/lib/libvtv.exp: Load multiline.exp before prune.exp,
	using load_gcc_lib.

From-SVN: r228655
2015-10-09 13:55:23 +00:00
Martin Jambor
6651d6b42e [PR 67794] Also remap SSA_NAMEs defined in ASMs in IPA-SRA
2015-10-09  Martin Jambor  <mjambor@suse.cz>

	tree-optimization/67794
	* tree-sra.c (replace_removed_params_ssa_names): Do not distinguish
	between types of state,ents but accept original definitions as a
	parameter.
	(ipa_sra_modify_function_body): Use FOR_EACH_SSA_DEF_OPERAND to
	iterate over definitions.

testsuite/
        * gcc.dg/ipa/ipa-sra-10.c: Nw test.
        * gcc.dg/torture/pr67794.c: Likewise.

From-SVN: r228654
2015-10-09 15:13:38 +02:00
James Norris
1a025b0575 rs6000.c (rs6000_offload_options): New.
* config/rs6000/rs6000.c (rs6000_offload_options): New.
	(TARGET_OFFLOAD_OPTIONS): New.

From-SVN: r228653
2015-10-09 12:35:58 +00:00
Alexandre Oliva
01a7166b4f [PR67891] don't test is_gimple_reg after parm expansion
for  gcc/ChangeLog

	PR middle-end/67891
	* cfgexpand.c (set_parm_rtl): Drop is_gimple_reg test.

From-SVN: r228652
2015-10-09 12:18:58 +00:00
Alexandre Oliva
fc5851fe3d [PR67766] reorder handling of parallels, concats and promoted values in return
for  gcc/ChangeLog

	PR middle-end/67766
	* function.c (expand_function_end): Move return value
	promotion past the handling of PARALLELs and CONCATs.

From-SVN: r228651
2015-10-09 12:18:40 +00:00
Alexandre Oliva
f813d16ec5 [PR67828] don't unswitch on default defs of non-parms
for  gcc/ChangeLog

	PR rtl-optimizatoin/67828
	* tree-ssa-loop-unswitch.c: Include tree-ssa.h.
	(tree_may_unswitch_on): Don't unswitch on expressions
	involving undefined values.

for  gcc/testsuite/ChangeLog

	PR rtl-optimization/67828
	* gcc.dg/torture/pr67828.c: New.

From-SVN: r228650
2015-10-09 12:18:24 +00:00
Martin Liska
6be1d686e1 * MAINTAINERS (Write After Approval): Add myself.
From-SVN: r228649
2015-10-09 11:49:49 +00:00
Richard Biener
eee7b6c4a2 genmatch.c (print_operand): Fix formatting.
2015-10-09  Richard Biener  <rguenther@suse.de>

	* genmatch.c (print_operand): Fix formatting.
	(dt_node::append_simplify): Warn for multiple simplifiers
	that match the same pattern.
	* match.pd (log (exp @0)): Remove duplicates.

From-SVN: r228648
2015-10-09 11:47:31 +00:00
Christian Bruel
0c063d6032 fix Changelog entry removed at revision 228479
From-SVN: r228647
2015-10-09 13:20:23 +02:00
Jonathan Wakely
7b5fde8304 Missed ChangeLog for previous libstdc++-v3 commit
Add include/experimental/bits dir

	* include/experimental/erase_if.h: Move to ...
	* include/experimental/bits/erase_if.h: New.
	* include/experimental/fs_dir.h: Move to ...
	* include/experimental/bits/fs_dir.h: New.
	* include/experimental/fs_fwd.h: Move to ...
	* include/experimental/bits/fs_fwd.h: New.
	* include/experimental/fs_ops.h: Move to ...
	* include/experimental/bits/fs_ops.h: New.
	* include/experimental/fs_path.h: Move to ...
	* include/experimental/bits/fs_path.h: New.
	* include/experimental/string_view.tcc: Move to ...
	* include/experimental/bits/string_view.tcc: New.
	* include/Makefile.am: Add include/experimental/bits sub-directory.
	* include/Makefile.in: Regenerate.
	* include/experimental/filesystem: Adjust includes.
	* include/experimental/map: Likewise.
	* include/experimental/set: Likewise.
	* include/experimental/string_view: Likewise.
	* include/experimental/unordered_map: Likewise.
	* include/experimental/unordered_set: Likewise.

From-SVN: r228646
2015-10-09 12:19:04 +01:00
Jonathan Wakely
ea4554eaea Add include/experimental/bits dir
From-SVN: r228645
2015-10-09 12:11:54 +01:00
Ramana Radhakrishnan
f869c12f4c [PATCH PR target/67366 2/2] [gimple-fold.c] Support movmisalign optabs in gimple-fold.c
This patch by Richard allows for movmisalign optabs to be supported
in gimple-fold.c. This caused a bit of pain in the testsuite with strlenopt-8.c
in conjunction with the ARM support for movmisalign_optabs as the test
was coded up to do different things depending on whether the target
supported misaligned access or not. However now with unaligned access
being allowed for different levels of the architecture in the arm backend,
the concept of the helper function non_strict_align mapping identically
to the definition of STRICT_ALIGNMENT disappears.

Adjusted thusly for ARM. The testsuite/lib changes were tested with an
arm-none-eabi multilib that included architecture variants that did not
support unaligned access and architecture variants that did.

The testing matrix for this patch was:

1. x86_64 bootstrap and regression test - no regressions.
2. armhf bootstrap and regression test - no regressions.
3. arm-none-eabi cross build and regression test for

{-marm/-march=armv7-a/-mfpu=vfpv3-d16/-mfloat-abi=softfp}
{-mthumb/-march=armv8-a/-mfpu=crypto-neon-fp-armv8/-mfloat-abi=hard}
{-marm/-mcpu=arm7tdmi/-mfloat-abi=soft}
{-mthumb/-mcpu=arm7tdmi/-mfloat-abi=soft}

with no regressions.

Ok to apply ?

2015-10-09  Richard Biener  <rguenth@suse.de>

	PR target/67366
	* gimple-fold.c (optabs-query.h): Include
	(gimple_fold_builtin_memory_op): Allow unaligned stores
	when movmisalign_optabs are available.

2015-10-09  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	PR target/67366
	* lib/target-supports.exp (check_effective_target_non_strict_align):
	Adjust for arm*-*-*.
	* gcc.target/arm/pr67366.c: New test.

From-SVN: r228644
2015-10-09 10:58:06 +00:00
Ramana Radhakrishnan
a46b23e136 [Patch PR target/67366 1/2] [ARM] - Add movmisalignhi / si patterns
This adds movmisalignhi and movmisalignsi expanders when unaligned
access is allowed by the architecture. This allows the mid-end
to expand to misaligned loads and stored.

Compared code generated for the Linux kernel and
it changes code generation for a handful of files all for the better
basically by reducing the stack usage.

Tested by :

1. armhf bootstrap and regression test - no regressions.
2.. arm-none-eabi cross build and regression test for

    {-marm/-march=armv7-a/-mfpu=vfpv3-d16/-mfloat-abi=softfp}
    {-mthumb/-march=armv8-a/-mfpu=crypto-neon-fp-armv8/-mfloat-abi=hard}
    {-marm/-mcpu=arm7tdmi/-mfloat-abi=soft}
    {-mthumb/-mcpu=arm7tdmi/-mfloat-abi=soft}

Will apply to trunk once 2/2 is approved.

regards
Ramana

2015-10-09  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        PR target/67366
        * config/arm/arm.md (movmisalign<mode>): New.
        * config/arm/iterators.md (HSI): New.

From-SVN: r228643
2015-10-09 10:53:31 +00:00
Alexander Fomin
dc0e206000 * MAINTAINERS (Write After Approval): Add myself.
From-SVN: r228642
2015-10-09 06:50:51 -04:00
Eric Botcazou
f81ff612ef Make-lang.in: Make sure that GNAT1_OBJS and not just GNAT1_ADA_OBJS are compiled only after...
* gcc-interface/Make-lang.in: Make sure that GNAT1_OBJS and not just
	GNAT1_ADA_OBJS are compiled only after generated files are created.

From-SVN: r228636
2015-10-09 08:13:33 +00:00
Richard Biener
c0f6274015 re PR middle-end/67891 (FAIL: gcc.dg/pr43300.c (internal compiler error) on alpha-linux-gnu)
2015-10-09  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/67891
	* gimple-match.h (gimple_simplified_result_is_gimple_val):
	New helper.
	(gimple_resimplify1): Declare.
	(gimple_resimplify2): Likewise.
	(gimple_resimplify3): Likewise.
	* gimple-match-head.c (gimple_resimplify1): Export.
	(gimple_resimplify2): Likewise.
	(gimple_resimplify3): Likewise.
	(maybe_push_res_to_seq): Use gimple_simplified_result_is_gimple_val.
	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
	* tree-ssa-sccvn.c (visit_reference_op_load): Use gimple_resimplify1
	to avoid creating stmts without VN info.

	* gcc.dg/tree-ssa/pr67891.c: New testcase.

From-SVN: r228635
2015-10-09 08:12:18 +00:00
Jeff Law
2795c84a46 [PATCH] [5/n] Fix minor SSA_NAME leaks
* value-prof.c (gimple_ic): Add missing calls to unlink_stmt_vdef
	and release_ssa_name in two places.
	(gimple_stringop_fixed_value): Similarly.

From-SVN: r228632
2015-10-08 23:09:56 -06:00
GCC Administrator
83ebb841f0 Daily bump.
From-SVN: r228631
2015-10-09 00:16:19 +00:00
Jan Hubicka
d7e2ff7234 ipa-icf.c (sem_item::compare_symbol_references): Fix use of availability.
* ipa-icf.c (sem_item::compare_symbol_references): Fix use
	of availability.

From-SVN: r228628
2015-10-08 23:20:06 +00:00
Jeff Law
716e92f454 [PATCH] [4/n] Fix minor SSA_NAME leaks
* tree-ssa-loop-im.c (rewrite_bittest): Add missing call to
        release_defs.

From-SVN: r228627
2015-10-08 17:19:35 -06:00
Jeff Law
c05bba0791 [PATCH] [4/n] Fix minor SSA_NAME leaks
* tree-ssa-loop-im.c (rewrite_bittest): Add missing call to
	release_defs.

From-SVN: r228626
2015-10-08 17:18:03 -06:00
Jeff Law
7af9b2ff19 [PATCH] [3/n] Fix minor SSA_NAME leaks
* tree-stdarg.c (expand_ifn_va_arg_1): Add missing call to
	unlink_stmt_vdef and release_ssa_name_fn.

From-SVN: r228625
2015-10-08 14:47:46 -06:00
Jeff Law
d8bf7dce97 [PATCH] [2/n] Fix minor SSA_NAME leaks
* tree-ssa-dse.c (dse_optimize_stmt): Add missing call to
	release_defs.

From-SVN: r228624
2015-10-08 14:27:38 -06:00
Ilya Verbin
6fd2e66a09 liboffloadmic: Add missed checks for malloc and strdup return values
liboffloadmic/
	* runtime/offload_engine.cpp (Engine::init_process): Use strdup instead
	of sizeof+malloc+sprintf, check for return value.
	* runtime/offload_env.cpp (MicEnvVar::get_env_var_kind): Check for
	strdup return value.
	* runtime/offload_host.cpp (__offload_init_library_once): Check for
	strdup return value.  Fix size calculation of COI_HOST_THREAD_AFFINITY.
	* runtime/emulator/coi_device.cpp (COIProcessWaitForShutdown): Check for
	malloc return value.

From-SVN: r228622
2015-10-08 19:04:43 +00:00
H.J. Lu
bc8642d6ce Round up the SSE register save area only if needed
There is is no point to round up the SSE register save area to 16 bytes if
the incoming stack boundary is less than 16 bytes.

	* config/i386/i386.c (ix86_compute_frame_layout): Round up the
	SSE register save area to 16 bytes only if the incoming stack
	boundary is no less than 16 bytes.

From-SVN: r228621
2015-10-08 11:57:11 -07:00
Jeff Law
d1acc3f4d2 [PATCH] [1/n] Fix minor SSA_NAME leaks
* tree-ssa-phiopt.c (factor_out_conversion): Add missing calls to
	release_ssa_name.  Fix typo in comment.

From-SVN: r228619
2015-10-08 11:50:44 -06:00
Nathan Sidwell
25662751d1 nvptx.h (struct machine_function): Add comment.
* config/nvptx/nvptx.h (struct machine_function): Add comment.
	* config/nvptx/nvptx.c (nvptx_declare_function_name): Functions
	may return pointer as well as in memory.
	(nvptx_output_return): Likewise.

From-SVN: r228618
2015-10-08 17:31:36 +00:00
Richard Sandiford
4835c97845 Move sqrt and cbrt simplifications to match.pd
This patch moves the sqrt and cbrt simplification rules to match.pd.
builtins.c now only does the constant folding.

Bootstrapped & regression-tested on x86_64-linux-gnu.

gcc/
	* builtins.c (fold_builtin_sqrt, fold_builtin_cbrt): Delete.
	(fold_builtin_1): Update accordingly.  Handle constant arguments here.
	* match.pd: Add rules previously handled by fold_builtin_sqrt
	and fold_builtin_cbrt.

gcc/testsuite/
	* gcc.dg/builtins-47.c: Test the optimized dump instead.

From-SVN: r228616
2015-10-08 16:54:37 +00:00
Richard Sandiford
68e57f040c Make tree_expr_nonnegative_warnv_p recurse into SSA names
The upcoming patch to move sqrt and cbrt simplifications to match.pd
caused a regression because the (abs @0)->@0 simplification didn't
trigger for:

        (abs (convert (abs X)))

The simplification is based on tree_expr_nonnegative_p, which at
the moment just gives up if it sees an SSA_NAME.

This patch makes tree_expr_nonnegative_p recurse into SSA name
definitions, but limits the depth of recursion to a small number
for the reason mentioned in the comment (adapted from an existing
comment in gimple_val_nonnegative_real_p).  The patch reuses code
in tree-vrp.c, moving it to gimple-fold.c.  It also replaces calls
to gimple_val_nonnegative_real_p with calls to tree_expr_nonnegative_p.

A knock-on effect is that we can now prove _i_589 < 0 is false in
sequences like:

      i_1917 = ASSERT_EXPR <i_1075, i_1075 == 0>;
      _i_589 = (const int) i_1917;
      _i_1507 = ASSERT_EXPR <_i_589, _i_589 < 0>;

This defeats an assert in tree-vrp.c that ASSERT_EXPR conditions
are never known to be false.  Previously the assert only ever used
local knowledge and so would be limited to cases like x != x for
integer x.  Now that we use global knowledge it's possible to prove
the assertion condition is false in blocks that are in practice
unreachable.  The patch therefore removes the assert.

Bootstrapped & regression-tested on x86_64-linux-gnu.  I didn't write
a specific test because this is already covered by the testsuite if
the follow-on patch is also applied.

gcc/
	* params.def (PARAM_MAX_SSA_NAME_QUERY_DEPTH): New param.
	* doc/invoke.texi (--param max-ssa-name-query-depth): Document.
	* fold-const.h (tree_unary_nonnegative_warnv_p)
	(tree_single_nonnegative_warnv_p, tree_call_nonnegative_warnv_p)
	(tree_expr_nonnegative_warnv_p): Add depth parameters.
	* fold-const.c: Include gimple-fold.h and params.h.
	(tree_ssa_name_nonnegative_warnv_p): New function.
	(tree_unary_nonnegative_warnv_p, tree_binary_nonnegative_warnv_p)
	(tree_single_nonnegative_warnv_p, tree_call_nonnegative_warnv_p)
	(tree_invalid_nonnegative_warnv_p, tree_expr_nonnegative_warnv_p):
	Add a depth parameter and increment it for recursive calls to
	tree_expr_nonnegative_warnv_p.  Use tree_ssa_name_nonnegative_warnv_p
	to handle SSA names.
	* gimple-fold.h (gimple_val_nonnegative_real_p): Delete.
	(gimple_stmt_nonnegative_warnv_p): Declare.
	* tree-vrp.c (remove_range_assertions): Remove assert that condition
	cannot be proven false.
	(gimple_assign_nonnegative_warnv_p, gimple_call_nonnegative_warnv_p)
	(gimple_stmt_nonnegative_warnv_p): Move to...
	* gimple-fold.c: ...here.  Add depth parameters and pass them
	down to the tree routines.  Accept statements that aren't
	assignments or calls but just return false for them.
	(gimple_val_nonnegative_real_p): Delete.
	* tree-ssa-math-opts.c (gimple_expand_builtin_pow): Use
	tree_expr_nonnegative_p instead of gimple_val_nonnegative_real_p.
	Check HONOR_NANs first.

From-SVN: r228614
2015-10-08 16:49:24 +00:00
Martin Jambor
170f473b52 Fix Solaris bootstrap
2015-10-08  Martin Jambor  <mjambor@suse.cz>

	* ipa-cp.c (meet_with_1): Make the argument of abs signed.  Remove
	unnecessary MIN.

From-SVN: r228607
2015-10-08 18:30:06 +02:00
Jason Merrill
338976c234 cp-tree.h (SIMPLE_TARGET_EXPR_P): New.
* cp-tree.h (SIMPLE_TARGET_EXPR_P): New.
	* init.c (get_nsdmi): Use it.
	* typeck2.c (massage_init_elt): Use it.

From-SVN: r228606
2015-10-08 12:14:03 -04:00