redi [Wed, 2 Jan 2019 16:30:49 +0000 (16:30 +0000)]
Add more testcases for class template argument deduction of maps
This adds additional tests for std::map and std::multimap CTAD. The
tests ensure that deduction works for braced-init-list of value_type
objects, and for pairs of input iterators (with both std::pair<Key, T>
and value_type as the iterator's value_type). This ensures deduction
from value_type still works, as well as the non-value_type cases in LWG
3025.
Similar tests for unordered maps do not work, apparently because the
constructor taking an initializer_list<value_type> is not usable for
deduction, and the deduction guide taking initializer_list<pair<Key, T>>
deduces key_type to be const. I am not addressing that.
* testsuite/23_containers/map/cons/deduction.cc: Test deduction from
initializer_list<value_type> and from input iterator ranges.
* testsuite/23_containers/multimap/cons/deduction.cc: Likewise.
hubicka [Wed, 2 Jan 2019 15:23:27 +0000 (15:23 +0000)]
PR lto/88130
* varpool.c (varpool_node::ctor_useable_for_folding_p): Also return
false at WPA time when body was removed.
* g++.dg/torture/pr88130.C: New testcase.
marxin [Wed, 2 Jan 2019 14:03:53 +0000 (14:03 +0000)]
Calculate prediction remainder at proper place (PR tree-optimization/88650).
2019-01-02 Martin Liska <mliska@suse.cz>
PR tree-optimization/88650
* predict.c (set_even_probabilities): Calculate probability
remainer only when really used.
2019-01-02 Martin Liska <mliska@suse.cz>
PR tree-optimization/88650
* gfortran.dg/predict-3.f90: New test.
rguenth [Wed, 2 Jan 2019 08:49:07 +0000 (08:49 +0000)]
2019-01-02 Richard Biener <rguenther@suse.de>
PR ipa/85574
* ipa-icf.h (sem_item_optimizer::sort_congruence_split): Declare.
* ipa-icf.c (sem_item_optimizer::sort_congruence_split): New
function.
(sem_item_optimizer::do_congruence_step_f): Sort the congruence
set after UIDs before splitting them.
law [Wed, 2 Jan 2019 06:17:54 +0000 (06:17 +0000)]
* gimple-fold.c (get_range_strlen_tree): Record if the computed
length is optimistic. If it is, then arrange to compute the
conservative length as well.
law [Wed, 2 Jan 2019 06:02:37 +0000 (06:02 +0000)]
* gimple-fold.h (get_range_strlen): Update prototype.
* builtins.c (check_access): Update call to get_range_strlen to use
c_strlen_data pointer. Change various variable accesses to instead
pull data from the c_strlen_data structure.
(check_strncat_sizes, expand_builtin_strncat): Likewise.
* calls.c (maybe_warn_nonstring_arg): Likewise.
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Likewise. Reset
minimum length if maximum lengh is unknown.
* gimple-ssa-sprintf.c (get_string_length): Likewise. Drop code
that used c_strlen, it's no longer needed. Restructure slightly.
(format_string): Set unlikely range appropriately.
* gimple-fold.c (get_range_strlen): Update comments. Fix minor
formatting issues.
(get_range_strlen): Accept c_strlen_data pointer for external
call sites as well. Pass through to call to internal get_range_strlen.
Adjust minlen, maxlen and maxbound as needed.
(get_maxval_strlen): Update comments.
(gimple_fold_builtin_strlen): Update call to get_range_strlen
to use c_strlen_data pointer. Change variable accesses to instead
use c_strlen_data data members.
* gcc.dg/strlenopt-40.c: Disable a couple tests.
* gcc.dg/strlenopt-48.c: Twiddle test.
* gcc.dg/strlenopt-59.c: New test.
* gcc.dg/tree-ssa/builtin-snprintf-5.c: New test.
* g++.dg/init/strlen.C: New test.
tkoenig [Tue, 1 Jan 2019 21:19:53 +0000 (21:19 +0000)]
2019-01-01 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/82743
* primary.c (gfc_convert_to_structure_constructor): If a character
in a constructor is too long, add a warning with
-Wcharacter-truncation.
2019-01-01 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/82743
* gfortran.dg/structure_constructor_16.f90: New test.
law [Tue, 1 Jan 2019 18:20:13 +0000 (18:20 +0000)]
* gimple-fold.c (get_range_strlen): Update prototype.
(get_range_strlen_tree): Update prototype. Drop minlen/maxlen
local variables. Use pdata to return information to caller.
Update calls to get_range_strlen. Update pdata->maxbound.
(get_range_strlen -- static version): Similarly.
(get_range_strlen -- extern version): Update for internal
get_range_strlen API change. Convert to external data format.
(get_maxval_strlen): Similarly.
hubicka [Tue, 1 Jan 2019 13:10:39 +0000 (13:10 +0000)]
* g++.dg/lto/devirt-13_0.C: Drop broken scan of ssa dump.
* g++.dg/lto/devirt-14_0.C: Drop broken scan of ssa dump.
* g++.dg/lto/devirt-23_0.C: Add -fdump-ipa-cp.
tkoenig [Mon, 31 Dec 2018 14:59:46 +0000 (14:59 +0000)]
2018-12-31 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/82995
* trans-expr.c (gfc_conv_procedure_call): Pass NULL pointer
for missing optional dummy arguments for library routines.
* trans-intinsic.c (conv_mask_condition): New function.
(gfc_conv_intrinsic_arith): Detect and handle optional mask.
(gfc_conv_intrinsic_minmaxloc): Likewise.
(gfc_conv_intrinsic_findloc): Likewise.
(gfc_conv_intrinsic_minmaxval): Likewise.
(gfc_inline_intrinsic_function_p): Do not inline for rank > 1 if
an optional mask is present.
marxin [Mon, 31 Dec 2018 13:46:08 +0000 (13:46 +0000)]
).
2018-12-31 Martin Liska <mliska@suse.cz>
* predict.c (set_even_probabilities): Include also
unlikely_count in calculation.
(combine_predictions_for_bb): Consider also HOT and
COLD labels predictions.
* predict.def (PRED_HOT_LABEL): Move it just after
__builtin_expect_with_probability predictor.
(PRED_COLD_LABEL): Likewise.
2018-12-31 Martin Liska <mliska@suse.cz>
* g++.dg/predict-2.C: New test.
* g++.dg/predict-3.C: New test.
* g++.dg/predict-4.C: New test.
* gcc.dg/tree-ssa/attr-hotcold-2.c: Adjust test-case.
law [Mon, 31 Dec 2018 01:01:10 +0000 (01:01 +0000)]
* gimple-fold.c (strlen_range_kind): New enum.
(get_range_strlen): Update signature to use strlen_range_kind
instead of type+fuzzy.
(get_range_strlen_tree): Update signature to use
strlen_range_kind instead of type+fuzzy. Pass rkind down to
get_range_strlen. Check the rkind enum value instead of
type+fuzzy.
(get_range_strlen): Similarly.
(get_maxval_strlen): Update signature to make NONSTR argument have
a default value and make static. Add asserts to ensure sanity of
arguments. Update calls to get_range_strlen.
(gimple_fold_builtin_strcpy): Update calls to get_maxval_strlen.
(gimple_fold_builtin_strcat, gimple_fold_builtin_fputs): Similarly.
(gimple_fold_builtin_memory_chk): Similarly.
(gimple_fold_builtin_stxcpy_chk): Similarly.
(gimple_fold_builtin_snprintf_chk): Similarly.
(gimple_fold_builtin_sprintf, gimple_fold_builtin_snprintf): Similarly.
* gimple-fold.h (get_maxval_strlen): Delete prototype.
jozefl [Sat, 29 Dec 2018 19:00:48 +0000 (19:00 +0000)]
2018-12-29 Jozef Lawrynowicz <jozef.l@mittosystems.com>
gcc/ChangeLog:
* config/msp430/msp430.c (msp430_attr): Warn when the critical and
interrupt function attributes are used together.
* gcc/doc/extend.texi: Update documentation on the critical attribute.
gcc/testsuite/ChangeLog:
* gcc.target/msp430/critical-interrupt.c: New test.
kargl [Sat, 29 Dec 2018 17:43:02 +0000 (17:43 +0000)]
2018-12-25 Steven G. Kargl <kargl@gcc.gnu.org>
* cpp.c (gfc_cpp_init): Add pre-defined macros for INTEGER(1)
INTEGER(2), INTEGER(8) and INTEGER(16) if supported. Add pre-defined
macros for REAL(10) and REAL(16) if available.
* gfortran.texi: Document new macros.
M ChangeLog
M gcc.dg/torture/pr25967-1.c
M gcc.dg/torture/pr25967-2.c
M gcc.dg/torture/pr68037-1.c
M gcc.dg/torture/pr68037-2.c
M gcc.dg/torture/pr68037-3.c
M gcc.dg/torture/pr68264.c
jakub [Sat, 29 Dec 2018 10:53:36 +0000 (10:53 +0000)]
PR ipa/88586
* omp-low.c (lower_omp_task_reductions): Set DECL_CONTEXT on field
and ifield. Update TYPE_ALIGN from alignment of field, ifield or
bfield.
ian [Sat, 29 Dec 2018 00:07:06 +0000 (00:07 +0000)]
runtime: prevent deadlock when profiling signal arrives in stack scan
Precise stack scan needs to unwind the stack. When it is
unwinding the stack, if a profiling signal arrives, which also
does a traceback, it may deadlock in dl_iterate_phdr. Prevent
this deadlock by setting up runtime_in_callers before traceback.
tschwinge [Fri, 28 Dec 2018 11:33:54 +0000 (11:33 +0000)]
Cleanup libgomp's coalesce chunk data structures
libgomp/
* target.c (struct gomp_coalesce_chunk): New structure.
(struct gomp_coalesce_buf): Update the chunks member to use that
type. Adjust all users.
vries [Fri, 28 Dec 2018 03:43:56 +0000 (03:43 +0000)]
[libbacktrace] Reduce memory usage in build_address_map
In build_address_map we allocate a unit, and then look for addresses in the
unit, which we store in the addrs vector, with the elements pointing to the
unit. However, if we cannot find addresses in the unit, the allocated unit is
not used.
Fix this by detecting if the allocated unit has been used, and reusing it
otherwise.
vries [Fri, 28 Dec 2018 03:43:41 +0000 (03:43 +0000)]
[libbacktrace] Simplify memory management in build_address_map
In the main loop in build_address_map, we first read the abbrevs into a local
variable abbrevs, and then allocate the corresponding unit, after which we assign
the abbrevs to the unit. This results in dedicated free-upon-failure
handling for the variable, and extra code to make sure that free-upon-failure
doesn't trigger once the unit has taken ownership of the abbrevs.
Simplify this by reversing the order of abbrev reading and unit allocation,
and eliminating the abbrevs local variable.
Bootstrapped and reg-tested on x86_64.
2018-12-28 Tom de Vries <tdevries@suse.de>
* dwarf.c (build_address_map): Simplify by removing local variable
abbrevs.
vries [Fri, 28 Dec 2018 03:43:26 +0000 (03:43 +0000)]
[libbacktrace] Fix memory leak in loop in build_address_map
When failing in build_address_map, we free the unit that's currently being
handled in the loop, but the ones that already have been allocated are leaked.
Fix this by keeping track of allocated units in a vector, and releasing them
upon failure.
Also, now that we have a vector of allocated units, move the freeing upon
failure of the abbrevs associated with each unit to build_address_map, and
remove the now redundant call to free_unit_addrs_vector.
Bootstrapped and reg-tested on x86_64.
2018-12-28 Ian Lance Taylor <iant@golang.org>
Tom de Vries <tdevries@suse.de>
PR libbacktrace/88063
* dwarf.c (free_unit_addrs_vector): Remove.
(build_address_map): Keep track of allocated units in vector. Free
allocated units and corresponding abbrevs upon failure. Remove now
redundant call to free_unit_addrs_vector. Free addrs vector upon
failure. Free allocated unit vector.
vries [Fri, 28 Dec 2018 03:43:15 +0000 (03:43 +0000)]
[libbacktrace] Fix memory leak in build_address_map
While upon failure in build_address_map we call free_unit_addrs_vector, this
does not actually free the addrs vector, but merely the abbrevs of the units
pointed at by the elements of the addrs vector.
Fix this by adding code to build_address_map to make sure that the addrs vector
is freed upon failure.
Bootstrapped and reg-tested on x86_64.
2018-12-28 Tom de Vries <tdevries@suse.de>
* dwarf.c (build_address_map): Free addrs vector upon failure.
hubicka [Thu, 27 Dec 2018 21:23:30 +0000 (21:23 +0000)]
* ipa-devirt.c (polymorphic_call_target_d): Add n_odr_types.
(polymorphic_call_target_hasher::hash): Hash it.
(polymorphic_call_target_hasher::equal): Compare it.
(possible_polymorphic_call_targets): Set it.
* tree.c (free_lang_data): Rebuild type inheritance graph even on
non-LTO path.
ian [Thu, 27 Dec 2018 16:31:50 +0000 (16:31 +0000)]
runtime: let ARM32 EABI personality function continue unwind when called from traceback
On ARM32 EABI, unlike other platforms, the personality function is
called during _Unwind_Backtrace (libgcc/unwind-arm-common.inc:581).
In this case, simply unwind the frame without returning any
handlers. Otherwise traceback will loop if there is a frame with
a defer on stack.
marxin [Thu, 27 Dec 2018 08:59:35 +0000 (08:59 +0000)]
Fix slowness in gcov (PR gcov-profile/88225).
2018-12-27 Martin Liska <mliska@suse.cz>
PR gcov-profile/88225
* gcov.c(source_info::get_functions_at_location):
Use newly added line_to_function_map.
(source_info::add_function): New.
(output_json_intermediate_file): Use a pointer return
type for get_functions_at_location.
(process_all_functions): Use add_function instead
of direct push to a s->functions container.
(release_structures): Release ident_to_fn.
(read_graph_file): Register function into ident_to_fn.
(read_count_file): Use the map.
(output_lines): Handle pointer return type of
get_functions_at_location.
marxin [Thu, 27 Dec 2018 08:46:13 +0000 (08:46 +0000)]
Use proper location for tls_init function (PR c++/88263).
2018-12-27 Martin Liska <mliska@suse.cz>
PR c++/88263
* decl2.c (get_local_tls_init_fn): Add location_t argument and
use it.
(get_tls_init_fn): Call it with location of variable for which
we'll need to create tls_init function.
(handle_tls_init): Likewise.
2018-12-27 Martin Liska <mliska@suse.cz>
ian [Thu, 27 Dec 2018 03:13:11 +0000 (03:13 +0000)]
runtime: on ARM32 EABI, don't get LSDA if compact model is used
On ARM32 EABI, when the "compact" unwinding model is used, it
does not have standard LSDA and _Unwind_GetLanguageSpecificData
will not return data that is parseable by us. Check this
conditon before calling _Unwind_GetLanguageSpecificData.
kargl [Mon, 24 Dec 2018 18:26:25 +0000 (18:26 +0000)]
2018-12-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/45513
PR fortran/81509
* check.c: Rename function gfc_check_iand to gfc_check_iand_ieor_ior.
* check.c (boz_args_check): New function. Check I and J not both BOZ.
(gfc_check_dshift,gfc_check_iand_ieor_ior, gfc_check_ishft,
gfc_check_and, gfc_check_merge_bits): Use it.
* check.c (gfc_check_iand_ieor_ior): Force conversion of BOZ to kind
type of other agrument. Remove silly GNU extension.
(gfc_check_ieor, gfc_check_ior): Delete now unused functions.
* intrinsic.c (add_functions): Use gfc_check_iand_ieor_ior. Wrap long
line.
* intrinsic.h: Rename gfc_check_iand to gfc_check_iand_ieor_ior.
Delete prototype for bool gfc_check_ieor and gfc_check_ior
* intrinsic.texi: Update documentation for boz-literal-constant.
2018-12-24 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/45513
PR fortran/81509
* gfortran.dg/graphite/id-26.f03: Fix non-conforming use of IAND.
* gfortran.dg/pr81509_1.f90: New test.
* gfortran.dg/pr81509_2.f90: New test.
law [Mon, 24 Dec 2018 15:32:11 +0000 (15:32 +0000)]
* gimple-fold.c (get_range_strlen_tree): Factored out of
get_range_strlen. Minor comment updates/additions. Assert
argument is not a simple SSA_NAME.
(get_range_strlen): Call get_range_strlen_tree as appropriate.
Minor comment updates/additions.
hubicka [Mon, 24 Dec 2018 11:26:15 +0000 (11:26 +0000)]
* ipa-devirt.c (dump_targets): Cap number of targets printed.
(dump_possible_polymorphic_call_targets): Add verbose parameter.
(ipa_devirt): Use it.
* ipa-utils.h (dump_possible_polymorphic_call_targets): Add verbose
parametrs.
iains [Mon, 24 Dec 2018 08:43:20 +0000 (08:43 +0000)]
darwin, configuration, check properly for dwarf2 debug line support
This corrects a long-standing misconfiguration for Darwin.
The assembler supports the “.file” and “.loc” directives, but
the GCC configury was not detecting this because it was
using objdump, which does not exist on most Darwin installations.
We added support for “otool” to GCC and now we can use that to
make the check that’s done with objdump on ELF targets.
2018-12-24 Iain Sandoe <iain@sandoe.co.uk>
* configure.ac (dwarf2_debug_line): Check for the debug_line
section using otool when there’s no objdump available.
* configure: Regenerate.
law [Sun, 23 Dec 2018 16:00:45 +0000 (16:00 +0000)]
* builtins.h (c_strlen_data): Add new fields and comments.
* builtins.c (unterminated_array): Change field reference from
"len" to "minlen" in c_strlen_data instance.
* gimple-fold.c (get_range_strlen): Likewise.
* gimple-ssa-sprintf.c (get_string_length): Likewise.
law [Sun, 23 Dec 2018 15:49:43 +0000 (15:49 +0000)]
* builtins.c (unterminated_array): Rename "data" to "lendata". Fix
a few comments.
(expand_builtin_strnlen, expand_builtin_stpcpy_1): Likewise.
(fold_builtin_strlen): Likewise.
* gimple-fold.c (get_range_strlen): Likewise. Also rename a couple
instances of "type" to "optype" and "arg" to "fld".
amodra [Sun, 23 Dec 2018 13:28:20 +0000 (13:28 +0000)]
[RS6000] PR88346, Inconsistent list of CPUs supported after r266502
This patch removes the %e error for AIX, since it seems there has been
no attempt to keep cpu support up to date for AIX, and adds missing
entries to ASM_CPU_SPEC in rs6000.h. The rs64a->rs64 name change
happened a long time ago as a fix for PR20813 (git commit c92b4c3f5b).
iains [Sun, 23 Dec 2018 12:43:47 +0000 (12:43 +0000)]
LTO-wrapper, don't pre-link early debug objects.
Pass them to the final link, the pre-link wasn't effective.
Make the temp filenames easier to follow.
Also save them in the CWD when save-temps is given.
2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
* lto-wrapper.c (tool_cleanup): Don’t report ficticious temp files.
(debug_objcopy): Improve temp filenames. Append the early
debug objects to the outfiles. Remove the phase prelinking the
early debug. Emit the early debug filenames for ld.
iains [Sun, 23 Dec 2018 11:04:14 +0000 (11:04 +0000)]
Fix ident tests by Enabling ident output for X86 Darwin.
The c-c++-common tests fail (or XPASS depending on which) on Darwin
because it doesn't currently emit .ident marker. For X86 Darwin, this
is a trivial oversight; the assembler supports the directive. We can
therefore use the default target hook there.
iains [Sun, 23 Dec 2018 10:43:59 +0000 (10:43 +0000)]
use simple-object instead of nm to determine if files contain LTO.
This replaces the use of nm to search for the LTO common symbol marker
and uses simple object to see if there's a section starting with
".gnu.lto_." or ".gnu.offload_lto_"
2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
* collect2.c (maybe_run_lto_and_relink): Don’t say we have a temp file
unless we actually did some LTO.
(has_lto_section, is_lto_object_file): New.
(maybe_lto_object_file): Remove.
(scan_prog_file): Use is_lto_object_file() instead of scanning the
output of nm.