Thomas Schwinge [Fri, 28 Dec 2018 11:33:54 +0000 (12:33 +0100)]
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.
Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
From-SVN: r267446
Tom de 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.
Tom de 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.
Ian Lance Taylor [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.
Co-Authored-By: Tom de Vries <tdevries@suse.de>
From-SVN: r267443
Tom de 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.
* 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 Lance Taylor [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.
Martin Liska [Thu, 27 Dec 2018 08:59:35 +0000 (09:59 +0100)]
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.
Martin Liska [Thu, 27 Dec 2018 08:46:13 +0000 (09:46 +0100)]
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 Lance Taylor [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.
Steven G. Kargl [Mon, 24 Dec 2018 18:26:25 +0000 (18:26 +0000)]
re PR fortran/45513 (BOZ kinds differently handled, F2008: BOZ in bit intrinsics)
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.
Martin Sebor [Mon, 24 Dec 2018 15:32:11 +0000 (15:32 +0000)]
gimple-fold.c (get_range_strlen_tree): Factored out of get_range_strlen.
* 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.
Jan Hubicka [Mon, 24 Dec 2018 11:26:15 +0000 (12:26 +0100)]
ipa-devirt.c (dump_targets): Cap number of targets printed.
* 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.
Iain Sandoe [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.
Martin Sebor [Sun, 23 Dec 2018 16:00:45 +0000 (16:00 +0000)]
builtins.h (c_strlen_data): Add new fields and comments.
* 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.
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r267378
Martin Sebor [Sun, 23 Dec 2018 15:49:43 +0000 (15:49 +0000)]
builtins.c (unterminated_array): Rename "data" to "lendata".
* 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".
Co-Authored-By: Jeff Law <law@redhat.com>
From-SVN: r267377
Alan Modra [Sun, 23 Dec 2018 13:28:20 +0000 (23:58 +1030)]
[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).
Iain Sandoe [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.
Iain Sandoe [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.
Iain Sandoe [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.
Iain Sandoe [Sun, 23 Dec 2018 10:35:28 +0000 (10:35 +0000)]
Handle -save-temps in collect2
Handle the option, make the saved filenames and paths easier to handle.
Don't print '[Leaving...]' for files we never created and don't exist - or unless
verbose is true.
2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
* collect2.c (main): Parse the output file early so we can make nicer
temp names. Respond to “-save-temps” in the GCC OPTIONS.
(maybe_unlink): Don’t print “[Leaving…”] for files we never created
and don’t exist.
Iain Sandoe [Sun, 23 Dec 2018 10:28:51 +0000 (10:28 +0000)]
Ensure collect2 responds to intended commmand line options.
To ensure compatibility with the flags consumed by ld, some of the flags
needed by collect2 come from the command line and some are passed
in the COLLECT_GCC_OPTIONS.
Here we combine initial parses of both and then set the LTO mode accordingly.
2018-12-23 Iain Sandoe <iain@sandoe.co.uk>
* collect2.c (main): Combine flags from both the command line and
COLLECT_GCC_OPTIONS to determine the set in force
Jason Merrill [Sun, 23 Dec 2018 00:06:34 +0000 (19:06 -0500)]
Remove support for demangling GCC 2.x era mangling schemes.
libiberty/
* cplus-dem.c: Remove cplus_mangle_opname, cplus_demangle_opname,
internal_cplus_demangle, and all subroutines.
(libiberty_demanglers): Remove entries for ancient GNU (pre-3.0),
Lucid, ARM, HP, and EDG demangling styles.
(cplus_demangle): Remove 'work' variable. Don't call
internal_cplus_demangle.
include/
* demangle.h: Remove support for ancient GNU (pre-3.0), Lucid,
ARM, HP, and EDG demangling styles.
Jan Hubicka [Sat, 22 Dec 2018 20:06:52 +0000 (21:06 +0100)]
tree.c: (obj_type_ref_class): Move to...
* tree.c: (obj_type_ref_class): Move to...
* ipa-devirt.c (obj_type_ref_class): Move to here; lookup main
odr type.
(get_odr_type): Compensate for type simplification.
* g++.dg/ipa/devirt-30.C: Add dg-do.
* g++.dg/lto/devirt-1_0.C: New testcase.
* g++.dg/lto/devirt-2_0.C: New testcase.
* g++.dg/lto/devirt-3_0.C: New testcase.
* g++.dg/lto/devirt-4_0.C: New testcase.
* g++.dg/lto/devirt-5_0.C: New testcase.
* g++.dg/lto/devirt-6_0.C: New testcase.
* g++.dg/lto/devirt-13_0.C: New testcase.
* g++.dg/lto/devirt-14_0.C: New testcase.
* g++.dg/lto/devirt-19_0.C: New testcase.
* g++.dg/lto/devirt-22_0.C: New testcase.
* g++.dg/lto/devirt-23_0.C: New testcase.
* g++.dg/lto/devirt-30_0.C: New testcase.
* g++.dg/lto/devirt-34_0.C: New testcase.
Iain Sandoe [Sat, 22 Dec 2018 20:06:47 +0000 (20:06 +0000)]
[Patch, PowerPC/Darwin] Fix library export of long double symbols.
During 8.x, the rs6000 target-specific mangling was reorganised which uncovered
a long-standing bug in Darwin’s mangling for ‘IBM’ long double. Now the symbols
are correctly mangled, and we end up with a bunch of test link fails.
This patch adds the necessary subset of the Linux long double exports to Darwin’s
export table.
2018-12-22 Iain Sandoe <iain@sandoe.co.uk>
* /config/os/bsd/darwin/ppc-extra.ver: Append long double symbols.
Steven G. Kargl [Sat, 22 Dec 2018 19:37:06 +0000 (19:37 +0000)]
re PR fortran/85798 (ICE in get_array_index, at fortran/data.c:69)
2018-12-22 Steven G . Kargl <kargl@gcc.gnu.org>
PR fortran/85798
* decl.c (gfc_match_data): If a component of a derived type entity
appears in data statement, check that does not have the allocatable
attribute.
2018-12-22 Steven G . Kargl <kargl@gcc.gnu.org>
PR fortran/85798
* gfortran.dg/pr85798.f90: New test.
Jakub Jelinek [Fri, 21 Dec 2018 19:58:36 +0000 (20:58 +0100)]
re PR c++/86524 (std::less with pointer arguments not usable in static_assert in constexpr function)
PR c++/86524
PR c++/88446
* cp-tree.h (cp_fold_maybe_rvalue, cp_fold_rvalue): Declare.
(fold_non_dependent_expr): Add manifestly_const_eval argument.
* constexpr.c (cxx_eval_builtin_function_call): Evaluate
__builtin_constant_p if ctx->manifestly_const_eval even in constexpr
functions. Don't reuse dummy{1,2} vars between different arguments.
Use cp_fold_rvalue instead of cp_fully_fold. Fix comment typo.
(fold_non_dependent_expr): Add manifestly_const_eval argument, pass
it through to cxx_eval_outermost_constant_expr and
maybe_constant_value.
* cp-gimplify.c (cp_fold_maybe_rvalue, cp_fold_rvalue): No longer
static.
* semantics.c (finish_static_assert): Call fold_non_dependent_expr
with true as manifestly_const_eval.
* g++.dg/cpp1y/constexpr-86524.C: New test.
* g++.dg/cpp2a/is-constant-evaluated4.C: New test.
* g++.dg/cpp2a/is-constant-evaluated5.C: New test.
* g++.dg/cpp2a/is-constant-evaluated6.C: New test.
Jakub Jelinek [Fri, 21 Dec 2018 19:17:13 +0000 (20:17 +0100)]
re PR middle-end/85594 (ICE during expand when compiling with -fwrapv -fopenmp)
PR middle-end/85594
PR middle-end/88553
* omp-expand.c (extract_omp_for_update_vars): Regimplify the condition
if needed.
(expand_omp_for_generic): Don't clobber t temporary for ordered loops.
* gcc.dg/gomp/pr85594.c: New test.
* gcc.dg/gomp/pr88553.c: New test.
Paul Thomas [Fri, 21 Dec 2018 19:09:42 +0000 (19:09 +0000)]
re PR fortran/87881 (gfortran.dg/inquiry_type_ref_(1.f08|3.f90) fail on darwin)
2018-12-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87881
* expr.c (find_inquiry_ref): Loop through the inquiry refs in
case there are two of them.
(simplify_ref_chain): Return true after a successful call to
find_inquiry_ref.
2018-12-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/87881
* gfortran.dg/inquiry_part_ref_4.f90: New test.
Jakub Jelinek [Fri, 21 Dec 2018 16:01:53 +0000 (17:01 +0100)]
re PR target/88522 (Error: operand size mismatch for `vpgatherqq')
PR target/88522
* config/i386/sse.md (*avx512pf_gatherpf<mode>sf_mask,
*avx512pf_gatherpf<mode>df_mask, *avx512pf_scatterpf<mode>sf_mask,
*avx512pf_scatterpf<mode>df_mask): Use %X5 instead of %5 for
-masm=intel.
(gatherq_mode): Remove mode iterator.
(*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2): Use X instead
of <xtg_mode>.
(*avx512f_gatherdi<mode>): Use X instead of <gatherq_mode>.
(*avx512f_gatherdi<mode>_2, *avx512f_scattersi<mode>,
*avx512f_scatterdi<mode>): Use %X5 for -masm=intel.
Jakub Jelinek [Fri, 21 Dec 2018 15:54:55 +0000 (16:54 +0100)]
re PR rtl-optimization/88563 (wrong code with -O2 -fno-code-hoisting -fno-tree-ccp -fno-tree-dominator-opts -fno-tree-forwprop -fno-tree-fre -fno-tree-pre -fno-tree-vrp)
PR rtl-optimization/88563
* expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Swap innermode
and mode arguments to convert_modes. Likewise swap mode and word_mode
arguments. Handle both arguments with VOIDmode before convert_modes
of one of them. Formatting fixes.
On some version of dejagnu, options in RUNTESTFLAGS are appended to the
command-line and thus any -mfloat-abi=softfp or -mfloat-abi=hard in
there overwrite the -mfloat-abi=soft in the dg-options for
size-optimization-ieee-* tests. Test is still run though because
arm_soft_ok returns true if -mfloat-abi=soft is accepted, even if the
file is not compiled for softfloat due to a later -mfloat-abi on the
command line.
This patch adds a dg-skip-if to those tests to ensure they are not run
in softfp or hard mode.
2018-12-21 Thomas Preud'homme <thomas.preudhomme@linaro.org>
gcc/testsuite/
* gcc.target/arm/size-optimization-ieee-1.c: Skip if passing
-mfloat-abi=softfp or -mfloat-abi=hard.
* gcc.target/arm/size-optimization-ieee-2.c: Likewise.
* gcc.target/arm/size-optimization-ieee-3.c: Likewise.
Jakub Jelinek [Fri, 21 Dec 2018 10:37:11 +0000 (11:37 +0100)]
re PR target/88547 (missed optimization for vector comparisons)
PR target/88547
* config/i386/i386.c (ix86_expand_int_sse_cmp): Optimize
x > y ? 0 : -1 into min (x, y) == x ? -1 : 0.
* gcc.target/i386/pr88547-1.c: Expect only 2 knotb and 2 knotw
insns instead of 4, check for vpminud, vpminuq and no vpsubd or
vpsubq.
* gcc.target/i386/sse2-pr88547-1.c: New test.
* gcc.target/i386/sse2-pr88547-2.c: New test.
* gcc.target/i386/sse4_1-pr88547-1.c: New test.
* gcc.target/i386/sse4_1-pr88547-2.c: New test.
* gcc.target/i386/avx2-pr88547-1.c: New test.
* gcc.target/i386/avx2-pr88547-2.c: New test.
* gcc.target/i386/avx512f-pr88547-2.c: New test.
* gcc.target/i386/avx512vl-pr88547-1.c: New test.
* gcc.target/i386/avx512vl-pr88547-2.c: New test.
* gcc.target/i386/avx512vl-pr88547-3.c: New test.
* gcc.target/i386/avx512f_cond_move.c (y): Change from unsigned int
array to int array.
Alexandre Oliva [Fri, 21 Dec 2018 05:40:53 +0000 (05:40 +0000)]
support --with-multilib-list=@name for ARM
Introduce @name as a means to specify alternate multilib profiles as
arguments to --with-multilib-list.
So far this is only implemented for ARM.
for gcc/ChangeLog
* config.gcc (tmake_file): Add name to tmake_file for
each @name in --with-multilib-list on arm-*-* targets.
* doc/install.texi (with-multilib-list): Document it.
H.J. Lu [Thu, 20 Dec 2018 21:41:48 +0000 (21:41 +0000)]
C/C++: Add -Waddress-of-packed-member
When address of packed member of struct or union is taken, it may result
in an unaligned pointer value. This patch adds -Waddress-of-packed-member
to check alignment at pointer assignment and warn unaligned address as
well as unaligned pointer:
extern struct pair_t p;
int *addr = &p.i;
$ gcc -O2 -S x.i
x.i:8:13: warning: taking address of packed member of ‘struct pair_t’ may result in an unaligned pointer value [-Waddress-of-packed-member]
8 | int *addr = &p.i;
| ^
$ cat c.i
struct B { int i; };
struct C { struct B b; } __attribute__ ((packed));
long* g8 (struct C *p) { return p; }
$ gcc -O2 -S c.i -Wno-incompatible-pointer-types
c.i: In function ‘g8’:
c.i:4:18: warning: converting a packed ‘struct C *’ pointer (alignment 1) to ‘long int *’ (alignment 8) may may result in an unaligned pointer value [-Waddress-of-packed-member]
4 | long* g8 (struct C *p) { return p; }
| ^
c.i:2:8: note: defined here
2 | struct C { struct B b; } __attribute__ ((packed));
| ^
$
This warning is enabled by default. Since read_encoded_value_with_base
in unwind-pe.h has
union unaligned
{
void *ptr;
unsigned u2 __attribute__ ((mode (HI)));
unsigned u4 __attribute__ ((mode (SI)));
unsigned u8 __attribute__ ((mode (DI)));
signed s2 __attribute__ ((mode (HI)));
signed s4 __attribute__ ((mode (SI)));
signed s8 __attribute__ ((mode (DI)));
} __attribute__((__packed__));
_Unwind_Internal_Ptr result;
and GCC warns:
gcc/libgcc/unwind-pe.h:210:37: warning: taking address of packed member of 'union unaligned' may result in an unaligned pointer value [-Waddress-of-packed-member]
result = (_Unwind_Internal_Ptr) u->ptr;
^
we need to add GCC pragma to ignore -Waddress-of-packed-member.
Jakub Jelinek [Thu, 20 Dec 2018 17:34:19 +0000 (18:34 +0100)]
re PR c++/88180 (ICE in vec<tree_node*, va_gc, vl_embed>::quick_push(tree_node* const&))
PR c++/88180
* parser.c (cp_parser_class_specifier_1): If
cp_parser_check_type_definition fails, skip default arguments, NSDMIs,
etc. like for erroneous template args.
* g++.dg/parse/pr88180.C: New test.
* g++.dg/pr85039-1.C: Don't expect diagnostics inside of the type
definition's NSDMIs.
Jakub Jelinek [Thu, 20 Dec 2018 17:31:05 +0000 (18:31 +0100)]
cp-tree.h (cp_fully_fold_init): Declare.
* cp-tree.h (cp_fully_fold_init): Declare.
* cp-gimplify.c (cp_fully_fold_init): New function.
* typeck2.c (split_nonconstant_init, store_init_value): Use it
instead of cp_fully_fold.
[AArch64][SVE] Fix IFN_COND_FMLA movprfx alternative
This patch fixes a cut-&-pasto in the (match_dup 4) version of
"cond_<SVE_COND_FP_TERNARY:optab><SVE_F:mode>". (It's a shame
that there's so much cut-&-paste in these patterns, but it's hard
to avoid without more infrastructure.)
2018-12-20 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_4): Use
sve_fmla_op rather than sve_fmad_op for the movprfx alternative.
gcc/testsuite/
* gcc.target/aarch64/sve/fmla_2.c: New test.
* gcc.target/aarch64/sve/fmla_2_run.c: Likewise
David Malcolm [Thu, 20 Dec 2018 14:18:48 +0000 (14:18 +0000)]
-Wtautological-compare: fix comparison of macro expansions
gcc/c-family/ChangeLog:
PR c++/87504
* c-warn.c (get_outermost_macro_expansion): New function.
(spelled_the_same_p): Use it to unwind the macro expansions, and
compare the outermost macro in each nested expansion, rather than
the innermost.
gcc/testsuite/ChangeLog:
PR c++/87504
* c-c++-common/Wtautological-compare-8.c: New test.