PR go/67968
compiler: Traverse types of call expressions.
https://gcc.gnu.org/PR67968 provides a test case that causes a gccgo
crash on valid code. The compiler failed to build the hash and equality
functions required for a type descriptor. The descriptor is for an
unnamed type that is being returned by a function imported from a
different package. The unnamed type is being implicitly converted to an
interface type by a return statement. The fix is to ensure that the
type of a call expression is always traversed.
Test case sent out for the master testsuite as
https://golang.org/cl/16532 .
From-SVN: r229642
When not using split stacks, libgo allocate large stacks for each
goroutine. On a 64-bit system, libgo allocates a maximum of 128G for
the Go heap, and allocates 4M for each stack. When the stacks are
allocated from the Go heap, the result is that a program can only create
32K goroutines, which is not enough for an active Go server. This patch
changes libgo to allocate the stacks using mmap directly, rather than
allocating them out of the Go heap. This change is only done for 64-bit
systems when not using split stacks. When using split stacks, the
stacks are allocated using mmap directly anyhow. On a 32-bit system,
there is no maximum size for the Go heap, or, rather, the maximum size
is the available address space anyhow.
Reviewed-on: https://go-review.googlesource.com/16531
From-SVN: r229636
This function is quite a puzzle; untangle it. No functional change.
2015-10-31 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Rewrite.
From-SVN: r229634
This one for TARGET_TOC && TARGET_MINIMAL_TOC. Without it, r30 is not
saved in the prologue for functions that do not use r30, but the register
is set later in the prologue anyhow. This made all java tests fail.
2015-10-31 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Use the
same condition for testing whether RS6000_PIC_OFFSET_TABLE_REGNUM is
live as for using it elsewhere, for TARGET_MINIMAL_TOC.
From-SVN: r229633
/cp
2015-10-31 Ville Voutilainen <ville.voutilainen@gmail.com>
Remove the implementation of N3994, terse range-for loops.
* parser.c (cp_parser_for_init_statement): Remove the parsing
of a terse range-for.
/testsuite
2015-10-31 Ville Voutilainen <ville.voutilainen@gmail.com>
Remove the implementation of N3994, terse range-for loops.
* g++.dg/cpp1z/range-for1.C: Remove.
From-SVN: r229632
* pt.c (for_each_template_parm_r): Use WALK_SUBTREE.
Return a meaningful value rather than error_mark_node.
(for_each_template_parm): Return a tree.
(uses_template_parms_level): Return bool.
* cp-tree.h: Adjust.
From-SVN: r229628
2015-10-31 Tom de Vries <tom@codesourcery.com>
* tree-ssa-structalias.c (ipa_pta_execute): Add extra arg to call to
create_function_info_for. Dump constraints generated during
create_function_info_for. Move intra_create_variable_infos call and
function-return-values-escape bit to ...
(create_function_info_for): ... here, and merge
intra_create_variable_infos call with argument loop. Add and handle
nonlocal_p parameter.
From-SVN: r229619
2015-10-31 Tom de Vries <tom@codesourcery.com>
* tree-ssa-structalias.c (create_function_info_for): Make sure prev_vi
updating is alap, and seperated from preceding code. Make sure
insert_vi_for_tree is seperated from surrounding code.
From-SVN: r229618
gcc/fortran/
* gfortran.h (gfc_omp_namespace): Add locus where member.
* openmp.c (gfc_match_omp_variable_list): Set where for each list
item found.
(resolve_omp_clauses): Remove where argument and use the where
gfc_omp_namespace member when reporting errors.
(resolve_omp_do): Update call to resolve_omp_clauses.
(resolve_oacc_loop): Likewise.
(gfc_resolve_oacc_directive): Likewise.
(gfc_resolve_omp_directive): Likewise.
(gfc_resolve_omp_declare_simd): Likewise.
gcc/testsuite/
* gfortran.dg/gomp/intentin1.f90: Adjust copyprivate warning.
From-SVN: r229609
2015-10-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/51993
* decl.c (gfc_set_constant_character_len): Convert gcc_assert into an
if-statement causing an early return leads to valid error message.
2015-10-15 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/51993
* gfortran.dg/pr51993.f90: New test.
From-SVN: r229594
2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/36192
* interface.c (get_expr_storage_size): Check for INTEGER type before
calling gmp routines.
2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/36192
* gfortran.dg/pr36192_1.f90: New test.
From-SVN: r229590
2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68154
* decl.c (add_init_expr_to_sym): if the char length in the typespec
is NULL, check for and use a constructor.
2015-10-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/68154
*gfortran.dg/pr68154.f90
From-SVN: r229588
sincos has always freed dominators at the end, but AFAICT they should
still be up-to-date. (In particular, gimple_purge_dead_eh_edges
updates the information.)
Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
gcc/
* tree-ssa-math-opts.c (pass_cse_sincos::execute): Don't free
CDI_DOMINATORS.
From-SVN: r229582
Most real.h routines used machine modes to specify the format of
an operation and converted that to a float_format * internally.
Some also had alternative versions that accepted a float_format *.
In an upcoming patch it seemed more convenient for the callers
I was adding to use float_format directly, since the callers need
to examine the format themselves for other reasons. This patch
therefore replaces the machine_mode arguments with a new class that
allows both machine modes and float_format pointers to be used.
Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
gcc/
* real.h (format_helper): New.
(real_convert, exact_real_truncate, real_from_string3, real_to_target)
(real_from_target, real_nan, real_2expN, real_value_truncate)
(significand_size, real_from_string2, exact_real_inverse)
(exact_real_inverse, real_powi, real_trunc, real_floor, real_ceil)
(real_round, real_isinteger, real_from_integer): Replace
machine_mode arguments with format_helper arguments.
* real.c (exact_real_inverse, real_from_string2, real_from_string3)
(real_from_integer, real_nan, real_2expN, real_convert)
(real_value_truncate, exact_real_truncate, real_to_target)
(real_from_target, significand_size, real_powi, real_trunc)
(real_floor, real_ceil, real_round, real_isinteger): Replace
machine_mode arguments with format_helper arguments.
(real_to_target_fmt, real_from_target_fmt): Delete.
* dfp.h (decimal_real_convert): Replace mode argument with real_format.
* dfp.c (decimal_to_binary, decimal_real_convert): Replace mode
argument with real_format.
* builtins.c (do_real_to_int_conversion): Update type of fn argument.
gcc/java/
* jcf-parse.c (get_constant): Use real_from_target rather than
real_from_target_fmt.
From-SVN: r229581
fixed-value.c was passing a fixed-point mode to the floating-point
real_2expN routine. That didn't cause a problem in practice because
all real_2expN did was check for decimal float modes, but it triggered
a failure with an upcoming patch.
Tested on x86_64-linux-gnu, arm-linux-gnueabi and aarch64-linux-gnu.
gcc/
* fixed-value.c (check_real_for_fixed_mode, fixed_from_string)
(fixed_to_decimal, fixed_convert_from_real)
(real_convert_from_fixed): Fix mode arguments to real_2expN.
From-SVN: r229580