Thomas Koenig [Wed, 13 Mar 2019 07:21:33 +0000 (07:21 +0000)]
[multiple changes]
2019-03-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/66695
PR fortran/77746
PR fortran/79485
* gfortran.h (gfc_symbol): Add bind_c component.
(gfc_get_gsymbol): Add argument bind_c.
* decl.c (add_global_entry): Add bind_c argument to
gfc_get_symbol.
* parse.c (parse_block_data): Likewise.
(parse_module): Likewise.
(add_global_procedure): Likewise.
(add_global_program): Likewise.
* resolve.c (resolve_common_blocks): Likewise.
(resolve_global_procedure): Likewise.
(gfc_verify_binding_labels): Likewise.
* symbol.c (gfc_get_gsymbol): Add argument bind_c. Set bind_c
in gsym.
* trans-decl.c (gfc_get_module_backend_decl): Add bind_c argument
to gfc_get_symbol.
(gfc_get_extern_function_decl): If the sym has a binding label
and it cannot be found in the global symbol tabel, it is the wrong
one and vice versa.
2019-03-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/66695
PR fortran/77746
PR fortran/79485
* gfortran.dg/binding_label_tests_30.f90: New test.
* gfortran.dg/binding_label_tests_31.f90: New test.
* gfortran.dg/binding_label_tests_32.f90: New test.
* gfortran.dg/binding_label_tests_33.f90: New test.
Ian Lance Taylor [Wed, 13 Mar 2019 05:12:05 +0000 (05:12 +0000)]
compiler: compare parse methods when indexing interface types for export
This change fixes a bug in which two interface types were being
incorrectly commoned (considered identical) in the initial stages of
writing out types to export data. The indexer does a walk to collect
candidates for export, inserting types into a table to eliminate
duplicates; as part of this process a local interface type T1 was
being commoned with a different interface type T2. This caused a cycle
in the exported type graph due to the way embedded interfaces are
handled.
The fix was to add a new flag to the Type::is_identical utility
routine to request that interface type comparison be done by examining
the original parse methods, as opposed to the expanded method set,
then use the new flag when creating the hash map for the exporter.
Ian Lance Taylor [Wed, 13 Mar 2019 04:43:33 +0000 (04:43 +0000)]
compiler: add new debugging helper function debug_go_type()
Add a new debugging utility routine debug_go_type(), intended to
display the contents of a Type object in a way useful to debugging
a run of the compiler. Prior to this the only useful alternative
for debugging types was invoking the mangled_name() method, which
has problems (for example, won't work on interface types prior
to finalizing of methods).
This is a "deep" dump, meaning that all types reachable from the
type passed to debug_go_type() will be printed out. Example:
Robin Dapp [Tue, 12 Mar 2019 17:12:56 +0000 (17:12 +0000)]
S/390: Perform more aggressive inlining
This patch sets the inlining parameters for z13 and later to rather
aggressive values in response to PR85103 that caused performance
regressions in SPEC2006's sjeng and gobmk benchmarks.
Robin Dapp [Tue, 12 Mar 2019 17:08:27 +0000 (17:08 +0000)]
S/390: Rework instruction scheduling.
This patch set adds new pipeline descriptions for z13 and z14. Based
on that, the scoring and some properties are handled differently in
the scheduler hooks.
The patch before (r269620) also belongs to this set but I accidentally
applied it separately.
Iain Buclaw [Tue, 12 Mar 2019 16:31:48 +0000 (16:31 +0000)]
Use libiberty's lrealpath to avoid portability problems.
The dmd front-end function FileName::canonicalName could be called
during the semantic pass of import("file") expressions, so still
requires that realpath() be redefined.
Initial patch by Rainer Orth.
gcc/d/ChangeLog:
2019-03-12 Iain Buclaw <ibuclaw@gdcproject.org>
PR d/87866
* d-system.h (realpath): Redefine as lrealpath.
Paul Thomas [Tue, 12 Mar 2019 13:40:51 +0000 (13:40 +0000)]
re PR fortran/89363 (RANK incorrect for unallocated allocatable)
2019-03-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/89363
PR fortran/89364
* trans-expr.c (set_dtype_for_unallocated): New function.
(gfc_conv_gfc_desc_to_cfi_desc): Call it for allocatable and
pointer arguments.
(gfc_conv_procedure_call): Likewise. Also, set the ubound of
the final dimension to -1 for assumed rank formal args that are
associated with assumed size arrays.
* trans-intrinsic.c (gfc_conv_intrinsic_bound): Return -1 for
the final dimension of assumed rank entities that are argument
associated with assumed size arrays.
(gfc_conv_intrinsic_shape): Likewise return -1 for the final
dimension of the shape intrinsic.
2019-03-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/89363
* gfortran.dg/assumed_rank_16.f90: New test.
PR fortran/89364
* gfortran.dg/assumed_rank_17.f90: New test.
Fixes C++ mangling for substituted basic types that are target-specific.
Introduces a new method that currently does nothing, but could in future
make use of flag_abi_version as extern(C++) integration improves in
latter versions of the D front-end.
Jakub Jelinek [Tue, 12 Mar 2019 10:07:25 +0000 (11:07 +0100)]
re PR target/52726 (Composed error message will not get translated)
PR target/52726
* config/s390/s390.md (tabort): Use %wd instead of
HOST_WIDE_INT_PRINT_DEC in error message, reword to avoid two capital
letters and periods.
* config/tilepro/tilepro.c (tilepro_print_operand): Use %wd in
output_operand_lossage instead of HOST_WIDE_INT_PRINT_DEC, replace
's with %< and %>.
Jakub Jelinek [Mon, 11 Mar 2019 22:27:39 +0000 (23:27 +0100)]
re PR fortran/89651 (OpenMP private array uninitialized warning with -O flag)
PR fortran/89651
* trans-openmp.c (gfc_omp_clause_default_ctor): Set TREE_NO_WARNING
on decl if adding COND_EXPR for allocatable.
(gfc_omp_clause_copy_ctor): Set TREE_NO_WARNING on dest.
Jakub Jelinek [Mon, 11 Mar 2019 21:58:43 +0000 (22:58 +0100)]
re PR middle-end/89655 (GCC crashes building linux kernel for arm 32-bit (culprit r269453))
PR middle-end/89655
PR bootstrap/89656
* vr-values.c (vr_values::update_value_range): If
old_vr->varying_p (), don't update it, make new_vr also VARYING
and return false.
* gcc-interface/misc.c (gnat_post_options) Wrap an option name
in a string format message and fix GNU coding style.:
2019-03-11 Martin Liska <mliska@suse.cz>
* c-attribs.c (handle_nocf_check_attribute): Wrap an option name
in a string format message and fix GNU coding style.
* c-common.c (vector_types_convertible_p): Likewise.
(c_build_vec_perm_expr): Likewise.
* c-indentation.c (get_visual_column): Likewise.
* c-opts.c (c_common_handle_option): Likewise.
(c_common_post_options): Likewise.
(sanitize_cpp_opts): Likewise.
* c-pch.c (c_common_pch_pragma): Likewise.
* c-pragma.c (handle_pragma_pack): Likewise.
2019-03-11 Martin Liska <mliska@suse.cz>
* c-decl.c (check_for_loop_decls): Wrap an option name
in a string format message and fix GNU coding style.
* c-parser.c (c_parser_declspecs): Likewise.
2019-03-11 Martin Liska <mliska@suse.cz>
* decl.c (match_record_decl): Wrap an option name
in a string format message and fix GNU coding style.
(gfc_match_pointer): Likewise.
* expr.c (find_array_section): Likewise.
* intrinsic.c (gfc_is_intrinsic): Likewise.
* options.c (gfc_post_options): Likewise.
* primary.c (match_integer_constant): Likewise.
* trans-common.c (translate_common): Likewise.
2019-03-11 Martin Liska <mliska@suse.cz>
* lto-lang.c (lto_post_options): Wrap an option name
in a string format message and fix GNU coding style.
* lto-symtab.c (lto_symtab_merge_decls_2): Likewise.
2019-03-11 Martin Liska <mliska@suse.cz>
Jonathan Wakely [Mon, 11 Mar 2019 13:46:05 +0000 (13:46 +0000)]
PR libstdc++/89629 fix _Hash_bytes for lengths > INT_MAX
PR libstdc++/89629
* libsupc++/hash_bytes.cc [__SIZEOF_SIZE_T__ == 8] (_Hash_bytes):
Use correct type for len_aligned.
* testsuite/20_util/hash/89629.cc: New test.
Andreas Krebbel [Mon, 11 Mar 2019 13:30:35 +0000 (13:30 +0000)]
S/390: Fix immediate vector operands for some builtins.
This fixes a problem with vec_add/sub_u128 builtins. The
s390_expand_builtin backend function is supposed to convert the
operand to TImode *AND* load it into a vector register. The current
implementation did only the conversion and gave up then.
gcc/ChangeLog:
2019-03-11 Andreas Krebbel <krebbel@linux.ibm.com>
* config/s390/s390.c (s390_expand_builtin): Do the copy_to_reg not
only on the else branch.
gcc/testsuite/ChangeLog:
2019-03-11 Andreas Krebbel <krebbel@linux.ibm.com>
* gcc.target/s390/zvector/vec-addc-u128.c: New test.
Martin Liska [Mon, 11 Mar 2019 11:48:49 +0000 (12:48 +0100)]
Improve JSON format: add function names for lines.
2019-03-11 Martin Liska <mliska@suse.cz>
* gcov.c (output_intermediate_json_line): Print function
name of each line.
(output_json_intermediate_file): Add new argument.
* doc/gcov.texi: Document the change.
Richard Biener [Mon, 11 Mar 2019 11:31:05 +0000 (11:31 +0000)]
re PR tree-optimization/89649 (r269458 FAILs g++.dg/pr80481.C, scan-assembler-not vmovaps)
2019-03-11 Richard Biener <rguenther@suse.de>
PR tree-optimization/89649
* tree-vectorizer.h (vect_loop_versioning): Adjust prototype.
* tree-vect-loop-manip.c (vect_do_peeling): Unset force_vectorize
on the prolog and epilog loops.
(vect_loop_versioning): Return copy of loop.
* tree-vect-loop.c (vect_transform_loop): Unset force_vectorize
on the non-vectorized version of the loop.
Martin Jambor [Sun, 10 Mar 2019 16:20:06 +0000 (17:20 +0100)]
Make SRA less strict with memcpy performing MEM_REFs
2019-03-10 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/85762
PR tree-optimization/87008
PR tree-optimization/85459
* tree-sra.c (contains_vce_or_bfcref_p): New parameter, set the bool
it points to if there is a type changing MEM_REF. Adjust all callers.
(build_accesses_from_assign): Disable total scalarization if
contains_vce_or_bfcref_p returns true through the new parameter, for
both rhs and lhs.
Thomas Koenig [Sun, 10 Mar 2019 10:42:23 +0000 (10:42 +0000)]
re PR fortran/66089 (elemental dependency mishandling when class array are involved)
2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/66089
* trans-array.c (gfc_scalar_elemental_arg_saved_as_reference):
Return false if a scalar tempoary is needed.
(gfc_walk_variable_expr): Fix up class refs.
2019-03-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/66089
* gfortran.dg/dependency_53.f90: New test.
Thomas Koenig [Sat, 9 Mar 2019 19:21:24 +0000 (19:21 +0000)]
re PR fortran/71544 (gfortran compiler optimization bug when dealing with c-style pointers)
2019-03-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/71544
* trans-types.c (gfc_typenode_for_spec) Set ts->is_c_interop of
C_PTR and C_FUNPTR.
(create_fn_spec): Mark argument as escaping if ts->is_c_interop is set.
2019-03-09 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/71544
* gfortran.dg/c_ptr_tests_19.f90: New test.
David Malcolm [Fri, 8 Mar 2019 22:27:08 +0000 (22:27 +0000)]
i386.c: make "sorry" message more amenable to translation (PR target/79926)
gcc/ChangeLog:
PR target/79926
* config/i386/i386.c (ix86_set_current_function): Make "sorry"
messages more amenable to translation, and improve wording.
Martin Liska [Fri, 8 Mar 2019 12:55:40 +0000 (13:55 +0100)]
x86: Disable jump tables when retpolines are used (PR target/86952).
2019-03-08 Martin Liska <mliska@suse.cz>
PR target/86952
* config/i386/i386.c (ix86_option_override_internal): Disable
jump tables when retpolines are used.
2019-03-08 Martin Liska <mliska@suse.cz>
PR target/86952
* gcc.target/i386/pr86952.c: New test.
* gcc.target/i386/indirect-thunk-7.c: Use jump tables to match
scanned pattern.
* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
Jakub Jelinek [Fri, 8 Mar 2019 10:53:27 +0000 (11:53 +0100)]
re PR target/79846 (s390: untranslatable diagnostic in s390.c)
PR target/79846
* config/s390/s390.c (s390_const_operand_ok): Use %wu instead of
HOST_WIDE_INT_PRINT_UNSIGNED and %wd instead of
HOST_WIDE_INT_PRINT_DEC. Formatting fixes.
Jakub Jelinek [Fri, 8 Mar 2019 10:51:28 +0000 (11:51 +0100)]
re PR other/80058 (fix double spaces in string literals everywhere)
PR other/80058
* lra-constraints.c (process_alt_operands): Avoid one space before
" at the end of line and another after " on another line in a string
literal.
* attribs.c (handle_dll_attribute): Likewise.
* config/avr/avr-devices.c (avr_texinfo): Likewise.
cp/
* parser.c (cp_parser_template_declaration_after_parameters): Avoid
one space before " at the end of line and another after " on another
line in a string literal.
fortran/
* arith.c (gfc_complex2complex): Avoid two spaces in the middle of
diagnostics.
* resolve.c (resolve_allocate_expr): Likewise.
Jakub Jelinek [Fri, 8 Mar 2019 10:46:39 +0000 (11:46 +0100)]
re PR tree-optimization/89550 (Spurious array-bounds warning when using __PRETTY_FUNCTION__ as a string_view)
PR tree-optimization/89550
* builtins.c (c_strlen): Only set TREE_NO_WARNING if warning_at
returned true. Formatting fixes.
(expand_builtin_strnlen): Formatting fixes.
* tree-vrp.c (vrp_prop::check_mem_ref): Only set TREE_NO_WARNING
if warning_at returned true.
* tree-cfg.c (pass_warn_function_return::execute): Likewise.
c-family/
* c-common.c (c_common_truthvalue_conversion): Only set
TREE_NO_WARNING if warning_at returned true.
* c-warn.c (overflow_warning, warn_logical_operator): Likewise.
c/
* c-decl.c (finish_function): Only set TREE_NO_WARNING if warning_at
returned true.
(c_write_global_declarations_1): Only set TREE_NO_WARNING if pedwarn
or warning returned true.
cp/
* semantics.c (maybe_convert_cond): Only set TREE_NO_WARNING if
warning_at returned true.
* decl2.c (c_parse_final_cleanups): Likewise.
* typeck.c (convert_for_assignment): Likewise.
* decl.c (finish_function): Likewise.
Jakub Jelinek [Fri, 8 Mar 2019 07:39:31 +0000 (08:39 +0100)]
re PR target/80190 (darwin: untranslateable placeholder "non-ASCII character")
PR target/80190
* config/darwin.c: Include intl.h.
(darwin_build_constant_cfstring): Improve i18n of diagnostics by not
composing the message out of two separate parts.