platform/upstream/gcc.git
8 years agore PR c++/58706 (ICE with lambda in OpenMP for-loop)
Jakub Jelinek [Mon, 8 Aug 2016 19:50:29 +0000 (21:50 +0200)]
re PR c++/58706 (ICE with lambda in OpenMP for-loop)

PR c++/58706
* parser.c: Include tree-iterator.h.
(cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
to FOR_BLOCK.
(cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
entries.

* testsuite/libgomp.c++/pr58706.C: New test.

From-SVN: r239251

8 years agore PR fortran/72716 (ICE in gfc_resolve_omp_declare_simd, at fortran/openmp.c:5156)
Jakub Jelinek [Mon, 8 Aug 2016 19:48:48 +0000 (21:48 +0200)]
re PR fortran/72716 (ICE in gfc_resolve_omp_declare_simd, at fortran/openmp.c:5156)

PR fortran/72716
* openmp.c (gfc_match_omp_declare_simd): Don't stick anything into
BLOCK DATA ns, it will be rejected later.

* gfortran.dg/gomp/pr72716.f90: New test.

From-SVN: r239250

8 years agore PR middle-end/72781 (-Wuninitialized false positives in OpenMP code)
Jakub Jelinek [Mon, 8 Aug 2016 19:46:36 +0000 (21:46 +0200)]
re PR middle-end/72781 (-Wuninitialized false positives in OpenMP code)

PR middle-end/72781
* omp-low.c (lower_lastprivate_clauses): Set TREE_NO_WARNING on the
private vars for lastprivate and for linear iterator.

* gcc.dg/gomp/pr72781.c: New test.

From-SVN: r239249

8 years agore PR middle-end/68762 (link error for inline function decorated with OpenMP declare...
Jakub Jelinek [Mon, 8 Aug 2016 19:45:53 +0000 (21:45 +0200)]
re PR middle-end/68762 (link error for inline function decorated with OpenMP declare simd)

PR middle-end/68762
* omp-simd-clone.c: Include varasm.h.
(simd_clone_create): Copy over DECL_COMDAT, DECL_WEAK, DECL_EXTERNAL,
DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, DECL_DLLIMPORT_P and for
DECL_ONE_ONLY call make_decl_one_only.  Fix up spelling in comment and
update function name.

* g++.dg/vect/pr68762-1.cc: New test.
* g++.dg/vect/pr68762-2.cc: New test.
* g++.dg/vect/pr68762.h: New file.

From-SVN: r239248

8 years agoc-format.c: cleanup of check_format_info_main
David Malcolm [Mon, 8 Aug 2016 18:10:54 +0000 (18:10 +0000)]
c-format.c: cleanup of check_format_info_main

gcc/c-family/ChangeLog:
* c-format.c (class flag_chars_t): New class.
(struct length_modifier): New struct.
(class argument_parser): New class.
(flag_chars_t::flag_chars_t): New ctor.
(flag_chars_t::has_char_p): New method.
(flag_chars_t::add_char): New method.
(flag_chars_t::validate): New method.
(flag_chars_t::get_alloc_flag): New method.
(flag_chars_t::assignment_suppression_p): New method.
(argument_parser::argument_parser): New ctor.
(argument_parser::read_any_dollar): New method.
(argument_parser::read_format_flags): New method.
(argument_parser::read_any_format_width): New method.
(argument_parser::read_any_format_left_precision): New method.
(argument_parser::read_any_format_precision): New method.
(argument_parser::handle_alloc_chars): New method.
(argument_parser::read_any_length_modifier): New method.
(argument_parser::read_any_other_modifier): New method.
(argument_parser::find_format_char_info): New method.
(argument_parser::validate_flag_pairs): New method.
(argument_parser::give_y2k_warnings): New method.
(argument_parser::parse_any_scan_set): New method.
(argument_parser::handle_conversions): New method.
(argument_parser::check_argument_type): New method.
(check_format_info_main): Introduce classes argument_parser
and flag_chars_t, moving the code within the loop into methods
of these classes.  Make various locals "const".

From-SVN: r239247

8 years agodriver-avr.c (specfiles_doc_url): Remove.
Pitchumani Sivanupandi [Mon, 8 Aug 2016 17:37:57 +0000 (17:37 +0000)]
driver-avr.c (specfiles_doc_url): Remove.

* config/avr/driver-avr.c (specfiles_doc_url): Remove.
(avr_diagnose_devicespecs_error): Remove.
(avr_devicespecs_file): Remove composing absolute path for specfile
and its verbose info. Remove conditions to check specs-file,

From-SVN: r239246

8 years agoPR testsuite/72838 - FAIL: g++.dg/cpp0x/constexpr-cast.C
Martin Sebor [Mon, 8 Aug 2016 15:32:16 +0000 (15:32 +0000)]
PR testsuite/72838 - FAIL: g++.dg/cpp0x/constexpr-cast.C

gcc/testsuite/ChangeLog:
* gcc/testsuite/g++.dg/cpp0x/constexpr-cast.C: Correct target selector.
* gcc/testsuite/g++.dg/warn/overflow-warn-3.C: Same.
* gcc/testsuite/g++.dg/warn/overflow-warn-4.C: Same.

From-SVN: r239242

8 years agore PR rtl-optimization/72821 (RTL check: expected elt 2 type 'B', have '0' (rtx barri...
Jakub Jelinek [Mon, 8 Aug 2016 13:58:46 +0000 (15:58 +0200)]
re PR rtl-optimization/72821 (RTL check: expected elt 2 type 'B', have '0' (rtx barrier) in BLOCK_FOR_INSN, at rtl.h:1424)

PR rtl-optimization/72821
* lra-spills.c (regno_in_use_p): Don't use BLOCK_FOR_INSN on barriers,
just return false for them.

From-SVN: r239241

8 years ago[RS6000] TOC refs generated during reload
Alan Modra [Mon, 8 Aug 2016 12:05:11 +0000 (21:35 +0930)]
[RS6000] TOC refs generated during reload

The generic reload fix for pr72771 exposed a problem with recognizing
-mcmodel=medium/large TOC references generated during reload.

PR target/72771
* config/rs6000/rs6000.c (toc_relative_expr_p): Allow (lo_sum (high))
toc refs created during reload.  Update function comment.

From-SVN: r239240

8 years agore PR fortran/71936 (ICE in wide_int_to_tree, at tree.c:1487)
Andre Vehreschild [Mon, 8 Aug 2016 09:58:21 +0000 (11:58 +0200)]
re PR fortran/71936 (ICE in wide_int_to_tree, at tree.c:1487)

gcc/fortran/ChangeLog:

2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/71936
* trans-array.c (gfc_array_allocate): When SOURCE= is a function
stick with the ref of the object to allocate.

gcc/testsuite/ChangeLog:

2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/71936
* gfortran.dg/allocate_with_source_21.f03: New test.

From-SVN: r239237

8 years agore PR fortran/72698 (ICE in lhd_incomplete_type_error, at langhooks.c:205)
Andre Vehreschild [Mon, 8 Aug 2016 09:49:37 +0000 (11:49 +0200)]
re PR fortran/72698 (ICE in lhd_incomplete_type_error, at langhooks.c:205)

gcc/testsuite/ChangeLog:

2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/72698
* gfortran.dg/allocate_with_source_20.f03: New test.

gcc/fortran/ChangeLog:

2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/72698
* trans-stmt.c (gfc_trans_allocate): Prevent generating code for
copy of zero sized string and with it an ICE.

From-SVN: r239236

8 years ago[RS6000] PR72802 part 2, reload ICE
Alan Modra [Mon, 8 Aug 2016 09:06:49 +0000 (18:36 +0930)]
[RS6000] PR72802 part 2, reload ICE

After fixing the constraint problem, we hit an "insn does not satisfy
its constraints" with -mno-lra on the following insn, a vector load
from mem which has an invalid offset:
(insn 631 630 1122 12 (set (reg:SF 108 31 [orig:260 pretmp_44 ] [260])
        (mem:SF (plus:DI (reg:DI 30 30 [orig:338 ivtmp.141 ] [338])
                (const_int 2 [0x2])) [5 MEM[base: _1, offset: 2B]+0 S4 A32])) 470 {movsf_hardfloat}
     (nil))

Here are the reload costs for the various alternatives of
movsf_hardfloat:
"=!r, !r,  m,  f, ww, ww, !r,  f, wb,  m, wY, wu,  Z,?wn, ?r,*c*l, !r, *h"
  "r,  m,  r,  f, ww,  j,  j,  m, wY,  f, wb,  Z, wu,  r, wn,   r, *h,  0"
 617 609  17  17   8   8 617   9   8  17  17   8  17  23  23   17 617  17

Notice that the cost for a vector<-vector move (ww,ww) is the same as
the cost for a vector<-mem move (wb,wY or wu,Z).  Since the
vector<-vector move comes first, it is chosen and the mem part of the
insn reloaded.  That just gives another copy of insn 631.

PR target/72802
* config/rs6000/rs6000.md (mov<mode>_hardfloat): Sort
alternatives.  Put loads first, then stores, and reg/reg moves
within same class later.  Delete attr length.
testsuite/
* gcc.c-torture/compile/pr72802.c: New.

From-SVN: r239234

8 years ago[RS6000] PR72802 part 1, fix constraints for lxssp/stxssp
Alan Modra [Mon, 8 Aug 2016 09:05:16 +0000 (18:35 +0930)]
[RS6000] PR72802 part 1, fix constraints for lxssp/stxssp

We can't use "o" constraint for lsxxp/stxssp since those insns have a
DS-form offset field, ie. the bottom two bits of the offset must be 0.
So use "wY" instead, but that leads to finding another problem.

mem_operand_gpr is only suitable for gpr loads/stores since it does
not enforce multiple-of-4 offsets when -m32.  So "wY" can't use
mem_operand_gpr, and the vsx tests in mem_operand_gpr are bogus.

I've deleted offsettable_mem_14bit_operand because it wasn't used
anywhere but in the wY constraint.  Note also that the new wY
constraint doesn't use memory_operand because that is redundant in a
constraint, having already been tested in the predicate.

PR target/72802
* config/rs6000/rs6000.c (mem_operand_gpr): Remove vsx dform test.
(mem_operand_ds_form): New predicate.
* config/rs6000/rs6000-protos.h (mem_operand_ds_form): Declare.
* config/rs6000/constraints.md (wY): Use mem_operand_df_form.
* config/rs6000/predicates.md (offsettable_mem_14bit_operand): Delete.
* config/rs6000/rs6000.md (f32_lm2, f32_sm2): Use wY for SF.
(extendsfdf2_fpr): Replace o constraint with wY.

From-SVN: r239233

8 years agore PR fortran/70524 (ICE when using -frepack-arrays -Warray-temporaries)
Andre Vehreschild [Mon, 8 Aug 2016 08:11:29 +0000 (10:11 +0200)]
re PR fortran/70524 (ICE when using  -frepack-arrays -Warray-temporaries)

gcc/testsuite/ChangeLog:

2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/70524
* gfortran.dg/dependency_48.f90: New test.

gcc/fortran/ChangeLog:

2016-08-08  Andre Vehreschild  <vehre@gcc.gnu.org>

PR fortran/70524
* trans-array.c (gfc_trans_dummy_array_bias): Ensure that the
location information is correctly set.
* trans-decl.c (gfc_trans_deferred_vars): Set the locus of the
current construct early.

From-SVN: r239230

8 years agoDaily bump.
GCC Administrator [Mon, 8 Aug 2016 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r239228

8 years agointernal/syscall/unix: fix syscalls for alpha, ia64, s390
Ian Lance Taylor [Sun, 7 Aug 2016 22:32:46 +0000 (22:32 +0000)]
internal/syscall/unix: fix syscalls for alpha, ia64, s390

    Also change the configure script to set GOARCH correctly for ia64, and
    add ia64 as a processor to match.sh and gotest.

    Reviewed-on: https://go-review.googlesource.com/25549

From-SVN: r239225

8 years agore PR fortran/70040 (ICE in gimplify.c with deferred-length strings)
Thomas Koenig [Sun, 7 Aug 2016 15:40:34 +0000 (15:40 +0000)]
re PR fortran/70040 (ICE in gimplify.c with deferred-length strings)

2016-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/70040
Corrected last ChangeLog entry.

From-SVN: r239222

8 years agore PR fortran/71961 (178.galgel in SPEC CPU 2000 is miscompiled)
Thomas Koenig [Sun, 7 Aug 2016 15:25:56 +0000 (15:25 +0000)]
re PR fortran/71961 (178.galgel in SPEC CPU 2000 is miscompiled)

2016-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/71961
* gfortran.dg/pr70040.f90:  New testcase.

From-SVN: r239221

8 years agore PR fortran/71961 (178.galgel in SPEC CPU 2000 is miscompiled)
Thomas Koenig [Sun, 7 Aug 2016 13:24:32 +0000 (13:24 +0000)]
re PR fortran/71961 (178.galgel in SPEC CPU 2000 is miscompiled)

2016-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/71961
* gfortran.dg/matmul_10.f90:  New testcase.

From-SVN: r239220

8 years agotree-ssa-threadbackward.c: Include tree-inline.h
Jan Hubicka [Sun, 7 Aug 2016 10:50:16 +0000 (12:50 +0200)]
tree-ssa-threadbackward.c: Include tree-inline.h

* tree-ssa-threadbackward.c: Include tree-inline.h
(profitable_jump_thread_path): Use estimate_num_insns to estimate
size of copied block; for cold paths reduce duplication.
(find_jump_threads_backwards): Remove redundant tests.
(pass_thread_jumps::gate): Enable for -Os.
* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Update testcase.

From-SVN: r239219

8 years agore PR c/72816 (ICE on x86_64-linux-gnu (tree check: expected tree that contains ...
Jakub Jelinek [Sun, 7 Aug 2016 09:49:14 +0000 (11:49 +0200)]
re PR c/72816 (ICE on x86_64-linux-gnu (tree check: expected tree that contains ‘decl with RTL’ structure, have ‘field_decl’ in set_decl_rtl, at emit-rtl.c:1282))

PR c/72816
* stor-layout.c (layout_decl): Fix up formatting.
(relayout_decl): Allow DECL to be FIELD_DECL.

* gcc.dg/pr72816.c: New test.

From-SVN: r239218

8 years ago[RS6000] Fix wrong mode reg
Alan Modra [Sun, 7 Aug 2016 03:22:12 +0000 (12:52 +0930)]
[RS6000] Fix wrong mode reg

Fix thinko in rev 239011 (git d1d05ab7).

* config/rs6000/rs6000.md (fix_trunc<mode>si2): Fix mode of reg.

From-SVN: r239217

8 years agoDaily bump.
GCC Administrator [Sun, 7 Aug 2016 00:16:12 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r239216

8 years agodata-streamer-in.c (streamer_read_wide_int): New.
Kugan Vivekanandarajah [Sat, 6 Aug 2016 21:11:26 +0000 (21:11 +0000)]
data-streamer-in.c (streamer_read_wide_int): New.

gcc/ChangeLog:

2016-08-07  Kugan Vivekanandarajah  <kuganv@linaro.org>

* data-streamer-in.c (streamer_read_wide_int): New.
(streamer_read_widest_int): Renamed function.
* data-streamer-out.c (streamer_write_wide_int): New
(streamer_write_widest_int): Renamed function.
* lto-streamer-in.c (streamer_read_wi): Renamed and moved to
data-stream-in.c.
(input_cfg): Call renamed function.
* lto-streamer-out.c (streamer_write_wi): Renamed and moved to
data-stream-out.c.
(output_cfg): Call renamed function.
* data-streamer.h: Add declarations.

From-SVN: r239213

8 years agotree-ssa-ccp.c (extend_mask): New param sgn.
Prathamesh Kulkarni [Sat, 6 Aug 2016 18:11:24 +0000 (18:11 +0000)]
tree-ssa-ccp.c (extend_mask): New param sgn.

2016-08-08  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* tree-ssa-ccp.c (extend_mask): New param sgn.
Remove ORing with wi::mask.
(get_default_value): Adjust call to extend_mask to pass sign.
(evaluate_stmt): Likewise.

From-SVN: r239212

8 years agoFix crash in selftest::test_lexer_string_locations_ucn4 (PR bootstrap/72823)
David Malcolm [Sat, 6 Aug 2016 18:06:30 +0000 (18:06 +0000)]
Fix crash in selftest::test_lexer_string_locations_ucn4 (PR bootstrap/72823)

libcpp/ChangeLog:
PR bootstrap/72823
* charset.c (_cpp_valid_ucn): Replace overzealous assert with one
that allows for char_range to be non-NULL when loc_reader is NULL.

From-SVN: r239211

8 years agolibgo: fix getrandom build for 32-bit ppc
Ian Lance Taylor [Sat, 6 Aug 2016 15:58:22 +0000 (15:58 +0000)]
libgo: fix getrandom build for 32-bit ppc

    Add a ppc build constraint for internal/syscall/unix.

    Reviewed-on: https://go-review.googlesource.com/25547

From-SVN: r239210

8 years agoUpdate C++17 library status table
Jonathan Wakely [Sat, 6 Aug 2016 12:45:58 +0000 (13:45 +0100)]
Update C++17 library status table

* doc/xml/manual/status_cxx2017.xml: Update status table.
* doc/html/manual/status.html: Regenerate.

From-SVN: r239209

8 years ago* testsuite/lib/libstdc++.exp: Fix typo in comment.
Jonathan Wakely [Sat, 6 Aug 2016 10:44:17 +0000 (11:44 +0100)]
* testsuite/lib/libstdc++.exp: Fix typo in comment.

From-SVN: r239193

8 years agogcov.c (handle_cycle): Use INTTYPE_MAXIMUM (int64_t) instead of INT64_MAX.
Jakub Jelinek [Sat, 6 Aug 2016 10:30:49 +0000 (12:30 +0200)]
gcov.c (handle_cycle): Use INTTYPE_MAXIMUM (int64_t) instead of INT64_MAX.

* gcov.c (handle_cycle): Use INTTYPE_MAXIMUM (int64_t) instead of
INT64_MAX.

From-SVN: r239192

8 years agoUse ::new to avoid finding overloaded operator new
Jonathan Wakely [Sat, 6 Aug 2016 10:21:07 +0000 (11:21 +0100)]
Use ::new to avoid finding overloaded operator new

PR libstdc++/72820
* include/std/functional (_Function_base::_Base_manager::_M_clone):
Qualify new operator.
* testsuite/20_util/function/cons/72820.cc: New test.

From-SVN: r239191

8 years agomatch.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Disable transform if...
Prathamesh Kulkarni [Sat, 6 Aug 2016 05:04:07 +0000 (05:04 +0000)]
match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Disable transform if operand's type is pointer to function or method.

2016-08-06  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Disable
transform if operand's type is pointer to function or method.

From-SVN: r239190

8 years agolibgo: change build procedure to use build tags
Ian Lance Taylor [Sat, 6 Aug 2016 00:36:33 +0000 (00:36 +0000)]
libgo: change build procedure to use build tags

    Previously the libgo Makefile explicitly listed the set of files to
    compile for each package.  For packages that use build tags, this
    required a lot of awkward automake conditionals in the Makefile.

    This CL changes the build to look at the build tags in the files.
    The new shell script libgo/match.sh does the matching.  This required
    adjusting a lot of build tags, and removing some files that are never
    used.  I verified that the exact same sets of files are compiled on
    amd64 GNU/Linux.  I also tested the build on i386 Solaris.

    Writing match.sh revealed some bugs in the build tag handling that
    already exists, in a slightly different form, in the gotest shell
    script.  This CL fixes those problems as well.

    The old code used automake conditionals to handle systems that were
    missing strerror_r and wait4.  Rather than deal with those in Go, those
    functions are now implemented in runtime/go-nosys.c when necessary, so
    the Go code can simply assume that they exist.

    The os testsuite looked for dir_unix.go, which was never built for gccgo
    and has now been removed.  I changed the testsuite to look for dir.go
    instead.

    Reviewed-on: https://go-review.googlesource.com/25546

From-SVN: r239189

8 years agoDaily bump.
GCC Administrator [Sat, 6 Aug 2016 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r239188

8 years agoHarmonize diagnostics for invalid reference binding
Jonathan Wakely [Sat, 6 Aug 2016 00:07:05 +0000 (01:07 +0100)]
Harmonize diagnostics for invalid reference binding

gcc/cp:

* call.c (convert_like_real): Harmonize diagnostics for invalid
reference binding.

gcc/testsuite:

* call.c (convert_like_real): Harmonize diagnostics for invalid
reference binding.
* g++.dg/conversion/pr16333.C: Adjust dg-error regexp.
* g++.dg/conversion/pr41426.C: Likewise.
* g++.dg/conversion/pr66211.C: Likewise.
* g++.dg/cpp1y/lambda-init9.C: Likewise.
* g++.dg/init/ref8.C: Likewise.
* g++.old-deja/g++.law/cvt20.C: Likewise.
* g++.old-deja/g++.mike/p9732c.C: Likewise.

From-SVN: r239184

8 years agoAdd std::apply for C++17
Jonathan Wakely [Sat, 6 Aug 2016 00:06:02 +0000 (01:06 +0100)]
Add std::apply for C++17

* doc/xml/manual/status_cxx2017.xml: Add missing LFTSv2 features.
* doc/html/manual/status.html: Regenerate.
* include/Makefile.am: Add new header.
* include/Makefile.in: Regenerate.
* include/bits/invoke.h: New header.
(__invoke): Make constexpr. Add && to types in exception specification.
* include/experimental/tuple (apply, __apply_impl): Fix non-reserved
names. Include <bits/invoke.h> and use std::__invoke.
* include/std/functional (__invfwd, __invoke_impl, __invoke): Move to
new header.
(invoke): Add && to types in exception specification.
* include/std/tuple (apply, __apply_impl): Define for C++17.
* testsuite/20_util/tuple/apply/1.cc: New test.
* testsuite/20_util/tuple/element_access/get_neg.cc: Adjust dg-error
lineno.

From-SVN: r239183

8 years agoImprove forward jump threading of switch statements (PR18046)
Patrick Palka [Fri, 5 Aug 2016 23:29:53 +0000 (23:29 +0000)]
Improve forward jump threading of switch statements (PR18046)

gcc/ChangeLog:

PR tree-optimization/18046
* tree-ssa-threadedge.c: Include cfganal.h.
(simplify_control_statement_condition): If simplifying a
GIMPLE_SWITCH, replace the index operand of the GIMPLE_SWITCH
with the dominating ASSERT_EXPR before handing it off to VRP.
Mention that a CASE_LABEL_EXPR may be returned.
(thread_around_empty_blocks): Adjust to handle
simplify_control_statement_condition() returning a
CASE_LABEL_EXPR.
(thread_through_normal_block): Likewise.
* tree-vrp.c (simplify_stmt_for_jump_threading): Simplify
a switch statement by trying to determine which case label
will be taken.

gcc/testsuite/ChangeLog:

PR tree-optimization/18046
* gcc.dg/tree-ssa/vrp105.c: New test.
* gcc.dg/tree-ssa/vrp106.c: New test.

From-SVN: r239181

8 years agore PR rtl-optimization/69847 (Spec 2006 403.gcc slows down with -mlra vs. reload...
Vladimir Makarov [Fri, 5 Aug 2016 21:31:31 +0000 (21:31 +0000)]
re PR rtl-optimization/69847 (Spec 2006 403.gcc slows down with -mlra vs. reload on PowerPC)

2016-08-05  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/69847
* lra-constraints.c (process_invariant_for_inheritance): Save
pattern instead of src.
(remove_inheritance_pseudos): Use the pattern.  Add assert.

From-SVN: r239180

8 years agore PR go/72812 (reflect FAILs with Solaris as)
Ian Lance Taylor [Fri, 5 Aug 2016 20:11:30 +0000 (20:11 +0000)]
re PR go/72812 (reflect FAILs with Solaris as)

PR go/72812
* go-gcc.cc (char_needs_encoding): New static function.
(needs_encoding, fetch_utf8_char): New static functions.
(encode_id): New static function.
(Gcc_backend::global_variable): Set asm name if the name is not
simple ASCII.
(Gcc_backend::implicit_variable): Likewise.
(Gcc_backend::implicit_variable_reference): Likewise.
(Gcc_backend::immutable_struct): Likewise.
(Gcc_backend::immutable_struct_reference): Likewise.
(Gcc_backend::function): Likewise.

From-SVN: r239179

8 years agoconstexpr.c (cxx_eval_store_expression): Remove hyphen from the spelling of "constant...
Martin Sebor [Fri, 5 Aug 2016 18:27:46 +0000 (18:27 +0000)]
constexpr.c (cxx_eval_store_expression): Remove hyphen from the spelling of "constant-expression" in diagnostic messages...

gcc/cp/ChangeLog:

* constexpr.c (cxx_eval_store_expression): Remove hyphen from
the spelling of "constant-expression" in diagnostic messages
for consistency.
(cxx_eval_constant_expression): Same.
(cxx_eval_outermost_constant_expr): Same.
(potential_constant_expression_1): Same.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/constexpr-cast.C: Avoid assuming (void*)1 is spelled
1ul in diagnostics.  Remove hyphen from "constant-expression."
* g++.dg/cpp0x/constexpr-50060.C: Adjust.
* g++.dg/cpp0x/static_assert3.C: Same.
* g++.dg/cpp1y/constexpr-throw.C: Same.
* g++.dg/template/nontype3.C: Same.
* g++.dg/warn/overflow-warn-1.C: Same.
* g++.dg/warn/overflow-warn-3.C: Same.
* g++.dg/warn/overflow-warn-4.C: Same.

From-SVN: r239176

8 years agoOn-demand locations within string-literals
David Malcolm [Fri, 5 Aug 2016 18:08:33 +0000 (18:08 +0000)]
On-demand locations within string-literals

gcc/c-family/ChangeLog:
* c-common.c: Include "substring-locations.h".
(get_cpp_ttype_from_string_type): New function.
(g_string_concat_db): New global.
(substring_loc::get_range): New method.
* c-common.h (g_string_concat_db): New declaration.
(class substring_loc): New class.
* c-lex.c (lex_string): When concatenating strings, capture the
locations of all tokens using a new obstack, and record the
concatenation locations within g_string_concat_db.
* c-opts.c (c_common_init_options): Construct g_string_concat_db
on the ggc-heap.

gcc/ChangeLog:
* input.c (string_concat::string_concat): New constructor.
(string_concat_db::string_concat_db): New constructor.
(string_concat_db::record_string_concatenation): New method.
(string_concat_db::get_string_concatenation): New method.
(string_concat_db::get_key_loc): New method.
(class auto_cpp_string_vec): New class.
(get_substring_ranges_for_loc): New function.
(get_source_range_for_substring): New function.
(get_num_source_ranges_for_substring): New function.
(class selftest::lexer_test_options): New class.
(struct selftest::lexer_test): New struct.
(class selftest::ebcdic_execution_charset): New class.
(selftest::ebcdic_execution_charset::s_singleton): New variable.
(selftest::lexer_test::lexer_test): New constructor.
(selftest::lexer_test::~lexer_test): New destructor.
(selftest::lexer_test::get_token): New method.
(selftest::assert_char_at_range): New function.
(ASSERT_CHAR_AT_RANGE): New macro.
(selftest::assert_num_substring_ranges): New function.
(ASSERT_NUM_SUBSTRING_RANGES): New macro.
(selftest::assert_has_no_substring_ranges): New function.
(ASSERT_HAS_NO_SUBSTRING_RANGES): New macro.
(selftest::test_lexer_string_locations_simple): New function.
(selftest::test_lexer_string_locations_ebcdic): New function.
(selftest::test_lexer_string_locations_hex): New function.
(selftest::test_lexer_string_locations_oct): New function.
(selftest::test_lexer_string_locations_letter_escape_1): New function.
(selftest::test_lexer_string_locations_letter_escape_2): New function.
(selftest::test_lexer_string_locations_ucn4): New function.
(selftest::test_lexer_string_locations_ucn8): New function.
(selftest::uint32_from_big_endian): New function.
(selftest::test_lexer_string_locations_wide_string): New function.
(selftest::uint16_from_big_endian): New function.
(selftest::test_lexer_string_locations_string16): New function.
(selftest::test_lexer_string_locations_string32): New function.
(selftest::test_lexer_string_locations_u8): New function.
(selftest::test_lexer_string_locations_utf8_source): New function.
(selftest::test_lexer_string_locations_concatenation_1): New
function.
(selftest::test_lexer_string_locations_concatenation_2): New
function.
(selftest::test_lexer_string_locations_concatenation_3): New
function.
(selftest::test_lexer_string_locations_macro): New function.
(selftest::test_lexer_string_locations_stringified_macro_argument):
New function.
(selftest::test_lexer_string_locations_non_string): New function.
(selftest::test_lexer_string_locations_long_line): New function.
(selftest::test_lexer_char_constants): New function.
(selftest::input_c_tests): Call the new test functions once per
case within the line_table test matrix.
* input.h (struct string_concat): New struct.
(struct location_hash): New struct.
(class string_concat_db): New class.
* substring-locations.h: New header.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-string-literals-1.c: New file.
* gcc.dg/plugin/diagnostic-test-string-literals-2.c: New file.
* gcc.dg/plugin/diagnostic_plugin_test_string_literals.c: New file.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the above new files.

libcpp/ChangeLog:
* charset.c (cpp_substring_ranges::cpp_substring_ranges): New
constructor.
(cpp_substring_ranges::~cpp_substring_ranges): New destructor.
(cpp_substring_ranges::add_range): New method.
(cpp_substring_ranges::add_n_ranges): New method.
(_cpp_valid_ucn): Add "char_range" and "loc_reader" params; if
they are non-NULL, read position information from *loc_reader
and update char_range->m_finish accordingly.
(convert_ucn): Add "char_range", "loc_reader", and "ranges"
params.  If loc_reader is non-NULL, read location information from
it, and update *ranges accordingly, using char_range.
Conditionalize the conversion into tbuf on tbuf being non-NULL.
(convert_hex): Likewise, conditionalizing the call to
emit_numeric_escape on tbuf.
(convert_oct): Likewise.
(convert_escape): Add params "loc_reader" and "ranges".  If
loc_reader is non-NULL, read location information from it, and
update *ranges accordingly.  Conditionalize the conversion into
tbuf on tbuf being non-NULL.
(cpp_interpret_string): Rename to...
(cpp_interpret_string_1): ...this, adding params "loc_readers" and
"out".  Use "to" to conditionalize the initialization and usage of
"tbuf", such as running the converter.  If "loc_readers" is
non-NULL, use the instances within it, reading location
information from them, and passing them to convert_escape; likewise
write to "out" if loc_readers is non-NULL.  Check for leading
quote and issue an error if it is not present.  Update boundary
check from "== limit" to ">= limit" to protect against erroneous
location values to calls that are not parsing string literals.
(cpp_interpret_string): Reimplement in terms to
cpp_interpret_string_1.
(noop_error_cb): New function.
(cpp_interpret_string_ranges): New function.
(cpp_string_location_reader::cpp_string_location_reader): New
constructor.
(cpp_string_location_reader::get_next): New method.
* include/cpplib.h (class cpp_string_location_reader): New class.
(class cpp_substring_ranges): New class.
(cpp_interpret_string_ranges): New prototype.
* internal.h (_cpp_valid_ucn): Add params "char_range" and
"loc_reader".
* lex.c (forms_identifier_p): Pass NULL for new params to
_cpp_valid_ucn.

From-SVN: r239175

8 years agore PR tree-optimization/72810 (error: type mismatch for case label in switch statement)
Patrick Palka [Fri, 5 Aug 2016 17:21:00 +0000 (17:21 +0000)]
re PR tree-optimization/72810 (error: type mismatch for case label in switch statement)

Fix PR tree-optimization/72810

gcc/ChangeLog:

PR tree-optimization/72810
* tree-vrp.c (simplify_switch_using_ranges): Avoid changing
the type of the case labels when truncating.

gcc/testsuite/ChangeLog:

PR tree-optimization/72810
* gcc.dg/tree-ssa/vrp110.c: New test.

From-SVN: r239174

8 years ago[AArch64] Handle HFAs of float16 types properly
James Greenhalgh [Fri, 5 Aug 2016 16:08:24 +0000 (16:08 +0000)]
[AArch64] Handle HFAs of float16 types properly

Fix PR Target/72819.

gcc/

PR Target/72819
* config/aarch64/aarch64.h (aarch64_fp16_type_node): Declare.
(aarch64_fp16_ptr_type_node): Likewise.
* config/aarch64/aarch64-simd-builtins.c
(aarch64_fp16_ptr_type_node): Define.
(aarch64_init_fp16_types): New, refactored out of...
(aarch64_init_builtins): ...here, update to call
aarch64_init_fp16_types.
* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr): Handle
HFmode.
(aapcs_vfp_sub_candidate): Likewise.

gcc/testsuite/

PR Target/72819
* gcc.target/aarch64/aapcs64/abitest-common.h: Define half-precision
registers.
* gcc.target/aarch64/aapcs64/abitest.S (dumpregs): Add assembly for
saving the half-precision registers.
* gcc.target/aarch64/aapcs64/func-ret-1.c: Test that an __fp16
value is returned in h0.
* gcc.target/aarch64/aapcs64/test_2.c: Check that __FP16 arguments
are passed in FP/SIMD registers.
* gcc.target/aarch64/aapcs64/test_27.c: New, test that __fp16 HFA
passing works corrcetly.
* gcc.target/aarch64/aapcs64/type-def.h (hfa_f16x1_t): New.
(hfa_f16x2_t): Likewise.
(hfa_f16x3_t): Likewise.
* gcc.target/aarch64/aapcs64/va_arg-1.c: Check that __fp16 values
are promoted to double and passed in a double register.
* gcc.target/aarch64/aapcs64/va_arg-2.c: Check that __fp16 values
are promoted to double and stacked.
* gcc.target/aarch64/aapcs64/va_arg-4.c: Check stacking of HFA of
__fp16 data types.
* gcc.target/aarch64/aapcs64/va_arg-5.c: Likewise.
* gcc.target/aarch64/aapcs64/va_arg-16.c: New, check HFAs of
__fp16 first get passed in FP/SIMD registers, then stacked.

From-SVN: r239173

8 years agoCorrect status of __cpp_lib_enable_shared_from_this
Jonathan Wakely [Fri, 5 Aug 2016 13:57:30 +0000 (14:57 +0100)]
Correct status of __cpp_lib_enable_shared_from_this

* doc/xml/manual/status_cxx2017.xml: Correct shared_from_this status.
* doc/html/manual/status.html: Regenerate.

From-SVN: r239171

8 years agoImplement C++17 rounding functions for std::chrono (P0092R1)
Jonathan Wakely [Fri, 5 Aug 2016 13:52:59 +0000 (14:52 +0100)]
Implement C++17 rounding functions for std::chrono (P0092R1)

* include/std/chrono (floor, ceil, round, abs): New for C++17.
* testsuite/20_util/duration_cast/rounding.cc: New test.
* testsuite/20_util/time_point_cast/rounding.cc: New test.
* doc/xml/manual/status_cxx2017.xml: Update status table.
* doc/html/manual/status.html: Regenerate.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Adjust
dg-error lineno.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
* testsuite/20_util/duration/literals/range.cc: Likewise.

From-SVN: r239170

8 years agogcov tool: Implement Hawick's algorithm for cycle detection,
Martin Liska [Fri, 5 Aug 2016 13:50:49 +0000 (15:50 +0200)]
gcov tool: Implement Hawick's algorithm for cycle detection,

    Joshua Cranmer  <Pidgeot18@gmail.com>

* gcov.c (line_t::has_block): New function.
(enum loop_type): New enum.
(handle_cycle): New function.
(unblock): Likewise.
(circuit): Likewise.
(get_cycles_count): Likewise.
(accumulate_line_counts): Use new loop detection algorithm.

From-SVN: r239169

8 years agogcov: rename line_next to next_file_fn in function_info
Martin Liska [Fri, 5 Aug 2016 13:50:02 +0000 (15:50 +0200)]
gcov: rename line_next to next_file_fn in function_info

* gcov.c (output_intermediate_file): Rename
function_info::line_next to next_file_fn.
(process_file): Likewise.
(read_graph_file): Likewise.
(accumulate_line_counts): Likewise.
(output_lines): Likewise.

From-SVN: r239168

8 years agore PR c++/68724 (ice in unify, at cp/pt.c:19902)
Nathan Sidwell [Fri, 5 Aug 2016 12:21:46 +0000 (12:21 +0000)]
re PR c++/68724 (ice in unify, at cp/pt.c:19902)

PR c++/68724
* pt.c (unify): TRAIT_EXPR is an expr.

PR c++/68724
* g++.dg/cpp0x/pr68724.C: New.

From-SVN: r239167

8 years agoUse __invoke in std::function internals
Jonathan Wakely [Fri, 5 Aug 2016 09:00:34 +0000 (10:00 +0100)]
Use __invoke in std::function internals

* include/std/functional (__callable_functor): Remove.
(_Function_handler::_M_invoke): Use __invoke instead of
__callable_functor or mem_fn.
(function::_Callable): Use lvalue in result_of expression.
(function): Remove TODO comments about allocators.
* testsuite/20_util/function/cons/refqual.cc: New test.

From-SVN: r239166

8 years agoivopt_5.c: Make robust against edge swapping.
Richard Biener [Fri, 5 Aug 2016 08:52:22 +0000 (08:52 +0000)]
ivopt_5.c: Make robust against edge swapping.

2016-08-05  Richard Biener  <rguenther@suse.de>

* gcc.dg/tree-ssa/ivopt_5.c: Make robust against edge swapping.

From-SVN: r239165

8 years agotree-ssa-threadupdate.c (thread_block_1): Remove unnecessary restriction on threading...
Richard Biener [Fri, 5 Aug 2016 08:00:00 +0000 (08:00 +0000)]
tree-ssa-threadupdate.c (thread_block_1): Remove unnecessary restriction on threading to a loop header.

2016-08-05  Richard Biener  <rguenther@suse.de>

* tree-ssa-threadupdate.c (thread_block_1): Remove unnecessary
restriction on threading to a loop header.

From-SVN: r239164

8 years agotree-cfgcleanup.c (tree_forwarder_block_p): Use bb_loop_header_p.
Richard Biener [Fri, 5 Aug 2016 07:41:45 +0000 (07:41 +0000)]
tree-cfgcleanup.c (tree_forwarder_block_p): Use bb_loop_header_p.

2016-08-05  Richard Biener  <rguenther@suse.de>

* tree-cfgcleanup.c (tree_forwarder_block_p): Use bb_loop_header_p.
* cfghooks.c (force_nonfallthru): If we ended up splitting a latch
adjust loop info accordingly.

From-SVN: r239163

8 years agotree-vrp.c (extract_range_basic): Check cfun->after_inlining before folding call...
Kugan Vivekanandarajah [Fri, 5 Aug 2016 02:47:27 +0000 (02:47 +0000)]
tree-vrp.c (extract_range_basic): Check cfun->after_inlining before folding call to __builtin_constant_p with...

gcc/ChangeLog:

2016-08-05  Kugan Vivekanandarajah  <kuganv@linaro.org>

* tree-vrp.c (extract_range_basic): Check cfun->after_inlining
before folding call to __builtin_constant_p with parameters to false.

From-SVN: r239162

8 years ago[RS6000] rs6000_preferred_reload_class
Alan Modra [Fri, 5 Aug 2016 01:29:05 +0000 (10:59 +0930)]
[RS6000] rs6000_preferred_reload_class

* config/rs6000/rs6000.c (rs6000_preferred_reload_class): Delete
code accidentally committed 2016-05-02 providing class when given
NO_REGS.

From-SVN: r239161

8 years agoDaily bump.
GCC Administrator [Fri, 5 Aug 2016 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r239160

8 years agoTeach VRP to truncate the case ranges of a switch
Patrick Palka [Fri, 5 Aug 2016 00:07:16 +0000 (00:07 +0000)]
Teach VRP to truncate the case ranges of a switch

gcc/ChangeLog:

* tree-vrp.c (simplify_switch_using_ranges): Try to truncate
the case label ranges that partially overlap with OP's value
range.

gcc/testsuite/ChangeLog:

* gcc.dg/tree-ssa/vrp107.c: New test.
* gcc.dg/tree-ssa/vrp108.c: New test.
* gcc.dg/tree-ssa/vrp109.c: New test.

From-SVN: r239157

8 years agore PR target/72805 (AVX512: invalid code generation involving masks)
Uros Bizjak [Thu, 4 Aug 2016 21:14:39 +0000 (23:14 +0200)]
re PR target/72805 (AVX512: invalid code generation involving masks)

PR target/72805
* config/i386/avx512fintrin.h (_mm512_cmp_epi32_mask) [!__OPTIMIZE__]:
Cast builtin function result to __mmask16 instead of __mmask8.
(_mm512_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto.
(_mm512_mask_cmp_epi32_mask) [!__OPTIMIZE__]: Ditto.
(_mm512_mask_cmp_epu32_mask) [!__OPTIMIZE__]: Ditto.

From-SVN: r239152

8 years agoselftest.h: Add ASSERT_TRUE_AT and ASSERT_FALSE_AT
David Malcolm [Thu, 4 Aug 2016 21:12:52 +0000 (21:12 +0000)]
selftest.h: Add ASSERT_TRUE_AT and ASSERT_FALSE_AT

gcc/ChangeLog:
* selftest.h (ASSERT_TRUE): Reimplement in terms of...
(ASSERT_TRUE_AT): New macro.
(ASSERT_FALSE): Reimplement in terms of...
(ASSERT_FALSE_AT): New macro.
(ASSERT_STREQ_AT): Fix typo in comment.

From-SVN: r239151

8 years agopr70920-4.c: Move dg-require-effective-target before dg-options.
Prathamesh Kulkarni [Thu, 4 Aug 2016 20:51:32 +0000 (20:51 +0000)]
pr70920-4.c: Move dg-require-effective-target before dg-options.

2016-08-04  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

testsuite/
* gcc.dg/pr70920-4.c: Move dg-require-effective-target before
dg-options.

From-SVN: r239150

8 years agopr71078-1.c: Remove double and long double test-cases.
Prathamesh Kulkarni [Thu, 4 Aug 2016 20:37:51 +0000 (20:37 +0000)]
pr71078-1.c: Remove double and long double test-cases.

2016-08-04  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

testsuite/
* gcc.dg/tree-ssa/pr71078-1.c: Remove double and long double
test-cases.
* gcc.dg/tree-ssa/pr71078-1-double.c: New test-case.
* gcc.dg/tree-ssa/pr71078-1-long-double.c: Likewise.
* gcc.dg/tree-ssa/pr71078-2.c: Remove double and long double
test-cases.
* gcc.dg/tree-ssa/pr71078-2-double.c: New test-case.
* gcc.dg/tree-ssa/pr71078-2-long-double.c: Likewise.
* gcc.dg/tree-ssa/pr71078-3.c: Add require-effective-check for
large_double.

From-SVN: r239149

8 years agore PR c++/72800 (ICE on invalid C++14 code with initialized lambda capture: tree...
Paolo Carlini [Thu, 4 Aug 2016 19:22:58 +0000 (19:22 +0000)]
re PR c++/72800 (ICE on invalid C++14 code with initialized lambda capture: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in add_capture, at cp/lambda.c:505)

/cp
2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/72800
* lambda.c (add_capture): Check lambda_capture_field_type return
value for error_mark_node.

/testsuite
2016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/72800
* g++.dg/cpp1y/lambda-ice1.C: New.

From-SVN: r239148

8 years agoFix ICE on invalid variable template instantiation (PR c++/72759)
Patrick Palka [Thu, 4 Aug 2016 19:14:32 +0000 (19:14 +0000)]
Fix ICE on invalid variable template instantiation (PR c++/72759)

gcc/cp/ChangeLog:

PR c++/72759
* pt.c (tsubst_qualified_id): Return error_mark_node if
template_args is error_mark_node.

gcc/testsuite/ChangeLog:

PR c++/72759
* g++.dg/cpp1y/pr72759.C: New test.

From-SVN: r239147

8 years agoDesignate the widest case label to be the default label
Patrick Palka [Thu, 4 Aug 2016 18:11:08 +0000 (18:11 +0000)]
Designate the widest case label to be the default label

gcc/ChangeLog:

* gimple.c (preprocess_case_label_vec_for_gimple): When the case
labels are exhaustive, designate the label with the widest
range to be the default label.

gcc/testsuite/ChangeLog:

* gcc.dg/switch-10.c: New test.

From-SVN: r239146

8 years agoDefine std::is_callable and std::is_nothrow_callable
Jonathan Wakely [Thu, 4 Aug 2016 18:02:56 +0000 (19:02 +0100)]
Define std::is_callable and std::is_nothrow_callable

* doc/xml/manual/status_cxx2017.xml: Update status table.
* include/std/functional (__inv_unwrap): Move to <type_traits>.
(__invoke_impl): Remove exception specifications.
(__invoke, invoke): Add exception specifications using
__is_nothrow_callable.
* include/std/type_traits (__inv_unwrap): Move from <functional>.
(__is_callable_impl, __call_is_nt, __call_is_nothrow): New helpers.
(__is_callable, __is_nothrow_callable): New traits.
(is_callable, is_callable_v): New C++17 traits.
(is_nothrow_callable, is_nothrow_callable_v): Likewise.
* testsuite/20_util/is_callable/requirements/
explicit_instantiation.cc: New test.
* testsuite/20_util/is_callable/requirements/
explicit_instantiation_ext.cc: New test.
* testsuite/20_util/is_callable/requirements/typedefs.cc: New test.
* testsuite/20_util/is_callable/requirements/typedefs_ext.cc: New
test.
* testsuite/20_util/is_callable/value.cc: New test.
* testsuite/20_util/is_callable/value_ext.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/
explicit_instantiation.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/
explicit_instantiation_ext.cc: New test.
* testsuite/20_util/is_nothrow_callable/requirements/typedefs.cc:
New test.
* testsuite/20_util/is_nothrow_callable/requirements/typedefs_ext.cc:
New test.
* testsuite/20_util/is_nothrow_callable/value.cc: New test.
* testsuite/20_util/is_nothrow_callable/value_ext.cc: New test.

From-SVN: r239145

8 years agoruntime: fix incorrectly commented out code in heapdump.c
Ian Lance Taylor [Thu, 4 Aug 2016 17:21:23 +0000 (17:21 +0000)]
runtime: fix incorrectly commented out code in heapdump.c

    Reviewed-on: https://go-review.googlesource.com/25490

From-SVN: r239144

8 years agore PR c++/71696 (Libiberty Demangler segfaults (6))
Marcel Böhme [Thu, 4 Aug 2016 16:53:18 +0000 (16:53 +0000)]
re PR c++/71696 (Libiberty Demangler segfaults (6))

2016-08-04  Marcel Böhme  <boehme.marcel@gmail.com>

PR c++/71696
* cplus-dem.c: Prevent infinite recursion when there is a cycle
in the referencing of remembered mangled types.
(work_stuff): New stack to keep track of the remembered mangled
types that are currently being processed.
(push_processed_type): New method to push currently processed
remembered type onto the stack.
(pop_processed_type): New method to pop currently processed
remembered type from the stack.
(work_stuff_copy_to_from): Copy values of new variables.
(delete_non_B_K_work_stuff): Free stack memory.
(demangle_args): Push/Pop currently processed remembered type.
(do_type): Do not demangle a cyclic reference and push/pop
referenced remembered type.

From-SVN: r239143

8 years ago[Patch obvious testsuite] Remove duplicate body from pr70903.c
James Greenhalgh [Thu, 4 Aug 2016 16:48:34 +0000 (16:48 +0000)]
[Patch obvious testsuite] Remove duplicate body from pr70903.c

* gcc.c-torture/execute/pr70903.c: Remove duplicate body.

From-SVN: r239142

8 years agotext/template: reduce maxExecDepth for gccgo
Ian Lance Taylor [Thu, 4 Aug 2016 16:48:28 +0000 (16:48 +0000)]
text/template: reduce maxExecDepth for gccgo

    When using gccgo on systems without full support for split stacks a
    recursive template can overrun the available stack space.  Reduce the
    limit from 100000 to 10000 to make this less likely.  It's still high
    enough that real uses will work.

    Reviewed-on: https://go-review.googlesource.com/25467

From-SVN: r239141

8 years agocompiler: include "go-system.h" in escape.cc
Ian Lance Taylor [Thu, 4 Aug 2016 16:23:09 +0000 (16:23 +0000)]
compiler: include "go-system.h" in escape.cc

    Patch from Rainer Orth.

    Reviewed-on: https://go-review.googlesource.com/25466

From-SVN: r239140

8 years agoPR c++/72415 - member template with fold-expression constraint
Jason Merrill [Thu, 4 Aug 2016 16:06:22 +0000 (12:06 -0400)]
PR c++/72415 - member template with fold-expression constraint

* pt.c (tsubst_pack_expansion): Pull a single pack expansion out
of the TREE_VEC.

From-SVN: r239138

8 years agoRename TYPE_ANONYMOUS_P to TYPE_UNNAMED_P.
Jason Merrill [Thu, 4 Aug 2016 16:06:17 +0000 (12:06 -0400)]
Rename TYPE_ANONYMOUS_P to TYPE_UNNAMED_P.

* cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
(TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
* class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.

From-SVN: r239137

8 years agoPR c++/72796 - wrong resolution of scoped method call.
Jason Merrill [Thu, 4 Aug 2016 16:06:09 +0000 (12:06 -0400)]
PR c++/72796 - wrong resolution of scoped method call.

* typeck.c (finish_class_member_access_expr): Avoid stripping
SCOPE_REF to dependent base.

From-SVN: r239136

8 years agoaarch64.c (thunderx_vector_cost): New variable.
Andrew Pinski [Thu, 4 Aug 2016 16:00:24 +0000 (16:00 +0000)]
aarch64.c (thunderx_vector_cost): New variable.

2016-08-04  Andrew Pinski  <apinski@cavium.com>

        * config/aarch64/aarch64.c (thunderx_vector_cost): New variable.
        (thunderx_tunings): Use thunderx_vector_cost instead of
        generic_vector_cost.

From-SVN: r239135

8 years agoFix GNU coding style in gcov.c
Martin Liska [Thu, 4 Aug 2016 15:05:35 +0000 (17:05 +0200)]
Fix GNU coding style in gcov.c

* gcov.c (main): Fix GNU coding style.
(output_intermediate_file): Likewise.
(process_file): Likewise.
(generate_results): Likewise.
(release_structures): Likewise.
(create_file_names): Likewise.
(find_source): Likewise.
(read_graph_file): Likewise.
(find_exception_blocks): Likewise.
(canonicalize_name): Likewise.
(make_gcov_file_name): Likewise.
(mangle_name): Likewise.
(accumulate_line_counts): Likewise.
(output_branch_count): Likewise.
(read_line): Likewise.

From-SVN: r239134

8 years agoRework C/C++ OpenACC routine parsing
Thomas Schwinge [Thu, 4 Aug 2016 13:35:30 +0000 (15:35 +0200)]
Rework C/C++ OpenACC routine parsing

gcc/c/
* c-parser.c (struct oacc_routine_data): Add error_seen and
fndecl_seen members.
(c_finish_oacc_routine): Use these.
(c_parser_declaration_or_fndef): Adjust.
(c_parser_oacc_routine): Likewise.  Support more C language
constructs, and improve diagnostics.  Move pragma context
checking...
(c_parser_pragma): ... here.
gcc/cp/
* parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
(cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
(cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
Simplify code, and improve diagnostics.
(cp_parser_oacc_routine): Likewise.  Move pragma context
checking...
(cp_parser_pragma): ... here.
gcc/testsuite/
* c-c++-common/goacc/routine-5.c: Update.

From-SVN: r239128

8 years agoC/C++: Simplify handling of location information for OpenACC routine directives
Thomas Schwinge [Thu, 4 Aug 2016 13:35:19 +0000 (15:35 +0200)]
C/C++: Simplify handling of location information for OpenACC routine directives

gcc/c/
* c-parser.c (struct oacc_routine_data): New.
(c_parser_declaration_or_fndef, c_parser_oacc_routine): Use it.
Simplify code.
(c_finish_oacc_routine): Likewise.  Don't attach clauses to "omp
declare target" attribute.
gcc/cp/
* parser.h (struct cp_omp_declare_simd_data): New.
(struct cp_parser): Use it for oacc_routine member.
* parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
(cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
Use it.  Simplify code.
(cp_parser_new): Initialize all members pointing to special
parsing data structures.
(cp_parser_cilk_simd_fn_vector_attrs): Initialize
parser->cilk_simd_fn_info->clauses.
(cp_parser_omp_declare_simd): Initialize
parser->omp_declare_simd->clauses.
(cp_parser_late_parsing_omp_declare_simd): Simplify code.

From-SVN: r239127

8 years agoC++ OpenACC routine directive testing: templated, and "auto", trailing return type...
Thomas Schwinge [Thu, 4 Aug 2016 13:35:10 +0000 (15:35 +0200)]
C++ OpenACC routine directive testing: templated, and "auto", trailing return type syntax

libgomp/
* testsuite/libgomp.oacc-c++/routine-1-auto.C: New file.
* testsuite/libgomp.oacc-c++/routine-1-template-auto.C: Likewise.
* testsuite/libgomp.oacc-c++/routine-1-template-trailing-return-type.C:
Likewise.
* testsuite/libgomp.oacc-c++/routine-1-template.C: Likewise.
* testsuite/libgomp.oacc-c++/routine-1-trailing-return-type.C:
Likewise.
* testsuite/libgomp.oacc-c-c++-common/routine-1.c: Adjust.

From-SVN: r239126

8 years agoMake libgomp.oacc-c-c++-common/crash-1.c a "link" test, and don't hardcode -O0
Thomas Schwinge [Thu, 4 Aug 2016 13:34:57 +0000 (15:34 +0200)]
Make libgomp.oacc-c-c++-common/crash-1.c a "link" test, and don't hardcode -O0

libgomp/
* testsuite/libgomp.oacc-c-c++-common/crash-1.c: Make it a "link"
test, and don't hardcode -O0.

From-SVN: r239125

8 years agoUpdate C++17 library implementation status table
Jonathan Wakely [Thu, 4 Aug 2016 13:33:02 +0000 (14:33 +0100)]
Update C++17 library implementation status table

* doc/xml/manual/status_cxx2017.xml: Update C++17 status table.
* doc/html/manual/status.html: Regenerate.

From-SVN: r239124

8 years ago016-08-04 Bernd Edlinger <bernd.edlinger@hotmail.de>
Bernd Edlinger [Thu, 4 Aug 2016 13:23:36 +0000 (13:23 +0000)]
016-08-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR rtl-optimization/71779
        * emit-rtl.c (set_reg_attrs_from_value): Only propagate REG_POINTER,
        if the value was sign-extended according to POINTERS_EXTEND_UNSIGNED
        or if it was truncated.

From-SVN: r239123

8 years agore PR target/70903 (wrong code with bfi @ aarch64 with -Os)
Bernd Edlinger [Thu, 4 Aug 2016 13:20:57 +0000 (13:20 +0000)]
re PR target/70903 (wrong code with bfi @ aarch64 with -Os)

2016-08-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR rtl-optimization/70903
        * cse.c (cse_insn): If DEST is a paradoxical SUBREG, don't record DEST.

testsuite:
2016-08-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR rtl-optimization/70903
        * gcc.c-torture/execute/pr70903.c: New test.

From-SVN: r239122

8 years agoDefine std::enable_shared_from_this::weak_from_this
Jonathan Wakely [Thu, 4 Aug 2016 12:33:10 +0000 (13:33 +0100)]
Define std::enable_shared_from_this::weak_from_this

* testsuite/20_util/enable_shared_from_this/members/reinit.cc: Use
effective target not dg-options. Move check for feature-test macro to:
* testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
New test.

From-SVN: r239121

8 years agoSimplify std::__invoke_impl definitions
Jonathan Wakely [Thu, 4 Aug 2016 11:09:29 +0000 (12:09 +0100)]
Simplify std::__invoke_impl definitions

* include/std/functional (_Unwrap): Rename to __inv_unwrap.
(__invfwd): Adjust.
(__invoke_impl): Remove unused template parameters.
* testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
parameter.
* testsuite/20_util/function_objects/invoke/ref_ext.cc: Copy 59768.cc
and test __invoke extension for C++11.

From-SVN: r239120

8 years agoUse TESTING_IN_BUILD_TREE in params.exp
Martin Liska [Thu, 4 Aug 2016 11:06:37 +0000 (13:06 +0200)]
Use TESTING_IN_BUILD_TREE in params.exp

* gcc.dg/params/params.exp: Replace file exists with
TESTING_IN_BUILD_TREE.

From-SVN: r239119

8 years agotree-inline.c (remap_ssa_name): Check for POINTER_TYPE_P before accessing SSA_NAME_PT...
Kugan Vivekanandarajah [Thu, 4 Aug 2016 09:15:03 +0000 (09:15 +0000)]
tree-inline.c (remap_ssa_name): Check for POINTER_TYPE_P before accessing SSA_NAME_PTR_INFO.

gcc/ChangeLog:

2016-08-04  Kugan Vivekanandarajah  <kuganv@linaro.org>

* tree-inline.c (remap_ssa_name): Check for POINTER_TYPE_P before
accessing SSA_NAME_PTR_INFO.

From-SVN: r239118

8 years agore PR target/70677 (Suboptimal cond on AVR: unneeded stack frame)
Georg-Johann Lay [Thu, 4 Aug 2016 07:52:38 +0000 (07:52 +0000)]
re PR target/70677 (Suboptimal cond on AVR: unneeded stack frame)

PR 70677
* common/config/avr/avr-common.c (avr_option_optimization_table)
[OPT_LEVELS_ALL]: Turn off -fcaller-saves.

From-SVN: r239117

8 years agore PR target/55181 (Expensive shift loop where a bit-testing instruction could be...
Georg-Johann Lay [Thu, 4 Aug 2016 07:50:53 +0000 (07:50 +0000)]
re PR target/55181 (Expensive shift loop where a bit-testing instruction could be used)

PR 55181
* config/avr/avr.md: New pattern to work around do_store_flag
generating shift instructions for bit extractions.

From-SVN: r239116

8 years agore PR c++/70229 (error: constexpr constructor does not have empty body)
Marek Polacek [Thu, 4 Aug 2016 07:47:50 +0000 (07:47 +0000)]
re PR c++/70229 (error: constexpr constructor does not have empty body)

PR c++/70229
* constexpr.c (check_constexpr_ctor_body_1): Allow typedef
declarations.

* g++.dg/cpp0x/constexpr-ctor19.C: New test.

From-SVN: r239115

8 years agore PR rtl-optimization/71984 (wrong code with -O -mavx512cd)
Richard Biener [Thu, 4 Aug 2016 07:02:47 +0000 (07:02 +0000)]
re PR rtl-optimization/71984 (wrong code with -O -mavx512cd)

2016-08-04  Richard Biener  <rguenther@suse.de>

PR middle-end/71984
* gcc.dg/torture/pr71984.c: Guard correctness check for
little-endian.

From-SVN: r239114

8 years agotree-vrp.c (set_value_range): Use vrp_equiv_obstack with BITMAP_ALLOC.
Kugan Vivekanandarajah [Thu, 4 Aug 2016 04:20:01 +0000 (04:20 +0000)]
tree-vrp.c (set_value_range): Use vrp_equiv_obstack with BITMAP_ALLOC.

gcc/ChangeLog:

2016-08-04  Kugan Vivekanandarajah  <kuganv@linaro.org>

* tree-vrp.c (set_value_range): Use vrp_equiv_obstack with
BITMAP_ALLOC.
(add_equivalence): Likewise.
(get_value_range): Allocate value range with vrp_value_range_pool.
(vrp_initialize): Initialize vrp_equiv_obstack for equiv allocation.
(vrp_finalize): Relase vrp_equiv_obstack and vrp_value_range_pool.

From-SVN: r239113

8 years agoDaily bump.
GCC Administrator [Thu, 4 Aug 2016 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r239112

8 years agoescape: Enable escape analysis in gccgo.
Ian Lance Taylor [Thu, 4 Aug 2016 00:10:35 +0000 (00:10 +0000)]
escape: Enable escape analysis in gccgo.

    Off by default, enabled through -fgo-optimize-allocs.

    Reviewed-on: https://go-review.googlesource.com/22378

From-SVN: r239109

8 years agors6000.c (rs6000_option_override_internal): Make LRA the default for the rs6000 port.
Peter Bergner [Wed, 3 Aug 2016 23:13:20 +0000 (18:13 -0500)]
rs6000.c (rs6000_option_override_internal): Make LRA the default for the rs6000 port.

* config/rs6000/rs6000.c (rs6000_option_override_internal): Make LRA
the default for the rs6000 port.

From-SVN: r239105

8 years agogotest: multiple +build lines must all be true
Ian Lance Taylor [Wed, 3 Aug 2016 22:46:06 +0000 (22:46 +0000)]
gotest: multiple +build lines must all be true

    The code that handled +build lines did not correctly require them to all
    be true.  While looking into this I discovered that multiple +build
    lines were mishandled in a different way, because the shell does not
    preseve line breaks in backquoted data.  Look for the +build token to
    tell us when we are switching from one +build line to another.

    Reviewed-on: https://go-review.googlesource.com/25460

From-SVN: r239100

8 years ago20160802-1.c: New testcase.
Andrew Pinski [Wed, 3 Aug 2016 22:37:53 +0000 (22:37 +0000)]
20160802-1.c: New testcase.

2016-08-03  Andrew Pinski  <apinski@cavium.com>

        * gcc.c-torture/compile/20160802-1.c: New testcase.

From-SVN: r239099

8 years agocompiler: improve type caching for interface types
Ian Lance Taylor [Wed, 3 Aug 2016 20:01:09 +0000 (20:01 +0000)]
compiler: improve type caching for interface types

    Add a cached to Interface_info_expression::do_type() so as to reuse
    previously created interface types. This change reduces gccgo peak heap
    usage when compiling the "fmt" package from around 16mb to around 10mb.

    Fixes golang/go#16334

    Reviewed-on: https://go-review.googlesource.com/24890

From-SVN: r239095

8 years agoDefine feature-test macro for std::enable_shared_from_this
Jonathan Wakely [Wed, 3 Aug 2016 19:10:06 +0000 (20:10 +0100)]
Define feature-test macro for std::enable_shared_from_this

* include/bits/shared_ptr_base.h (__cpp_lib_enable_shared_from_this):
Define feature-test macro.
* testsuite/20_util/enable_shared_from_this/members/reinit.cc: Test
for the macro.

From-SVN: r239094

8 years agoDefine std::shared_ptr::weak_type
Jonathan Wakely [Wed, 3 Aug 2016 19:09:57 +0000 (20:09 +0100)]
Define std::shared_ptr::weak_type

* include/bits/shared_ptr.h (shared_ptr::weak_type): Define.
* include/bits/shared_ptr_base.h (__shared_ptr::weak_type): Define.
* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust dg-error.
* testsuite/20_util/shared_ptr/requirements/weak_type.cc: New test.
* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.

From-SVN: r239093

8 years agore PR middle-end/71876 (longjmp is miscompiled with -ffreestanding)
Bernd Edlinger [Wed, 3 Aug 2016 19:05:45 +0000 (19:05 +0000)]
re PR middle-end/71876 (longjmp is miscompiled with -ffreestanding)

2016-08-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        PR middle-end/71876
        * calls.c (special_function_p): Remove special handling of
        "setjmp_syscall", "qsetjmp", "longjmp", "siglongjmp" and the
        prefix "__x".  Recognize "savectx", "vfork" and "getcontext" only
        without prefix.  Remove potentially unsafe ECF_LEAF and ECF_NORETURN.

From-SVN: r239092

8 years agore PR rtl-optimization/72778 (internal compiler error: in create_pre_exit, at mode...
Vladimir Makarov [Wed, 3 Aug 2016 18:54:49 +0000 (18:54 +0000)]
re PR rtl-optimization/72778 (internal compiler error: in create_pre_exit, at mode-switching.c:451)

2016-08-03  Vladimir Makarov  <vmakarov@redhat.com>

PR middle-end/72778
* lra-spills.c (regno_in_use_p): Check bb and regno modification.
Don't stop on regular insns.

From-SVN: r239091