1. 01 Sep, 2016 20 commits
    • rs6000: Rename 110 -> VSCR_REGNO · 3b2475ab
      	* config/rs6000/altivec.md: Use VSCR_REGNO instead of 110 throughout.
      
      From-SVN: r239948
      Segher Boessenkool committed
    • rs6000: Rename 109 -> VRSAVE_REGNO · 95bde43a
      	* config/rs6000/altivec.md: Use VRSAVE_REGNO instead of 109 throughout.
      
      From-SVN: r239947
      Segher Boessenkool committed
    • rs6000: Rename 74 -> CR6_REGNO · b65261f6
      	* config/rs6000/altivec.md: Use CR6_REGNO instead of 74 throughout.
      	* config/rs6000/vector.md: Ditto.
      	* config/rs6000/vsx.md: Ditto.
      
      From-SVN: r239946
      Segher Boessenkool committed
    • re PR libfortran/77393 (Revision r237735 changed the behavior of F0.0) · 7e89048d
      2016-09-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/77393
      	* gfortran.dg/fmt_f0_2.f90: Update tests for available kinds.
      
      From-SVN: r239945
      Jerry DeLisle committed
    • float128-builtin.c, [...]: Use dg-add-options ieee. · 2f196155
      	* gcc.dg/torture/float128-builtin.c, gcc.dg/torture/float128-floath.c,
      	gcc.dg/torture/float128-ieee-nan.c, gcc.dg/torture/float128-tg-2.c,
      	gcc.dg/torture/float128-tg.c, gcc.dg/torture/float128x-builtin.c,
      	gcc.dg/torture/float128x-floath.c, gcc.dg/torture/float128x-nan.c,
      	gcc.dg/torture/float128x-tg-2.c, gcc.dg/torture/float128x-tg.c,
      	gcc.dg/torture/float16-builtin.c, gcc.dg/torture/float16-floath.c,
      	gcc.dg/torture/float16-nan.c, gcc.dg/torture/float16-tg-2.c,
      	gcc.dg/torture/float16-tg.c, gcc.dg/torture/float32-builtin.c,
      	gcc.dg/torture/float32-floath.c, gcc.dg/torture/float32-nan.c,
      	gcc.dg/torture/float32-tg-2.c, gcc.dg/torture/float32-tg.c,
      	gcc.dg/torture/float32x-builtin.c, gcc.dg/torture/float32x-floath.c,
      	gcc.dg/torture/float32x-nan.c, gcc.dg/torture/float32x-tg-2.c,
      	gcc.dg/torture/float32x-tg.c, gcc.dg/torture/float64-builtin.c,
      	gcc.dg/torture/float64-floath.c, gcc.dg/torture/float64-nan.c,
      	gcc.dg/torture/float64-tg-2.c, gcc.dg/torture/float64-tg.c,
      	gcc.dg/torture/float64x-builtin.c, gcc.dg/torture/float64x-floath.c,
      	gcc.dg/torture/float64x-nan.c, gcc.dg/torture/float64x-tg-2.c,
      	gcc.dg/torture/float64x-tg.c: Use dg-add-options ieee.
      
      From-SVN: r239944
      Uros Bizjak committed
    • ipa-inline-analysis.c (param_change_prob): Get to the base object first in all cases. · 0a6b0523
      	* ipa-inline-analysis.c (param_change_prob): Get to the base object
      	first in all cases.
      
      From-SVN: r239943
      Eric Botcazou committed
    • rs6000: Use LR_REGNO directly in the save/restore patterns · d87a85c6
      Various patterns use "register_operand" "l" (or "=l") although those
      patterns are only created refering to LR_REGNO directly.  This patch
      changes those patterns to use the hard regs as well.
      
      
      	* config/rs6000/rs6000.md (*restore_gpregs_<mode>_r11,
      	*restore_gpregs_<mode>_r12, *restore_gpregs_<mode>_r1,
      	*return_and_restore_gpregs_<mode>_r11,
      	*return_and_restore_gpregs_<mode>_r12,
      	*return_and_restore_gpregs_<mode>_r1,
      	*return_and_restore_fpregs_<mode>_r11,
      	*return_and_restore_fpregs_<mode>_r12,
      	*return_and_restore_fpregs_<mode>_r1): Use the hard register LR_REGNO
      	directly instead of via the "l" constraint.  Renumber operands.
      	Fix whitespace.
      
      From-SVN: r239942
      Segher Boessenkool committed
    • rs6000: Use LR_REGNO instead of constant 65 · 893fc0a0
      Many places still use 65 instead of the symbolic constant LR_REGNO.  This
      fixes them all (I looked for the string "65" only, in config/rs6000/ only,
      I didn't read all code :-) )
      
      I left it in *restore_world because Iain will remove it there soon.
      
      
      	* config/rs6000/altivec.md (*save_world, *save_vregs_<mode>_r11,
      	save_vregs_<mode>_r12, *restore_vregs_<mode>_r11,
      	*restore_vregs_<mode>_r12): Use LR_REGNO instead of 65.
      	* config/rs6000/darwin.md (load_macho_picbase, load_macho_picbase_si,
      	load_macho_picbase_di, *call_indirect_nonlocal_darwin64,
      	*call_nonlocal_darwin64, *call_value_indirect_nonlocal_darwin64,
      	*call_value_nonlocal_darwin64, reload_macho_picbase,
      	reload_macho_picbase_si, reload_macho_picbase_di): Ditto.
      	* config/rs6000/rs6000.h (RETURN_ADDR_IN_PREVIOUS_FRAME): Ditto.
      	* config/rs6000/rs6000.md (*save_gpregs_<mode>_r11,
      	*save_gpregs_<mode>_r12, *save_gpregs_<mode>_r1,
      	*save_fpregs_<mode>_r11, *save_fpregs_<mode>_r12,
      	*save_fpregs_<mode>_r1): Ditto.
      	* config/rs6000/spe.md (*save_gpregs_spe, *restore_gpregs_spe,
      	*return_and_restore_gpregs_spe): Ditto.
      
      From-SVN: r239941
      Segher Boessenkool committed
    • rs6000: Fix for AIX, for r239866 · a345b5b0
      This should fix r239866 for AIX.  I missed two patterns that refer to LR
      as "register_operand" "l" instead of as reg:P LR_REGNO.
      
      
      	* config/rs6000/rs6000.md
      	(define_insn "*return_and_restore_fpregs_aix_<mode>_r11"): Delete
      	the use of the link register.
      	(define_insn "*return_and_restore_fpregs_aix_<mode>_r1"): Ditto.
      
      From-SVN: r239940
      Segher Boessenkool committed
    • re PR c/7652 (-Wswitch-break : Warn if a switch case falls through) · 295844f6
      	PR c/7652
      gcc/c-family/
      	* c-common.c (resolve_overloaded_builtin): Fix formatting.  Add
      	FALLTHRU comments.
      gcc/c/
      	* c-typeck.c (composite_type): Add FALLTHRU comment.
      gcc/gcc/cp/
      	* error.c (dump_type): Fix falls through comment.
      	(dump_decl): Likewise.
      	(dump_expr): Likewise.
      
      From-SVN: r239939
      Marek Polacek committed
    • re PR target/72827 (gnat bootstrap broken on powerpc64le-linux-gnu) · 1ca94f36
      2016-09-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      	    Michael Meissner <meissner@linux.vnet.ibm.com>
      
      	PR target/72827
      	* config/rs6000/rs6000.c (rs6000_legitimize_address): Avoid
      	reg+reg addressing for TImode.
      	(rs6000_legitimate_address_p): Only allow register indirect
      	addressing for TImode, even without TARGET_QUAD_MEMORY.
      
      
      Co-Authored-By: Michael Meissner <meissner@linux.vnet.ibm.com>
      
      From-SVN: r239938
      Bill Schmidt committed
    • re PR middle-end/77436 (Incorrect constant result for summing loop inserted) · 2a99de7b
      2016-09-01  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/77436
      	* tree-chrec.c (tree_fold_binomial): Use widest_int, properly
      	check whether the result fits the desired result type.
      
      	* gcc.dg/torture/pr77436.c: New testcase.
      
      From-SVN: r239937
      Richard Biener committed
    • This patch adds legitimize_address_displacement hook so that stack accesses... · 491ec060
      This patch adds legitimize_address_displacement hook so that stack accesses
      with large offsets are split into a more efficient sequence.  Unaligned and
      TI/TFmode use a 256-byte range, byte and halfword accesses use a 4KB range,
      wider accesses use a 16KB range to maximise the available addressing range
      and increase opportunities to share the base address.
      
      int f(int x)
      {
        int arr[8192];
        arr[4096] = 0;
        arr[6000] = 0;
        arr[7000] = 0;
        arr[8191] = 0;
        return arr[x];
      }
      
      Now generates:
      
        sub   sp, sp, #32768
        add   x1, sp, 16384
        str   wzr, [x1]
        str   wzr, [x1, 7616]
        str   wzr, [x1, 11616]
        str   wzr, [x1, 16380]
        ldr   w0, [sp, w0, sxtw 2]
        add   sp, sp, 32768
        ret
      
          gcc/
      	* config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
      	New function.
      	(TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT): Define.
      
      From-SVN: r239923
      Wilco Dijkstra committed
    • Fix more bogus testsuite failures for avr. · f79d8786
      gcc/testsuite/
      
      2016-09-01  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
      
              * gcc.dg/pr64252.c: Require int32plus.
              * gcc.dg/pr66299-1.c: Likewise.
              * gcc.dg/pr66299-2.c: Likewise.
              * gcc.dg/torture/20131115-1.c: Skip for avr.
      
      From-SVN: r239921
      Senthil Kumar Selvaraj committed
    • [AArch64] Add ANDS pattern for CMP+ZERO_EXTEND · b06335f9
      	* config/aarch64/aarch64.md (*ands<mode>_compare0): New pattern.
      	* config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_NZmode
      	for comparisons of integer ZERO_EXTEND against zero.
      
      	* gcc.target/aarch64/ands_3.c: New test.
      
      From-SVN: r239919
      Kyrylo Tkachov committed
    • i386.c (ix86_option_override_internal): Also disable the STV pass if -mstackrealign is enabled. · 3409207a
      	* config/i386/i386.c (ix86_option_override_internal): Also disable the
      	STV pass if -mstackrealign is enabled.
      
      From-SVN: r239916
      Eric Botcazou committed
    • PR c++/57728 - adjust testcase · e5b9932b
      	* g++.dg/cpp0x/explicit12.C: Add -save-temps.
      
      From-SVN: r239913
      Jason Merrill committed
    • C: Fix missing spaces in 'struct' fix-it hints · 089af25c
      In r237714 I added fix-it hints to the C frontend for missing "struct"
      keywords e.g.:
      
      spellcheck-typenames.c:69:1: error: unknown type name ‘foo_t’; use
      ‘struct’ keyword to refer to the type
       foo_t *foo_ptr;
       ^~~~~
       struct 
      
      However when using the (not yet in trunk) option
       -fdiagnostics-generate-patch,
      the generated patch is nonsensical:
      
        -foo_t *foo_ptr;
        +structfoo_t *foo_ptr;
      
      Fix the fix-its by adding a trailing space to each one, giving:
      
        -foo_t *foo_ptr;
        +struct foo_t *foo_ptr;
      
      gcc/c/ChangeLog:
      	* c-parser.c (c_parser_declaration_or_fndef): Add trailing space
      	to the insertion fixits for "struct", "union", and "enum".
      
      From-SVN: r239912
      David Malcolm committed
    • Daily bump. · 76e6cb83
      From-SVN: r239911
      GCC Administrator committed
  2. 31 Aug, 2016 19 commits
    • Fix detection of AVX512IFMA in host_detect_local_cpu · 21272090
      gcc/
      	* config/i386/driver-i386.c (host_detect_local_cpu): Fix detection of
      	AVX512IFMA.
      
      From-SVN: r239908
      Ilya Verbin committed
    • diagnostic-show-locus.c: handle fixits on lines outside the regular ranges · 3d4f9f87
      The diagnostic_show_locus implementation determines the set
      of line spans that need printing based on the ranges within the
      rich_location (in layout::calculate_line_spans).
      
      Currently this doesn't take into account fix-it hints, and hence
      we fail to print fix-it hints that are on lines outside of
      those ranges.
      
      This patch updates the implementation to take fix-it hints into
      account when calculating the pertinent line spans, so that such fix-it
      hints do get printed.  It also adds some validation, to ensure that
      we don't attempt to print fix-its hints affecting a different source
      file.
      
      gcc/ChangeLog:
      	* diagnostic-show-locus.c (class layout): Add field m_fixit_hints.
      	(layout_range::intersects_line_p): New method.
      	(test_range_contains_point_for_single_point): Rename to...
      	(test_layout_range_for_single_point): ...this, and add testing
      	for layout_range::intersects_line_p.
      	(test_range_contains_point_for_single_line): Rename to...
      	(test_layout_range_for_single_line): ...this,  and add testing
      	for layout_range::intersects_line_p.
      	(test_range_contains_point_for_multiple_lines): Rename to...
      	(test_layout_range_for_multiple_lines): ...this,  and add testing
      	for layout_range::intersects_line_p.
      	(layout::layout): Populate m_fixit_hints.
      	(layout::get_expanded_location): Handle the case of a line-span
      	for a fix-it hint.
      	(layout::validate_fixit_hint_p): New method.
      	(get_line_span_for_fixit_hint): New function.
      	(layout::calculate_line_spans): Add spans for fixit-hints.
      	(layout::should_print_annotation_line_p): New method.
      	(layout::print_any_fixits): Drop param "richloc", instead using
      	validated fixits in m_fixit_hints.  Add "const" to hint pointers.
      	(diagnostic_show_locus): Avoid printing blank annotation lines.
      	(selftest::test_diagnostic_context::test_diagnostic_context):
      	Initialize show_column and start_span.
      	(selftest::test_diagnostic_context::start_span_cb): New static
      	function.
      	(selftest::test_diagnostic_show_locus_fixit_lines): New function.
      	(selftest::diagnostic_show_locus_c_tests): Update for function
      	renamings.  Call test_diagnostic_show_locus_fixit_lines.
      
      libcpp/ChangeLog:
      	* include/line-map.h (class fixit_remove): Remove stray decl.
      	(fixit_hint::affects_line_p): Make const.
      	(fixit_insert::affects_line_p): Likewise.
      	(fixit_replace::affects_line_p): Likewise.
      	* line-map.c (fixit_insert::affects_line_p): Likewise.
      	(fixit_replace::affects_line_p): Likewise.
      
      From-SVN: r239906
      David Malcolm committed
    • re PR tree-optimization/77352 (ICE: verify_ssa failed) · d12a0b5a
      	PR fortran/77352
      	* trans-openmp.c (gfc_trans_omp_parallel_workshare): Always add a
      	BIND_EXPR with BLOCK around what gfc_trans_omp_workshare returns.
      
      	* gfortran.dg/gomp/pr77352.f90: New test.
      
      From-SVN: r239904
      Jakub Jelinek committed
    • re PR fortran/77374 (ICE in resolve_omp_atomic, at fortran/openmp.c:3949) · f25f40be
      	PR fortran/77374
      	* parse.c (parse_omp_oacc_atomic): Copy over cp->ext.omp_atomic
      	to cp->block->ext.omp_atomic.
      	* resolve.c (gfc_resolve_blocks): Assert block with one or two
      	EXEC_ASSIGNs for EXEC_*_ATOMIC.
      	* openmp.c (resolve_omp_atomic): Don't assert one or two
      	EXEC_ASSIGNs, instead return quietly for EXEC_NOPs and otherwise
      	error unexpected statements.
      
      	* gfortran.dg/gomp/pr77374.f08: New test.
      
      From-SVN: r239903
      Jakub Jelinek committed
    • match.pd: Revert a * (1 << b) relaxation. · 9ff6fb6e
      2016-08-31  Marc Glisse  <marc.glisse@inria.fr>
      
      	PR tree-optimization/73714
      gcc/
      	* match.pd (a * (1 << b)): Revert change from 2016-05-23.
      gcc/testsuite/
      	* gcc.dg/tree-ssa/pr73714.c: New test.
      
      From-SVN: r239902
      Marc Glisse committed
    • re PR libfortran/77393 (Revision r237735 changed the behavior of F0.0) · 8e95a674
      2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/77393
      	* gfortran.dg/fmt_f0_2.f90: New test.
      
      From-SVN: r239901
      Jerry DeLisle committed
    • re PR libfortran/77393 (Revision r237735 changed the behavior of F0.0) · d7756960
      2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR libgfortran/77393
      	* io/write.c (kind_from_size): New function to calculate required buffer
      	size based on kind type. (select_buffer, select_string): Use new
      	function. (write_float_0, write_real, write_real_g0, write_complex):
      	Adjust calls to pass parameters needed by new function.
      
      From-SVN: r239900
      Jerry DeLisle committed
    • Constrain std::shared_ptr assignment and resetting · 7663cae2
      	* include/bits/shared_ptr.h (_Assignable): New alias template.
      	(shared_ptr::operator=(const shared_ptr<_Tp1>&))
      	(shared_ptr::operator=(shared_ptr<_Tp1>&&))
      	(shared_ptr::operator=(unique_ptr<_Tp1>&&)): Constrain with
      	_Assignable.
      	* include/bits/shared_ptr_base.h (_Assignable): New alias template.
      	(__shared_ptr::operator=(const __shared_ptr<_Tp1>&))
      	(__shared_ptr::operator=(__shared_ptr<_Tp1>&&))
      	(__shared_ptr::operator=(unique_ptr<_Tp1>&&)): Constrain with
      	_Assignable.
      	(__shared_ptr::reset(_Tp1*), __shared_ptr::reset(_Tp1*, _Deleter))
      	(__shared_ptr::reset(_Tp1*, _Deleter, _Alloc)): Constrain with
      	_Convertible.
      	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Change dg-error to
      	match on any line.
      	* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
      	* testsuite/20_util/shared_ptr/assign/sfinae.cc: New test.
      	* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc: Update
      	expected errors. Remove unnecessary code.
      	* testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc: New test.
      
      From-SVN: r239898
      Jonathan Wakely committed
    • Move comparison object in map/set move assignment · e46d22a8
      	* include/bits/stl_tree.h (_Rb_tree::operator=(_Rb_tree&&)): Move
      	comparison object.
      	* testsuite/23_containers/set/move_comparison.cc: New test.
      
      From-SVN: r239897
      Jonathan Wakely committed
    • Add test accidentally not added in revision r239121 · 3625264f
      	* testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
      	New test.
      
      From-SVN: r239896
      Jonathan Wakely committed
    • runtime: make gsignal stack at least SIGSTKSZ bytes · fc4eaccf
          
          The default stack size for the gsignal goroutine, 32K, is not enough on
          ia64.  Make sure that the stack size is at least SIGSTKSZ.
          
          Reviewed-on: https://go-review.googlesource.com/28224
      
      From-SVN: r239894
      Ian Lance Taylor committed
    • selftest.c: avoid explicit "selftest::" qualifiers · 96f14006
      gcc/ChangeLog:
      	* selftest.c: Move "namespace selftest {" to top of file,
      	removing explicit "selftest::" qualifiers throughout.
      
      From-SVN: r239892
      David Malcolm committed
    • [x86] Don't use builtins for unaligned load/store · c6b0037d
      2016-08-31  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/
      	* config/i386/avx512fintrin.h (__m512_u, __m512i_u, __m512d_u):
      	New types.
      	(_mm512_loadu_pd, _mm512_storeu_pd, _mm512_loadu_ps,
      	_mm512_storeu_ps, _mm512_loadu_si512, _mm512_storeu_si512):
      	Replace builtin with vector extension.
      	* config/i386/avxintrin.h (__m256_u, __m256i_u, __m256d_u):
      	New types.
      	(_mm256_loadu_pd, _mm256_storeu_pd, _mm256_loadu_ps,
      	_mm256_storeu_ps, _mm256_loadu_si256, _mm256_storeu_si256):
      	Replace builtin with vector extension.
      	* config/i386/emmintrin.h (__m128i_u, __m128d_u): New types.
      	(_mm_loadu_pd, _mm_storeu_pd, _mm_loadu_si128, _mm_storeu_si128):
      	Replace builtin with vector extension.
      	* config/i386/xmmintrin.h (__m128_u): New type.
      	(_mm_loadu_ps, _mm_storeu_ps): Replace builtin with vector extension.
      	(_mm_load_ps, _mm_store_ps): Simplify.
      
      gcc/testsuite/
      	* gcc.target/i386/pr59539-2.c: Adapt options.
      	* gcc.target/i386/avx512f-vmovdqu32-1.c: Relax expected asm.
      
      From-SVN: r239889
      Marc Glisse committed
    • re PR testsuite/77418 (SELECT TYPE associating entity can be (de)allocated) · 1a576b13
      2016-08-31  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/77418
      	* gfortran.dg/dtio_5.f90: Remove the non-standard deallocation
      	of the associate entity and replace with a pointer to the
      	intended item on the stack.
      
      From-SVN: r239881
      Paul Thomas committed
    • [multiple changes] · e73d3ca6
      2016-08-31  Paul Thomas  <pault@gcc.gnu.org>
      	Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      
      	PR fortran/48298
      
      	* decl.c (access_attr_decl): Include case INTERFACE_DTIO as
      	appropriate.
      	* gfortran.h : Add INTRINSIC_FORMATTED and
      	INTRINSIC_UNFORMATTED to gfc_intrinsic_op. Add INTERFACE_DTIO
      	to interface type. Add new enum 'dtio_codes'. Add bitfield
      	'has_dtio_procs' to symbol_attr. Add prototypes
      	'gfc_check_dtio_interfaces' and 'gfc_find_specific_dtio_proc'.
      	* interface.c (dtio_op): New function.
      	(gfc_match_generic_spec): Match generic DTIO interfaces.
      	(gfc_match_interface): Treat DTIO interfaces in the same way as
      	(gfc_current_interface_head): Add INTERFACE_DTIO appropriately.
      	(check_dtio_arg_TKR_intent): New function.
      	(check_dtio_interface1): New function.
      	(gfc_check_dtio_interfaces): New function.
      	(gfc_find_specific_dtio_proc): New function.
      	* io.c : Add FMT_DT to format_token.
      	(format_lex): Handle DTIO formatting.
      	* match.c (gfc_op2string): Add DTIO operators.
      	* resolve.c (derived_inaccessible): Ignore pointer components
      	to enclosing derived type.
      	(resolve_transfer): Resolve transfers that involve DTIO.
      	procedures. Find the specific subroutine for the transfer and
      	use its existence to over-ride some of the constraints on
      	derived types. If the transfer is recursive, require that the
      	subroutine be so qualified.
      	(dtio_procs_present): New function.
      	(resolve_fl_namelist): Remove inhibition of polymorphic objects
      	in namelists if DTIO read and write subroutines exist. Likewise
      	for derived types.
      	(resolve_types): Invoke 'gfc_verify_dtio_procedures'.
      	* symbol.c : Set 'dtio_procs' using 'minit'.
      	* trans-decl.c (gfc_finish_var_decl): If a derived-type/class
      	object is associated with DTIO procedures, make it TREE_STATIC.
      	* trans-expr.c (gfc_get_vptr_from_expr): If the expression
      	drills down to a PARM_DECL, extract the vptr correctly.
      	(gfc_conv_derived_to_class): Check 'info' in the test for
      	'useflags'. If the se expression exists and is a pointer, use
      	it as the class _data.
      	* trans-io.c : Add IOCALL_X_DERIVED to iocall and the function
      	prototype. Likewise for IOCALL_SET_NML_DTIO_VAL.
      	(set_parameter_tree): Renamed from 'set_parameter_const', now
      	returns void and has new tree argument. Calls modified to match
      	new interface.
      	(transfer_namelist_element): Transfer DTIO procedure pointer
      	and vpointer using the new function IOCALL_SET_NML_DTIO_VAL.
      	(get_dtio_proc): New function.
      	(transfer_expr): Add new argument for the vptr field of class
      	objects. Add the code to call the specific DTIO proc, convert
      	derived types to class and call IOCALL_X_DERIVED.
      	(trans_transfer): Add BT_CLASS to structures for treatment by
      	the scalarizer. Obtain the vptr for the dynamic type, both for
      	scalar and array transfer.
      
      2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      	Paul Thomas  <pault@gcc.gnu.org>
      
      	PR libgfortran/48298
      	* gfortran.map : Flag _st_set_nml_dtio_var and
      	_gfortran_transfer_derived.
      	* io/format.c (format_lex): Detect DTIO formatting.
      	(parse_format_list): Parse the DTIO format.
      	(next_format): Include FMT_DT.
      	* io/format.h : Likewise. Add structure 'udf' to structure
      	'fnode' to carry the IOTYPE string and the 'vlist'.
      	* io/io.h : Add prototypes for the two types of DTIO subroutine
      	and a typedef for gfc_class. Also, add to 'namelist_type'
      	fields for the pointer to the DTIO procedure and the vtable.
      	Add fields to struct st_parameter_dt for pointers to the two
      	types of DTIO subroutine. Add to gfc_unit DTIO specific fields.
      	(internal_proto): Add prototype for 'read_user_defined' and
      	'write_user_defined'.
      	* io/list_read.c (check_buffers): Use the 'current_unit' field.
      	(unget_char): Likewise.
      	(eat_spaces): Likewise.
      	(list_formatted_read_scalar): For case BT_CLASS, call the DTIO
      	procedure.
      	(nml_get_obj_data): Likewise when DTIO procedure is present,.
      	* io/transfer.c : Export prototypes for 'transfer_derived' and
      	'transfer_derived_write'.
      	(unformatted_read): For case BT_CLASS, call the DTIO procedure.
      	(unformatted_write): Likewise.
      	(formatted_transfer_scalar_read): Likewise.
      	(formatted_transfer_scalar_write: Likewise.
      	(transfer_derived): New function.
      	(data_transfer_init): Set last_char if no child_dtio.
      	(finalize_transfer): Return if child_dtio set.
      	(st_write_done): Add condition for child_dtio not set.
      	Add extra arguments for st_set_nml_var prototype.
      	(set_nml_var): New function that contains the contents of the
      	old version of st_set_nml_var. Also sets the 'dtio_sub' and
      	'vtable' fields of the 'nml' structure.
      	(st_set_nml_var): Now just calls set_nml_var with 'dtio_sub'
      	and 'vtable' NULL.
      	(st_set_nml_dtio_var): New function that calls set_nml_var.
      	* io/unit.c (get_external_unit): If the found unit child_dtio
      	is non zero, don't do any mutex locking/unlocking.  Just
      	return the unit.
      	* io/unix.c (tempfile_open): Revert to C style comment.
      	* io/write.c (list_formatted_write_scalar): Do the DTIO call.
      	(nml_write_obj): Add BT_CLASS and do the DTIO call.
      
      2016-08-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
      	Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/48298
      	* gfortran.dg/dtio_1.f90: New test.
      	* gfortran.dg/dtio_2.f90: New test.
      	* gfortran.dg/dtio_3.f90: New test.
      	* gfortran.dg/dtio_4.f90: New test.
      	* gfortran.dg/dtio_5.f90: New test.
      	* gfortran.dg/dtio_6.f90: New test.
      	* gfortran.dg/dtio_7.f90: New test.
      	* gfortran.dg/dtio_8.f90: New test.
      	* gfortran.dg/dtio_9.f90: New test.
      	* gfortran.dg/dtio_10.f90: New test.
      
      From-SVN: r239880
      Paul Thomas committed
    • Remove arbitrary limits from rich_location · b816477a
      This patch eliminates the hard-coded limits within rich_location
      (up to 3 ranges, up to 2 fixits).  The common case is still
      handled by embedding the values inside rich_location - it only
      uses dynamic allocation if these limits are exceeded, so
      creation of rich_location instances on the stack should still
      be fast.  This is implemented via a new container class,
      semi_embedded_vec <T, N>.
      
      gcc/ChangeLog:
      	* diagnostic-show-locus.c (colorizer::begin_state): Support more
      	than 3 ranges per diagnostic by alternating between color 1 and
      	color 2.
      	(layout::layout): Replace use of rich_location::MAX_RANGES
      	with richloc->get_num_locations ().
      	(layout::calculate_line_spans): Replace use of
      	rich_location::MAX_RANGES with m_layout_ranges.length ().
      	(layout::print_annotation_line): Handle arbitrary numbers of
      	ranges in caret-printing by defaulting to '^'.
      	(selftest::test_one_liner_many_fixits): New function.
      	(test_diagnostic_show_locus_one_liner): Call it.
      	* diagnostic.c (diagnostic_initialize): Update for renaming
      	of rich_location::MAX_RANGES to
      	rich_location::STATICALLY_ALLOCATED_RANGES.
      	* diagnostic.h (struct diagnostic_context): Likewise.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/plugin/diagnostic-test-show-locus-bw.c
      	(test_many_nested_locations): New function.
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
      	(test_show_locus): Handle "test_many_nested_locations".
      
      libcpp/ChangeLog:
      	* include/line-map.h (class semi_embedded_vec): New class.
      	(semi_embedded_vec<T, NUM_EMBEDDED>::semi_embedded_vec): New ctor.
      	(semi_embedded_vec<T, NUM_EMBEDDED>::~semi_embedded_vec): New
      	dtor.
      	(semi_embedded_vec<T, NUM_EMBEDDED>::operator[]): New methods.
      	(semi_embedded_vec<T, NUM_EMBEDDED>::push): New method.
      	(semi_embedded_vec<T, NUM_EMBEDDED>::truncate): New method.
      	(rich_location::get_num_locations): Reimplement in terms of
      	m_ranges.
      	(rich_location::get_range): Make non-inline.
      	(rich_location::get_num_fixit_hints): Reimplement in terms of
      	m_fixit_hints.
      	(rich_location::add_fixit): New function.
      	(rich_location::MAX_RANGES): Rename to...
      	(rich_location::STATICALLY_ALLOCATED_RANGES): ...this.
      	(rich_location::MAX_FIXIT_HINTS): Rename to...
      	(rich_location::STATICALLY_ALLOCATED_RANGES): ...this, and make
      	private.
      	(rich_location::m_num_ranges): Eliminate in favor of...
      	(rich_location::m_ranges): ...this, converting from a fixed-size
      	array to a semi_embedded_vec.
      	(rich_location::m_num_fixit_hints): Eliminate in favor of...
      	(rich_location::m_fixit_hints): ...this, converting from a
      	fixed-size array to a semi_embedded_vec.
      	* line-map.c (rich_location::rich_location): Update for above
      	changes.
      	(rich_location::~rich_location): Likewise.
      	(rich_location::get_loc): Likewise.
      	(rich_location::get_range): New methods.
      	(rich_location::add_range): Update for above changes.
      	(rich_location::set_range): Likewise.
      	(rich_location::add_fixit_insert): Likewise.
      	(rich_location::add_fixit_replace): Likewise.
      	(rich_location::get_last_fixit_hint): Likewise.
      	(rich_location::reject_impossible_fixit): Likewise.
      	(rich_location::add_fixit): New method.
      
      From-SVN: r239879
      David Malcolm committed
    • Daily bump. · fb8e9c5e
      From-SVN: r239878
      GCC Administrator committed
    • selftest: split out named_temp_file from temp_source_file · 4ecfc453
      Split out a new base class for temp_source_file, named_temp_file,
      moving the deletion to the base class dtor, so that we can write
      out temporary files in other ways in selftests.
      
      gcc/ChangeLog:
      	* selftest.c (selftest::named_temp_file::named_temp_file): New
      	ctor.
      	(selftest::temp_source_file::~temp_source_file): Move to...
      	(selftest::named_temp_file::~named_temp_file): ...here.
      	(selftest::test_named_temp_file): New function.
      	(selftest::selftest_c_tests): Call test_named_temp_file.
      	* selftest.h (class named_temp_file): New class.
      	(class temp_source_file): Convert to a subclass of named_temp_file.
      
      From-SVN: r239875
      David Malcolm committed
  3. 30 Aug, 2016 1 commit
    • C++: add fixit for '>>' template error · 71b30891
      gcc/cp/ChangeLog:
      	* parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
      	hint to ">>" within nested template argument list error.
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/template/double-greater-than-fixit.C: New test case.
      
      From-SVN: r239873
      David Malcolm committed