aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2016-08-26Add validation and consolidation of fix-it hintsDavid Malcolm5-6/+191
The first aspect of this patch is to add some checking of fix-it hints. The idea is to put this checking within the rich_location machinery, rather than requiring every diagnostic to implement it for itself. The fixits within a rich_location are "atomic": all must be valid for any to be applicable. We reject any fixits involving locations above LINE_MAP_MAX_LOCATION_WITH_COLS. There's no guarantee that it's sane to modify a macro, so we reject any fix-its that touch them. For example, note the attempt to provide a fix-it for the definition of the macro FIELD: spellcheck-fields-2.c: In function ‘test_macro’: spellcheck-fields-2.c:26:15: error: ‘union u’ has no member named ‘colour’; did you mean ‘color’? #define FIELD colour ^ color spellcheck-fields-2.c:27:15: note: in expansion of macro ‘FIELD’ return ptr->FIELD; ^~~~~ After this patch, the fixit is not displayed: spellcheck-fields-2.c: In function ‘test_macro’: spellcheck-fields-2.c:26:15: error: ‘union u’ has no member named ‘colour’; did you mean ‘color’? #define FIELD colour ^ spellcheck-fields-2.c:27:15: note: in expansion of macro ‘FIELD’ return ptr->FIELD; ^~~~~ We might want some way for a diagnostic to opt-in to fix-its that affect macros, but for now it's simplest to reject them. The other aspect of this patch is fix-it consolidation: in some cases neighboring fix-its can be merged. For example, in a diagnostic to modernize old-style struct initializers from: struct s example = { - foo: 1, + .foo = 1, }; one approach would be to replace the "foo" with ".foo" and the ":" with " =". This would give two "replace" fix-its: foo: 1, --- FIXIT 1 .foo - FIXIT 2 = This patch allows them to be consolidated into a single "replace" fix-it: foo: 1, ---- .foo = gcc/ChangeLog: * diagnostic-show-locus.c (selftest::test_fixit_consolidation): New function. (selftest::diagnostic_show_locus_c_tests): Call it. * gcc-rich-location.h (gcc_rich_location): Eliminate unused constructor based on source_range. gcc/testsuite/ChangeLog: * gcc.dg/spellcheck-fields-2.c (test): Move dg-begin/end-multiline-output within function body. (test_macro): New function. libcpp/ChangeLog: * include/line-map.h (rich_location): Eliminate unimplemented constructor based on source_range. (rich_location::get_last_fixit_hint): New method. (rich_location::reject_impossible_fixit): New method. (rich_location): Add fields m_line_table and m_seen_impossible_fixit. (fixit_hint::maybe_append_replace): New pure virtual function. (fixit_insert::maybe_append_replace): New function. (fixit_replace::maybe_append_replace): New function. * line-map.c (rich_location::rich_location): Initialize m_line_table and m_seen_impossible_fixit. (rich_location::add_fixit_insert): Call reject_impossible_fixit and bail out if true. (column_before_p): New function. (rich_location::add_fixit_replace): Call reject_impossible_fixit and bail out if true. Attempt to consolidate with neighboring fixits. (rich_location::get_last_fixit_hint): New method. (rich_location::reject_impossible_fixit): New method. (fixit_insert::maybe_append_replace): New method. (fixit_replace::maybe_append_replace): New method. From-SVN: r239789
2016-08-26Tweak to colors of fix-it hintsDavid Malcolm6-39/+101
Previous, fix-it hints were printed using the color of the severity of the diagnostic (magenta for warnings, red for errors, cyan for notes). This patch updates fix-it hints so that replacement text is printed in green, to better distinguish the suggested improvement from the current code. For example: spellcheck-fields.cc:52:13: error: 'struct s' has no member named 'colour'; did you mean 'color'? return ptr->colour; <<< RED ^~~~~~ <<< RED color <<< GREEN It makes sense for the underlinings that indicate deletions to be printed in red, so the patch changes that also. For example: diagnostic-test-show-locus-color.c:179:9: warning: example of a removal hint int a;; <<< MAGENTA ^ <<< MAGENTA - <<< RED gcc/ChangeLog: * diagnostic-color.c (color_dict): Add "fixit-insert" and "fixit-delete". (parse_gcc_colors): Update description of default GCC_COLORS. * diagnostic-show-locus.c (colorizer::set_fixit_hint): Delete. (colorizer::set_fixit_insert): New method. (colorizer::set_fixit_delete): New method. (colorizer::get_color_by_name): New method. (colorizer::STATE_FIXIT_INSERT): New constant. (colorizer::STATE_FIXIT_DELETE): New constant. (class colorizer): Drop "_cs" suffix from fields. Delete "_ce" fields in favor of new field "m_stop_color". Add fields "m_fixit_insert" and "m_fixit_delete". (colorizer::colorizer): Update for above changes. Replace colorize_start calls with calls to get_color_by_name. (colorizer::begin_state): Handle STATE_FIXIT_INSERT and STATE_FIXIT_DELETE. Update for field renamings. (colorizer::finish_state): Simplify by using m_stop_color, rather than multiple identical "*_ce" fields. (colorizer::get_color_by_name): New method. (layout::print_any_fixits): Print insertions and replacements using the "fixit-insert" color, and deletions using the "fixit-delete" color. * doc/invoke.texi (-fdiagnostics-color): Update description of default GCC_COLORS, and of the supported capabilities. gcc/testsuite/ChangeLog: * gcc.dg/plugin/diagnostic-test-show-locus-color.c (test_fixit_insert): Update expected output. (test_fixit_remove): Likewise. (test_fixit_replace): Likewise. From-SVN: r239787
2016-08-26Fix gcc.dg/ipa/propbits-2.cRainer Orth2-3/+8
* gcc.dg/ipa/propbits-2.c: Add -fdump-tree-optimized to dg-options. Fix typo. From-SVN: r239786
2016-08-26xtensa: report stack usageMax Filippov2-0/+10
This enables options -fstack-usage and -Wstack-usage. 2016-08-26 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/xtensa.c (xtensa_expand_prologue): Update current_function_static_stack_size variable with the static stack frame size of the current function when flag_stack_usage_info is enabled. From-SVN: r239785
2016-08-26Avoid calling a trivial default constructor.Jason Merrill5-20/+40
* class.c (default_ctor_p): New. (in_class_defaulted_default_constructor): Use it. (type_has_non_user_provided_default_constructor): Use it. * call.c (build_over_call): Handle trivial default constructor. * cp-tree.h: Declare default_ctor_p. From-SVN: r239783
2016-08-26PR c++/57728 - explicit instantiation and defaulted functionsJason Merrill5-3/+45
* pt.c (do_type_instantiation): Don't mess with non-user-provided member functions. From-SVN: r239782
2016-08-26ipa-inline-analysis.c (inline_write_summary): Remove unnecessary assignment ↵Nathan Sidwell2-9/+10
inside if condition. * ipa-inline-analysis.c (inline_write_summary): Remove unnecessary assignment inside if condition. From-SVN: r239779
2016-08-26re PR tree-optimization/69047 (memcpy is not as optimized as union is)Richard Biener4-8/+80
2016-08-26 Richard Biener <rguenther@suse.de> PR tree-optimization/69047 * tree-ssa.c (maybe_rewrite_mem_ref_base): Handle general bitfield extracts similar to what FRE does. (non_rewritable_mem_ref_base): Likewise. * gcc.dg/pr69047.c: New testcase. From-SVN: r239778
2016-08-26Always support float128 on x86.Joseph Myers10-45/+14
In <https://gcc.gnu.org/ml/gcc-bugs/2016-08/msg03233.html>, Nick reported i386-elf and ia64-elf failing to build because of float128_type_node being NULL, but being used by the back end for __float128. The global float128_type_node is only available conditionally, if target hooks indicate TFmode is not only available as a scalar mode and of the right format, but also supported in libgcc. The back-end support, however, expects the type always to be available for __float128 even if the libgcc support is missing. Although a target-specific node could be restored in the case where libgcc support is missing, it seems better to address the missing libgcc support. Thus, this patch enables TFmode soft-fp in libgcc globally for all x86 targets - the only special cases needed being for targets that use soft-fp for SFmode and DFmode, one of which already had the support for TFmode as well (so I based the i[34567]86-*-rtems* configuration on that present for i[34567]86-*-elfiamcu). The i386 implementation of TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P is then removed as no longer needed. I can provide such a patch for ia64 if useful, but am not in a position to test it (and while I'm reasonably confident that enabling this support would be right for ia64-elf and ia64-freebsd, I've no real idea if enabling libgcc support for TFmode, with or without also enabling it for XFmode, would be safe for ia64-vms). Bootstrapped with no regressions on x86_64-pc-linux-gnu. gcc: * config/i386/i386.c (ix86_libgcc_floating_mode_supported_p) (TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Remove. * config/i386/i386elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. * config/i386/lynx.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. * config/i386/netbsd-elf.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. * config/i386/netbsd64.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. * config/i386/nto.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. * config/i386/openbsd.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. * config/i386/rtemself.h (IX86_NO_LIBGCC_TFMODE): Likewise. * config/i386/vxworks.h (IX86_MAYBE_NO_LIBGCC_TFMODE): Likewise. libgcc: * config.host (i[34567]86-*-* | x86_64-*-*): Enable TFmode soft-fp where not already enabled. From-SVN: r239775
2016-08-26mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name.Richard Biener2-4/+17
2016-08-26 Richard Biener <rguenther@suse.de> java/ * mangle.c (java_mangle_decl): Re-sync with lhd_set_decl_assembler_name. From-SVN: r239774
2016-08-26[ARM] PR target/70473: Reduce size of Cortex-A8 automatonKyrylo Tkachov2-5/+19
PR target/70473 * config/arm/cortex-a8-neon.md (cortex_a8_vfp_muld): Reduce reservation duration to 15 cycles. (cortex_a8_vfp_macs): Likewise. (cortex_a8_vfp_macd): Likewise. (cortex_a8_vfp_divs): Likewise. (cortex_a8_vfp_divd): Likewise. From-SVN: r239772
2016-08-26[ARM] Refactor MOVW/MOVT fusion logic to allow extensionKyrylo Tkachov2-39/+55
* config/arm/arm.c (arm_sets_movw_movt_fusible_p): New function. (aarch_macro_fusion_pair_p): Use above to avoid early return. From-SVN: r239771
2016-08-26Patch for performing interprocedural bitwise constant propagation.Prathamesh Kulkarni13-53/+825
2016-08-26 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> Martin Jambhor <mjambor@suse.cz> * common.opt: New option -fipa-bit-cp. * doc/invoke.texi: Document -fipa-bit-cp. * opts.c (default_options_table): Add entry for -fipa-bit-cp. (enable_fdo_optimizations): Check for flag_ipa_bit_cp. * tree-ssa-ccp.h: New header file. * tree-ssa-ccp.c: Include tree-ssa-ccp.h (bit_value_binop_1): Change to bit_value_binop_1 and export it. Replace all occurences of tree parameter by two new params: signop, int. (bit_value_unop_1): Change to bit_value_unop and export it. Replace all occurences of tree parameter by two new params: signop, int. (bit_value_binop): Change call from bit_value_binop_1 to bit_value_binop. (bit_value_assume_aligned): Likewise. (bit_value_unop): Change call from bit_value_unop_1 to bit_value_unop. (do_ssa_ccp): Pass nonzero_p || flag_ipa_cp_bit instead of nonzero_p to ccp_finalize. (ccp_finalize): Skip processing if val->mask == 0. * ipa-cp.c: Include tree-ssa-ccp.h (ipcp_bits_lattice): New class. (ipcp_param_lattice (bits_lattice): New member. (print_all_lattices): Call ipcp_bits_lattice::print. (set_all_contains_variable): Call ipcp_bits_lattice::set_to_bottom. (initialize_node_lattices): Likewise. (propagate_bits_accross_jump_function): New function. (propagate_constants_accross_call): Call propagate_bits_accross_jump_function. (ipcp_propagate_stage): Store parameter types when in_lto_p is true. (ipcp_store_bits_results): New function. (ipcp_driver): Call ipcp_store_bits_results. * ipa-prop.h (ipa_bits): New struct. (ipa_jump_func): Add new member bits of type ipa_bits. (ipa_param_descriptor): Change decl to decl_or_type. (ipa_get_param): Change decl to decl_or_type and assert on PARM_DECL. (ipa_get_type): New function. (ipcp_transformation_summary): New member bits. * ipa-prop.c (ipa_get_param_decl_index_1): s/decl/decl_or_type. (ipa_populate_param_decls): Likewise. (ipa_dump_param): Likewise. (ipa_print_node_jump_functions_for_edge): Pretty-print ipa_bits jump function. (ipa_set_jf_unknown): Set ipa_bits::known to false. (ipa_compute_jump_functions_for_edge): Compute jump function for bits propagation. (ipa_node_params_t::duplicate): Copy src->bits into dst->bits. (ipa_write_jump_function): Add streaming for ipa_bits. (ipa_read_jump_function): Add support for reading streamed ipa_bits. (write_ipcp_transformation_info): Add streaming for ipa_bits summary for ltrans. (read_ipcp_transfomration_info): Add support for reading streamed ipa_bits. (ipcp_update_bits): New function. (ipcp_transform_function): Call ipcp_update_bits. testsuite/ * gcc.dg/ipa/propbits-1.c: New test-case. * gcc.dg/ipa/propbits-2.c: Likewise. * gcc.dg/ipa/propbits-3.c: Likewise. Co-Authored-By: Martin Jambor <mjambor@suse.cz> From-SVN: r239769
2016-08-26Update .po files.Joseph Myers20-92079/+97151
* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po, ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po, zh_TW.po: Update. From-SVN: r239767
2016-08-26Daily bump.GCC Administrator1-1/+1
From-SVN: r239766
2016-08-25re PR fortran/77351 (ICE in remove_trim, at frontend-passes.c:1145)Steven G. Kargl4-0/+22
2016-08-25 Steven g. Kargl <kargl@gcc.gnu.org> PR fortran/77351 * frontend-passes.c (remove_trim,combine_array_constructor): Check for NULL pointer. 2016-08-25 Steven g. Kargl <kargl@gcc.gnu.org> PR fortran/77351 * gfortran.dg/pr77351.f90: New test. From-SVN: r239763
2016-08-25[mips] Add support for mips*r6-*-muslSzabolcs Nagy2-3/+11
gcc/ * config/mips/linux.h (MUSL_DYNAMIC_LINKER32): Update. (MUSL_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKERN32): Update. From-SVN: r239760
2016-08-25c-common.c (warn_logical_not_parentheses): Print fixit hints.Marek Polacek9-7/+60
* c-common.c (warn_logical_not_parentheses): Print fixit hints. * c-common.h (warn_logical_not_parentheses): Update declaration. * c-typeck.c (parser_build_binary_op): Pass LHS to warn_logical_not_parentheses. * parser.c (cp_parser_binary_expression): Pass LHS to warn_logical_not_parentheses. * c-c++-common/Wlogical-not-parentheses-2.c: New test. Co-Authored-By: David Malcolm <dmalcolm@redhat.com> From-SVN: r239756
2016-08-25* multiple_target.c (pass_data_dispatcher_calls): Fix typo.David Edelsohn2-1/+5
From-SVN: r239755
2016-08-25dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes): Only add ↵Richard Biener2-5/+11
locations in late dwarf. 2016-08-25 Richard Biener <rguenther@suse.de> * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes): Only add locations in late dwarf. (gen_scheduled_generic_parms_dies): Do not set early dwarf here. (dwarf2out_early_finish): But do it here. From-SVN: r239753
2016-08-25re PR c/77323 (Bad "defaults to 'int'" warning for unsupported types)Marek Polacek4-13/+41
PR c/77323 * c-decl.c (declspecs_add_type): Set typespec_word even when __intN or _FloatN or _FloatNx is not supported. (finish_declspecs): Set type to integer_type_node when _FloatN or _FloatNx is not supported. * gcc.dg/pr77323.c: New test. From-SVN: r239752
2016-08-25Daily bump.GCC Administrator1-1/+1
From-SVN: r239751
2016-08-24re PR fortran/77358 ([F08] deferred-length character function returns ↵Paul Thomas4-0/+45
zero-length string) 2016-08-24 Paul Thomas <pault@gcc.gnu.org> PR fortran/77358 * resolve.c (resolve_fl_procedure): Use the correct gfc_charlen for deferred character length module procedures. 2016-08-24 Paul Thomas <pault@gcc.gnu.org> PR fortran/77358 * gfortran.dg/submodule_17.f08: New test. From-SVN: r239740
2016-08-24arm-modes.def: Add new condition code mode CC_V to represent the overflow bit.Michael Collison14-0/+532
2016-08-24 Michael Collison <michael.collison@linaro.org> Michael Collison <michael.collison@arm.com> * config/arm/arm-modes.def: Add new condition code mode CC_V to represent the overflow bit. * config/arm/arm.c (maybe_get_arm_condition_code): Add support for CC_Vmode. (arm_gen_unlikely_cbranch): New function to generate common rtl conditional branches for overflow patterns. * config/arm/arm-protos.h: Add prototype for arm_gen_unlikely_cbranch. * config/arm/arm.md (addv<mode>4, add<mode>3_compareV, addsi3_compareV_upper): New patterns to support signed builtin overflow add operations. (uaddv<mode>4, add<mode>3_compareC, addsi3_compareV_upper): New patterns to support unsigned builtin add overflow operations. (subv<mode>4, sub<mode>3_compare1): New patterns to support signed builtin overflow subtract operations, (usubv<mode>4): New patterns to support unsigned builtin subtract overflow operations. (negvsi3, negvdi3, negdi2_compare, negsi2_carryin_compare): New patterns to support builtin overflow negate operations. * gcc.target/arm/builtin_saddl.c: New testcase. * gcc.target/arm/builtin_saddll.c: New testcase. * gcc.target/arm/builtin_uaddl.c: New testcase. * gcc.target/arm/builtin_uaddll.c: New testcase. * gcc.target/arm/builtin_ssubl.c: New testcase. * gcc.target/arm/builtin_ssubll.c: New testcase. * gcc.target/arm/builtin_usubl.c: New testcase. * gcc.target/arm/builtin_usubll.c: New testcase. Co-Authored-By: Michael Collison <michael.collison@arm.com> From-SVN: r239739
2016-08-24re PR target/77270 (Flag -mprftchw is shared with 3dnow for -march=k8)Uros Bizjak10-43/+33
PR target/77270 * gcc.dg/tree-ssa/loop-28.c: Also compile on 32bit x86 targets. (dg-options): Use -march=amdfam10 instead of -march=athlon. * gcc.dg/tree-ssa/update-unroll-1.c: Ditto. * gcc.dg/tree-ssa/prefetch-3.c: Ditto. * gcc.dg/tree-ssa/prefetch-4.c: Ditto. * gcc.dg/tree-ssa/prefetch-5.c: Ditto. * gcc.dg/tree-ssa/prefetch-6.c: Ditto. Do not require sse2 effective target. Remove scan-assembler-times directives. * gcc.dg/tree-ssa/prefetch-7.c: Ditto. * gcc.dg/tree-ssa/prefetch-8.c: Ditto. * gcc.dg/tree-ssa/prefetch-9.c: Ditto. From-SVN: r239737
2016-08-24Revert "Drop excess size used for run time allocated stack variables."Andreas Krebbel2-9/+12
This patch caused a bootstrap failure on AIX. 2016-08-24 Andreas Krebbel <krebbel@linux.vnet.ibm.com> Revert 2016-08-23 Dominik Vogt <vogt@linux.vnet.ibm.com> * explow.c (get_dynamic_stack_size): Take known alignment of stack pointer + STACK_DYNAMIC_OFFSET into account when calculating the size needed. From-SVN: r239735
2016-08-24fragments.texi (MULTILIB_REUSE): Mention that only options in ↵Thomas Preud'homme3-17/+33
MULTILIB_OPTIONS should be used. 2016-08-24 Thomas Preud'homme <thomas.preudhomme@arm.com> * doc/fragments.texi (MULTILIB_REUSE): Mention that only options in MULTILIB_OPTIONS should be used. Small wording fixes. * genmultilib: Memorize set of all option combinations in combination_space. Detect if RHS of MULTILIB_REUSE uses an option not found in MULTILIB_OPTIONS by checking if option set is listed in combination_space. Output new and existing error message to stderr. From-SVN: r239734
2016-08-24t-aprofile (MULTILIB_MATCHES): Add mapping for -mcpu=cortex-a7, ↵Thomas Preud'homme2-17/+13
-mfpu=neon-fp16, -mfpu=fpv5-d16 and -mfpu=fp-armv8. 2016-08-24 Thomas Preud'homme <thomas.preudhomme@arm.com> * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping for -mcpu=cortex-a7, -mfpu=neon-fp16, -mfpu=fpv5-d16 and -mfpu=fp-armv8. Fix typo in -mfpu=vfpv3-d16-fp16 mapping. (MULTILIB_REUSE): Remove reuse rules for option set including -mfpu=fp-armv8 and -mfpu=vfpv4 From-SVN: r239733
2016-08-24Fix bogus testsuite failures for avr.Senthil Kumar Selvaraj3-1/+10
gcc/testsuite/ 2016-08-24 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com> * gcc.c-torture/execute/pr71083.c: Use UINT32_TYPE instead of unsigned int. * gcc.dg/zero_sign_ext_test.c: Require int32plus. From-SVN: r239732
2016-08-24re PR testsuite/77317 (x86_64 --target_board=''unix/ unix/-m32'' parallel ↵Robert Suchanek2-71/+39
testrun gives inconsistent results in gcc.dg/vect) Fix PR testsuite/77317 gcc/testsuite/ * lib/target-supports.exp (check_effective_target_vect_aligned_arrays): Don't cache the result. (check_effective_target_vect_natural_alignment): Ditto. (check_effective_target_vector_alignment_reachable): Ditto. (check_effective_target_vector_alignment_reachable_for_64bit): Ditto. From-SVN: r239730
2016-08-24[RTEMS] Add vfp multilib for ARMSebastian Huber2-2/+7
gcc/ * config/arm/t-rtems: Add vfp multilib. From-SVN: r239727
2016-08-24Daily bump.GCC Administrator1-1/+1
From-SVN: r239726
2016-08-23s390.c (s390_asm_file_start): Call default_file_start.Ian Lance Taylor4-1/+11
gcc/: * config/s390/s390.c (s390_asm_file_start): Call default_file_start. gcc/testsuite/: * gcc.target/s390/nolrl-1.c: Don't match the file name. From-SVN: r239713
2016-08-23rs6000.c (rs6000_expand_vector_init): Set initialization of all 0's to the 0 ↵Michael Meissner8-52/+365
constant, instead of directly generating XOR. [gcc] 2016-08-23 Michael Meissner <meissner@linux.vnet.ibm.com> * config/rs6000/rs6000.c (rs6000_expand_vector_init): Set initialization of all 0's to the 0 constant, instead of directly generating XOR. Add support for V4SImode vector initialization on 64-bit systems with direct move, and rework the ISA 3.0 V4SImode initialization. Change variables used in V4SFmode vector intialization. For V4SFmode vector splat on ISA 3.0, make sure any memory addresses are in index form. Add support for using VSPLTH/VSPLTB to initialize vector short and vector char vectors with all of the same element. (regno_or_subregno): New helper function to return a register number for either REG or SUBREG. (rs6000_adjust_vec_address): Do not generate ADDI <reg>,R0,<num>. Use regno_or_subregno where possible. (rs6000_split_v4si_init_di_reg): New helper function to build up a DImode value from two SImode values in order to generate V4SImode vector initialization on 64-bit systems with direct move. (rs6000_split_v4si_init): Split up the insns for a V4SImode vector initialization. (rtx_is_swappable_p): V4SImode vector initialization insn is not swappable. * config/rs6000/rs6000-protos.h (rs6000_split_v4si_init): Add declaration. * config/rs6000/vsx.md (VSX_SPLAT_I): New mode iterators and attributes to initialize V8HImode and V16QImode vectors with the same element. (VSX_SPLAT_COUNT): Likewise. (VSX_SPLAT_SUFFIX): Likewise. (UNSPEC_VSX_VEC_INIT): New unspec. (vsx_concat_v2sf): Eliminate using 'preferred' register classes. Allow SFmode values to come from Altivec registers. (vsx_init_v4si): New insn/split for V4SImode vector initialization on 64-bit systems with direct move. (vsx_splat_<mode>, VSX_W iterator): Rework V4SImode and V4SFmode vector initializations, to allow V4SImode vector initializations on 64-bit systems with direct move. (vsx_splat_v4si): Likewise. (vsx_splat_v4si_di): Likewise. (vsx_splat_v4sf): Likewise. (vsx_splat_v4sf_internal): Likewise. (vsx_xxspltw_<mode>, VSX_W iterator): Eliminate using 'preferred' register classes. (vsx_xxspltw_<mode>_direct, VSX_W iterator): Likewise. (vsx_vsplt<VSX_SPLAT_SUFFIX>_di): New insns to support initializing V8HImode and V16QImode vectors with the same element. * config/rs6000/rs6000.h (TARGET_DIRECT_MOVE_64BIT): Disallow optimization if -maltivec=be. [gcc/testsuite] 2016-08-23 Michael Meissner <meissner@linux.vnet.ibm.com> * gcc.target/powerpc/vec-init-1.c: Add tests where the vector is being created from pointers to memory locations. * gcc.target/powerpc/vec-init-2.c: Likewise. From-SVN: r239712
2016-08-23[ARM] Fix predicable_short_it attribute for arm_movqi_insnChristophe Lyon2-1/+6
2016-08-23 Christophe Lyon <christophe.lyon@linaro.org> * config/arm/arm.md (arm_movqi_insn): Swap predicable_short_it attribute for alternatives 3 and 4. From-SVN: r239710
2016-08-23decl.c (gfc_match_structure_decl): Make gfc_structure_id static.Fritz Reese4-1/+36
2016-08-23 Fritz Reese <fritzoreese@gmail.com> gcc/fortran/ * decl.c (gfc_match_structure_decl): Make gfc_structure_id static. gcc/testsuite/gfortran.dg/ * dec_structure_12.f90: New testcase. From-SVN: r239709
2016-08-23compiler: revamp scheme for ordering calls to import init fcns.Ian Lance Taylor7-160/+538
Switch to a new method for determining the order in which import init functions are invoked: build an init fcn dependence DAG and walk the DAG to rewrite/adjust priorities to account for discrepancies introduced by "go test". This patch includes a change to the export data format generated by gccgo. Older versions of gccgo will not be able to read object files produced by a newer gccgo, but the new gcc will still be able to read old object files. Fixes golang/go#15738. Reviewed-on: https://go-review.googlesource.com/25301 From-SVN: r239708
2016-08-23selftest.h: add ASSERT_STR_CONTAINSDavid Malcolm3-0/+60
gcc/ChangeLog: * selftest.c (selftest::assert_str_contains): New function. (selftest::test_assertions): Verify ASSERT_STR_CONTAINS. * selftest.h (selftest::assert_str_contains): New decl. (ASSERT_STR_CONTAINS): New macro. From-SVN: r239707
2016-08-23interface.c (compare_components): Fix typo in name check conditional.Fritz Reese2-1/+5
2016-08-23 Fritz Reese <fritzoreese@gmail.com> gcc/fortran/ * interface.c (compare_components): Fix typo in name check conditional. From-SVN: r239706
2016-08-23re PR tree-optimization/77286 (ICE in fold_convert_loc, at fold-const.c:2248 ↵Richard Biener2-16/+41
building 435.gromacs) 2016-08-23 Richard Biener <rguenther@suse.de> PR tree-optimization/77286 * tree-vect-loop.c (vect_analyze_loop_form_1): Do not modify the CFG here. (vect_transform_loop): Split exit edges of loop and scalar loop if required and at the appropriate time. From-SVN: r239700
2016-08-23Drop excess size used for run time allocated stack variables.Dominik Vogt2-4/+17
* get_dynamic_stack_size is passed a SIZE of a data block (which is allocated elsewhere), the SIZE_ALIGN of the SIZE (i.e. the alignment of the underlying memory units (e.g. 32 bytes split into 4 times 8 bytes = 64 bit alignment) and the REQUIRED_ALIGN of the data portion of the allocated memory. * Assuming the function is called with SIZE = 2, SIZE_ALIGN = 8 and REQUIRED_ALIGN = 64 it first adds 7 bytes to SIZE -> 9. This is what is needed to have two bytes 8-byte-aligned at some memory location without any known alignment. * Finally round_push is called to round up SIZE to a multiple of the stack slot size. The key to understanding this is that the function assumes that STACK_DYNMAIC_OFFSET is completely unknown at the time its called and therefore it does not make assumptions about the alignment of STACKPOINTER + STACK_DYNMAIC_OFFSET. The latest patch simply hard-codes that SP + SDO is supposed to be aligned to at least stack slot size (and does that in a very complicated way). Since there is no guarantee that this is the case on all targets, the patch is broken. It may miscalculate a SIZE that is too small in some cases. However, on many targets there is some guarantee about the alignment of SP + SDO even if the actual value of SDO is unknown. On s390x it's always 8-byte-aligned (stack slot size). So the right fix should be to add knowledge about the target's guaranteed alignment of SP + SDO to the function. I'm right now testing a much simpler patch that uses REGNO_POINTER_ALIGN(VIRTUAL_STACK_DYNAMIC_REGNUM) as the alignment. gcc/ChangeLog: 2016-08-23 Dominik Vogt <vogt@linux.vnet.ibm.com> * explow.c (get_dynamic_stack_size): Take known alignment of stack pointer + STACK_DYNAMIC_OFFSET into account when calculating the size needed. Correct a typo in a comment. From-SVN: r239688
2016-08-23S/390: Fix insv-1.c test with -m31.Dominik Vogt2-4/+8
gcc/testsuite/ChangeLog: 2016-08-23 Dominik Vogt <vogt@linux.vnet.ibm.com> * gcc.target/s390/insv-1.c: Fix test when running with -m31. From-SVN: r239687
2016-08-23S/390: Improve result verification in test case vec-genmask-1.c.Dominik Vogt2-6/+19
THe attached patch improves checking of teh results of the subtests "a" and "f". As they share the same "vone" instruction, the duplicate scan-assembler-times was bogus. Moved "f" to a separate function to fix this. Also double check that no extra "vgmf" instructions are used. gcc/testsuite/ChangeLog: 2016-08-23 Dominik Vogt <vogt@linux.vnet.ibm.com> * gcc.target/s390/zvector/vec-genmask-1.c: Improve result verification. From-SVN: r239686
2016-08-23S/390: Add splitter for "and" with complement.Dominik Vogt5-0/+159
Split ~b & a to (b & a) ^ a. This is benefitial on z Systems since we otherwise need a big -1 constant to be loaded for the ~b. gcc/ChangeLog: 2016-08-23 Dominik Vogt <vogt@linux.vnet.ibm.com> * config/s390/s390.md ("*andc_split"): New splitter for and with complement. gcc/testsuite/ChangeLog: 2016-08-23 Dominik Vogt <vogt@linux.vnet.ibm.com> * gcc.target/s390/md/andc-splitter-1.c: New test case. * gcc.target/s390/md/andc-splitter-2.c: Likewise. From-SVN: r239685
2016-08-23re PR middle-end/27336 (delete null checks in callers to nonnull functions)Richard Biener4-8/+27
2016-08-23 Richard Biener <rguenther@suse.de> PR tree-optimization/27336 * tree-vrp.c (infer_value_range): Handle stmts that can throw by looking for a non-EH edge. (process_assert_insertions_for): Likewise. * c-c++-common/pr27336.c: New testcase. From-SVN: r239684
2016-08-23re PR lto/77305 (-fdump-tree-all and -flto causes ICE)Richard Biener2-3/+10
2016-08-23 Richard Biener <rguenther@suse.de> PR middle-end/77305 * statistics.c (statistics_counter_event): Robustify against NULL current_pass. From-SVN: r239683
2016-08-232016-08-23 Venkataramanan KumarVenkataramanan Kumar2-2/+7
* config/i386/i386.c (processor_alias_table): Enable PTA_PRFCHW for targets amdfam10 and barcelona. From-SVN: r239682
2016-08-23Daily bump.GCC Administrator1-1/+1
From-SVN: r239680
2016-08-22re PR c++/77321 (crash in warn_for_memset)Marek Polacek4-1/+35
PR c++/77321 * c-common.c (warn_for_memset): Check type for null. * g++.dg/cpp1y/pr77321.C: New test. From-SVN: r239676
2016-08-22compiler: don't permit P.M if P is a pointer typeIan Lance Taylor2-3/+5
When lowering method expressions of the form "P.M" where P is a pointer type (e.g. "type P *T") make sure we examine the method set of P and not T during method lookup. Fixes golang/go#15722. Reviewed-on: https://go-review.googlesource.com/24843 From-SVN: r239675