GCC has supported the __atomic intrinsics since 4.7. They are better
than the __sync intrinsics in that they specify a memory model and,
more importantly for our purposes, they are reliably implemented
either in the compiler or in libatomic.
Fixes https://gcc.gnu.org/PR52084
Reviewed-on: https://go-review.googlesource.com/c/160820
From-SVN: r268458
Some people use the -fdump-rtl-combine dumps (instead of the -da or
-fdump-rtl-combine-all dump), but the "Can't combine iN into iM"
messages do not make any sense if the failed combine attempts are not
printed otherwise. So let's change that.
* combine.c (try_combine): Do not print "Can't combine" messages unless
printing failed combination attempts.
From-SVN: r268453
2019-02-01 Martin Jambor <mjambor@suse.cz>
PR hsa/87863
* omp-grid.c (grid_mark_variable_segment): Set assembler name of group
segment and global segment variables before making them static.
From-SVN: r268452
2019-02-01 Richard Biener <rguenther@suse.de>
PR middle-end/88597
* tree-scalar-evolution.c (analyze_scalar_evolution): Set up
the instantiate cache.
(instantiate_scev_binary): Elide second operand procesing
if equal to the first.
* tree-chrec.c (chrec_contains_symbols): Add visited set.
(chrec_contains_undetermined): Likewise.
(tree_contains_chrecs): Likewise.
* gcc.dg/torture/pr88597.c: New testcase.
From-SVN: r268449
PR tree-optimization/88107
* tree-cfg.c (find_outermost_region_in_block): Add ALL argument,
instead of assertion that eh_region_outermost is non-NULL, if it
is NULL, set *ALL to true and return NULL.
(move_sese_region_to_fn): Adjust caller, if all is set, call
duplicate_eh_regions with NULL region.
* gcc.dg/gomp/pr88107.c: New test.
From-SVN: r268444
PR tree-optimization/88932
* tree-predcom.c (try_combine_chains): Get loop bbs in dom order.
gcc/testsuite
* gfortran.dg/pr88932.f90: New test.
From-SVN: r268439
* constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
(cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
label in the else branch if we found it in the then branch.
* g++.dg/cpp1y/constexpr-88983.C: New test.
From-SVN: r268438
2019-01-31 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/88669
* resolve.c (resolve_component): If the reference is a BT_CLASS,
copy the contiguous attribute from the reference and use the
correct attributes.
2019-01-31 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/88669
* gfortran.dg/contiguous_9.f90: New test.
From-SVN: r268432
* constexpr.c (adjust_temp_type): Use copy_node and change the type
instead of using build_constructor.
* decl.c (reshape_init_r): Don't reshape a digested initializer.
Return the initializer for COMPOUND_LITERAL_P.
* g++.dg/cpp0x/initlist107.C: New test.
* g++.dg/cpp0x/initlist108.C: New test.
* g++.dg/cpp0x/initlist109.C: New test.
* g++.dg/cpp0x/initlist110.C: New test.
* g++.dg/cpp0x/initlist111.C: New test.
* g++.dg/cpp0x/initlist112.C: New test.
* g++.dg/init/ptrfn4.C: New test.
From-SVN: r268428
PR c/89122 reports that we emit a bogus fix-it hint for the case where
the code uses FLT_MAX, but has included <limits.h> rather than <float.h>:
x.c:3:11: error: 'FLT_MAX' undeclared here (not in a function); did you
mean 'INT_MAX'?
3 | float f = FLT_MAX;
| ^~~~~~~
| INT_MAX
This patch adds some knowledge of <float.h> (and <cfloat>) to
known-headers.cc, fixing the issue:
x.c:3:11: error: 'FLT_MAX' undeclared here (not in a function)
3 | float f = FLT_MAX;
| ^~~~~~~
x.c:2:1: note: 'FLT_MAX' is defined in header '<float.h>'; did you forget
to '#include <float.h>'?
1 | #include <limits.h>
+++ |+#include <float.h>
2 |
gcc/c-family/ChangeLog:
PR c/89122
* known-headers.cc (get_stdlib_header_for_name): Add
{FLT|DBL|LDBL}_{MAX|MIN} to "hints" array.
gcc/testsuite/ChangeLog:
PR c/89122
* g++.dg/spellcheck-stdlib.C (test_FLT_MAX): New test.
* gcc.dg/spellcheck-stdlib.c (test_FLT_MAX): New test.
From-SVN: r268426
In this testcase, we look for an instantiation of the outer lambda from
within the inner lambda. enclosing_instantiation_of didn't handle this
properly, as it assumed that any references would be from the same lambda
nesting depth. Fixed thus.
* cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
* pt.c (tsubst_lambda_expr): Set it.
(instantiated_lambda_fn_p): Check it.
(enclosing_instantiation_of): Use it.
From-SVN: r268424
2018-01-31 Bill Schmidt <wschmidt@linux.ibm.com>
PR tree-optimization/89008
* gimple-ssa-strength-reduction.c (slsr_process_mul): Don't
process anything of the form X * 0.
From-SVN: r268422
The 'debugaltlink_name_len =+ 1' bug reported in PR89136 exposes the fact that
the build-id is not verified for the .gnu_debugaltlink.
Fix both problems.
2019-01-31 Tom de Vries <tdevries@suse.de>
PR libbacktrace/89136
* elf.c (elf_add): Read build-id if with_buildid_data. Fix
'debugaltlink_name_len =+ 1'.
From-SVN: r268419
PR libstdc++/88170
* c-pretty-print.c (pp_c_enumeration_constant): Print always as
a C cast in pp_c_flag_gnu_v3 mode.
* cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
a C cast in pp_c_flag_gnu_v3 mode.
From-SVN: r268413
2019-01-30 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/52564
* io.c (match_io): Add check for comma after '*' without subsequent
IO list.
* gfortran.dg/print_2.f90: New test.
From-SVN: r268412
Previously the operator+=(extension) call would have re-parsed the path
and recreated the components with the right extension. Since optimising
it to not re-parse the whole string, we need to actually remove the
extension from the final filename before appending anything to it, and
append the dot to that final component too.
PR libstdc++/89117
* src/c++17/fs_path.cc (path::replace_extension): Erase extension from
final component as well as from _M_pathname. Append the dot using
operator+= instead of only to _M_pathname.
(path::_M_find_extension): Reformat slightly.
* testsuite/27_io/filesystem/path/modifiers/replace_extension.cc:
Add more test cases.
From-SVN: r268406
2019-01-30 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/87246
* lra-constraints.c (simplify_operand_subreg): Reload memory
in subreg if the address became invalid.
2019-01-30 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/87246
* gcc.target/i386/pr87246.c: New.
From-SVN: r268404
2019-01-30 Richard Biener <rguenther@suse.de>
PR rtl-optimization/89115
* opts.c (default_options_optimization): Reduce
PARAM_MAX_DSE_ACTIVE_LOCAL_STORES by a factor of 10 at -O1.
Make PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP reduction relative
to the default.
From-SVN: r268394
gcc/ChangeLog:
2019-01-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
* config/rs6000/rs6000-c.c (altivec-resolve_overloaded_builtin):
Change handling of ALTIVEC_BUILTIN_VEC_EXTRACT. Coerce result to
type of vector element when vec_extract is implemented by direct
move.
gcc/testsuite/ChangeLog:
2019-01-30 Kelvin Nilsen <kelvin@gcc.gnu.org>
* gcc.target/powerpc/vec-extract-schar-1.c: New test.
* gcc.target/powerpc/vec-extract-sint-1.c: New test.
* gcc.target/powerpc/vec-extract-sint128-1.c: New test.
* gcc.target/powerpc/vec-extract-slong-1.c: New test.
* gcc.target/powerpc/vec-extract-sshort-1.c: New test.
* gcc.target/powerpc/vec-extract-uchar-1.c: New test.
* gcc.target/powerpc/vec-extract-uint-1.c: New test.
* gcc.target/powerpc/vec-extract-uint128-1.c: New test.
* gcc.target/powerpc/vec-extract-ulong-1.c: New test.
* gcc.target/powerpc/vec-extract-ushort-1.c: New test.
From-SVN: r268391