Martin Liska [Mon, 13 Mar 2017 15:30:17 +0000 (16:30 +0100)]
Do not warn -Wsuggest-attribute=noreturn for main.chkp (PR middle-end/78339).
2017-03-13 Martin Liska <mliska@suse.cz>
PR middle-end/78339
* ipa-pure-const.c (warn_function_noreturn): If the declarations
is a CHKP clone, use original declaration.
2017-03-13 Martin Liska <mliska@suse.cz>
PR middle-end/78339
* gcc.target/i386/mpx/pr78339.c: New test.
* config/arc/arc.c (arc_init): Use multiplier whenever we have it.
(arc_conditional_register_usage): Use a different allocation order
when optimizing for size.
* common/config/arc/arc-common.c (arc_option_optimization_table):
Section anchors default on when optimizing for size.
Move pattern (movsi_insn) allows predicated instructions to be
instructions which can hold all registers. However, the conditional
variant doesn't. This patch fixes this problem.
fwprop step is placing in the REG_EQUIV notes constant pic unspecs
expressions. Then, loop may use these notes for optimizations
rezulting in complex patterns that are not supported by the current
implementation.
The patch adds handling of complex PIC addresses having MINUS or UNARY
operations.
rs6000, testsuite: Correct the broken_cplxf_arg test
check_effective_target_broken_cplxf_arg is buggy. It actually tests
if passing complex float works, not if it fails. Also, it only runs
the test for target powerpc64-linux, but we are biarch, so it should
be powerpc*-linux.
This also changes the early-out conditions to be separate, because
the big combined condition was hard to follow.
This fixes the libstdc++ tests:
Running target unix/-m64
XPASS: 26_numerics/complex/13450.cc execution test
XPASS: 26_numerics/complex/pow.cc execution test
XPASS: 26_numerics/complex/value_operations/1.cc execution test
which were the last failing libstdc++ tests on BE.
Jerry DeLisle [Sat, 11 Mar 2017 14:49:57 +0000 (14:49 +0000)]
re PR fortran/78854 ([F03] DTIO namelist output not working on internal unit)
2017-03-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/78854
* io/list_read.c (nml_get_obj_data): Stash internal unit for
later use by child procedures.
* io/write.c (nml_write_obj): Likewise.
* io/tranfer.c (data_transfer_init): Minor whitespace.
* io/unit.c (set_internal_uit): Look for the stashed internal
unit and use it if found.
David Malcolm [Sat, 11 Mar 2017 01:43:48 +0000 (01:43 +0000)]
Remove trailing period from various diagnostic messages (PR translation/79923)
gcc/ChangeLog:
PR translation/79923
* auto-profile.c (get_combined_location): Convert leading
character of diagnostics to lower case and remove trailing period.
(read_profile): Likewise for various diagnostics.
* config/arm/arm.c (arm_option_override): Remove trailing period
from various diagnostics.
* config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
(msp430_expand_delay_cycles): Likewise.
David Malcolm [Sat, 11 Mar 2017 01:40:04 +0000 (01:40 +0000)]
aarch64.c: tweaks to quoting in error messages (PR target/79925)
gcc/ChangeLog:
PR target/79925
* config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
full command-line argument, rather than just "str".
(aarch64_validate_march): Likewise.
(aarch64_validate_mtune): Likewise.
These files won't build on targets that do not have AltiVec enabled,
breaking the build, unless we tell GAS that Altivec insns are fine.
The alternative is to not build these files in that case, which is much
more complicated.
libgcc/
* config/rs6000/crtrestvr.s: Use .machine altivec.
* config/rs6000/crtsavevr.s: Ditto.
gcc/c-family/ChangeLog:
PR c/79921
* c-indentation.c (warn_for_misleading_indentation): Remove parens
from inform's message, so that xgettext can locate it.
David Malcolm [Fri, 10 Mar 2017 18:39:52 +0000 (18:39 +0000)]
Fix out-of-bounds write in RTL function reader (PR bootstrap/79952)
gcc/ChangeLog:
PR bootstrap/79952
* read-rtl-function.c (function_reader::read_rtx_operand): Update
x with result of extra_parsing_for_operand_code_0.
(function_reader::extra_parsing_for_operand_code_0): Convert
return type from void to rtx, returning x. When reading
SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
larger size containing struct block_symbol.
The configure tests need to use -mabi=altivec for 32-bit, since it is
not the default there. That also enables the "vector" keyword, used by
the tests. To do this it temporarily adds a few flags to the CFLAGS
variable.
It also fixes a syntax error in the libgcc_cv_powerpc_float128_hw test
(the function name was missing in the function declaration).
Regenerating config.in (via autoreconf) removed the duplicate definition
of HAVE_SOLARIS_CRTS.
Finally, this adds a "-mfloat128-hardware requires -m64" test to
rs6000.c: all the current patterns need 64-bit registers. Maybe we'll
want to add float128 hardware support to 32-bit some day, but certainly
not today.
* config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
-mfloat128-hardware without -m64.
libgcc/
* configure.ac (test for libgcc_cv_powerpc_float128): Temporarily
modify CFLAGS. Add -mabi=altivec -mvsx -mfloat128.
(test for libgcc_cv_powerpc_float128_hw): Add -mpower9-vector and
-mfloat128-hardware to the CFLAGS. Fix syntax error in the C snippet.
* configure: Regenerate.
* config.in: Regenerate.
Will Schmidt [Fri, 10 Mar 2017 16:18:44 +0000 (16:18 +0000)]
re PR target/79941 (Altivec vec_vmuleub regression)
gcc:
2017-03-10 Will Schmidt <will_schmidt@vnet.ibm.com>
PR target/79941
* config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
entries to the case statement that marks unsigned arguments to
overloaded functions.
testsuite:
2017-03-10 Will Schmidt <will_schmidt@vnet.ibm.com>
PR target/79941
* gcc.target/powerpc/fold-vec-mult-even_odd_misc.c: New test.
* gcc.target/powerpc/fold-vec-mult-even_odd_char.c: New test.
* gcc.target/powerpc/fold-vec-mult-even_odd_short.c: New test.
Jonathan Wakely [Fri, 10 Mar 2017 15:29:38 +0000 (15:29 +0000)]
P0604R0 add invoke_result, is_invocable etc. for C++17
* include/bits/invoke.h (__invoke): Use __invoke_result instead of
result_of, and __is_nothrow_invocable instead of
__is_nothrow_callable.
* include/bits/shared_ptr_base.h (__shared_ptr): Use __is_invocable
instead of __is_callable.
* include/std/functional (invoke): use invoke_result_t instead of
result_of_t and is_nothrow_invocable instead of is_nothrow_callable.
(_Not_fn): Use __invoke_result instead of result_of.
* include/std/type_traits (__result_of_memobj, __result_of_memfun):
Remove partial specializations for reference_wrapper types.
(__result_of_impl): Use __inv_unwrap to strip reference_wrapper.
(__invoke_result): Define replacement for result_of and then use it to
define result_of.
(__is_callable_impl, __is_callable, __is_nothrow_callable): Replace
with __is_invocable_impl, __is_invocable, and __is_nothrow_invocable
respectively.
(invoke_result, invoke_result_t): Define for C++17.
(is_callable, is_nothrow_callable): Replace with is_invocable,
is_invocable_r, is_nothrow_invocable, and is_nothrow_invocable_r.
(is_callable_v, is_nothrow_callable_v): Replace with is_invocable_v,
is_invocable_r_v, is_nothrow_invocable_v, and is_nothrow_invocable_r_v.
* include/std/variant (hash<variant<T...>>): Use is_nothrow_invocable_v
instead of is_nothrow_callable_v.
* testsuite/20_util/function_objects/invoke/59768.cc: Remove unused
main function.
* testsuite/20_util/function_objects/not_fn/1.cc: Use is_invocable
instead of is_callable.
* testsuite/20_util/is_callable/*: Rename directory and adjust tests
to use new traits.
* testsuite/20_util/is_notjrow_callable/*: Likewise.
* testsuite/20_util/optional/hash.cc: Use is_invocable_v instead of
is_callable.
* testsuite/20_util/variant/hash.cc: Likewise.
Jakub Jelinek [Fri, 10 Mar 2017 15:28:26 +0000 (16:28 +0100)]
re PR c++/79896 (ICE in gimplify_expr, at gimplify.c:11950 on non-int128 target)
PR c++/79896
* decl.c (finish_enum_value_list): If value is error_mark_node,
don't copy it and change its type.
* init.c (constant_value_1): Return error_mark_node if DECL_INITIAL
of CONST_DECL is error_mark_node.
As stated in the PR (and elsewhere), this test now passes on aarch64,
ia64, mips, powerpc, sparc, and s390x. This patch disables the xfails
for those targets.
PR testsuite/79356
* gcc.dg/attr-alloc_size-11.c: Don't xfail on aarch64, ia64, mips,
powerpc, sparc, or s390x.
George Lander [Fri, 10 Mar 2017 12:22:45 +0000 (12:22 +0000)]
[libstdc++-v3] Fix detection of obsolete isnan
libstdc++-v3 configure checks whether old glibc inline definitions
of isnan would conflict with the libstdc++-v3 definitions and
works around them if so. But if g++ 6.x build A is used to build
another g++ 6.x B, the configure step for B will pick up the math.h
installed alongside A instead of the glibc version. configure will
then assume that the workaround isn't necessary, leaving B with a
broken cmath.
isinf already worked around this. This patch extends the same fix
to isnan. (Thanks to George for the fix.)
libstdc++-v3/
2017-03-10 George Lander <george.lander@arm.com>
* acinclude.m4 (glibcxx_cv_obsolete_isnan): Define
_GLIBCXX_INCLUDE_NEXT_C_HEADERS before including math.h.
* configure: Regenerate.
Jakub Jelinek [Fri, 10 Mar 2017 07:57:45 +0000 (08:57 +0100)]
re PR middle-end/79909 (ICE error: invalid rtl sharing found in the insn on ppc64le)
PR rtl-optimization/79909
* combine.c (try_combine): Use simplify_replace_rtx on individual
CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
of the whole CALL_INSN_FUNCTION_USAGE.
Jakub Jelinek [Fri, 10 Mar 2017 07:55:00 +0000 (08:55 +0100)]
re PR tree-optimization/79972 (ICE in tree check: expected ssa_name, have var_decl in get_range_info, at tree-ssanames.c:377 w/ -Walloca -Wvla-larger-than=364854541)
PR tree-optimization/79972
* gimple-ssa-warn-alloca.c (alloca_call_type): Only call
get_range_info on SSA_NAMEs. Formatting fixes.
Jakub Jelinek [Fri, 10 Mar 2017 07:53:57 +0000 (08:53 +0100)]
re PR tree-optimization/77975 (Missed optimization for some small constants)
PR tree-optimization/77975
* tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
edge to be constant.
(get_val_for): For constant x return it. Formatting fix.
(loop_niter_by_eval): Avoid pointless looping if the next iteration
would use the same bases as the current one.
Bill Schmidt [Thu, 9 Mar 2017 22:41:34 +0000 (22:41 +0000)]
rs6000.c (rs6000_gen_le_vsx_permute): Use rotate instead of vec_select for V1TImode.
2017-03-09 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
instead of vec_select for V1TImode.
* conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
longer needed.
(VSX_LE_128): Add V1TI to this mode iterator.
(*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
(*vsx_le_perm_store_<mode>): Likewise.
(pre-reload splitter for VSX stores): Likewise.
(post-reload splitter for VSX stores): Likewise.
(*vsx_xxpermdi2_le_<mode>): Likewise.
(*vsx_lxvd2x2_le_<mode>): Likewise.
(*vsx_stxvd2x2_le_<mode>): Likewise.
Michael Eager [Thu, 9 Mar 2017 18:09:39 +0000 (18:09 +0000)]
Correct failures with --enable-checking=yes,rtl.
* config/microblaze/microblaze.c (microblaze_expand_shift):
Replace GET_CODE test with CONST_INT_P and INTVAL test with
test for const0_rtx.
* config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
lshrsi3_byone): Replace INTVAL with test for const1_rtx.
* gcc.dg/ubsan/pr79757-1.c: New test.
* gcc.dg/ubsan/pr79757-2.c: New test.
* gcc.dg/ubsan/pr79757-3.c: New test.
* gcc.dg/ubsan/pr79757-4.c: New test.
* gcc.dg/ubsan/pr79757-5.c: New test.
Toma Tabacu [Thu, 9 Mar 2017 15:04:31 +0000 (15:04 +0000)]
Add check_effective_target_rdynamic and use it in g++.dg/lto/pr69589_0.C.
gcc/
* doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
Document rdynamic.
gcc/testsuite/
* g++.dg/lto/pr69589_0.C: Add dg-require-effective-target for
rdynamic. Remove dg-skip-if for targets which don't support -rdynamic.
* lib/target-supports.exp (check_effective_target_rdynamic):
New proc.
Martin Liska [Thu, 9 Mar 2017 10:10:02 +0000 (11:10 +0100)]
Fix ICE in tree-chkp-opt.c (PR tree-optimization/79631).
2017-03-09 Martin Liska <mliska@suse.cz>
PR tree-optimization/79631
* tree-chkp-opt.c (chkp_is_constant_addr): Call
tree_int_cst_sign_bit just for INTEGER constants.
2017-03-09 Martin Liska <mliska@suse.cz>
PR tree-optimization/79631
* gcc.target/i386/mpx/pr79631.c: New test.
Martin Liska [Thu, 9 Mar 2017 09:26:45 +0000 (10:26 +0100)]
Support BIT_FIELD_REF in MPX (PR ipa/79764).
2017-03-09 Martin Liska <mliska@suse.cz>
PR ipa/79764
(chkp_narrow_size_and_offset): New function.
(chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
(void chkp_parse_bit_field_ref): New function.
(chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
(chkp_process_stmt): Use chkp_parse_bit_field_ref.
2017-03-09 Martin Liska <mliska@suse.cz>
Martin Liska [Thu, 9 Mar 2017 09:22:29 +0000 (10:22 +0100)]
Get bounds for a PARM_DECL (PR ipa/79761).
2017-03-09 Martin Liska <mliska@suse.cz>
PR ipa/79761
* tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
(chkp_find_bounds_1): Remove gcc_unreachable.
2017-03-09 Martin Liska <mliska@suse.cz>
Jakub Jelinek [Thu, 9 Mar 2017 09:20:23 +0000 (10:20 +0100)]
re PR sanitizer/79944 (asan: incorrect instrumentation of atomic operations)
PR sanitizer/79944
* asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
BUILT_IN_SYNC*, determine the access type from the size suffix and
always build a MEM_REF with that type. Handle forgotten
BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
Jakub Jelinek [Wed, 8 Mar 2017 17:21:06 +0000 (18:21 +0100)]
re PR c/79940 (OpenMP pragma - internal compiler error with taskloop)
PR c/79940
* gimplify.c (gimplify_omp_for): Replace index var in outer
taskloop statement with an artificial variable and add
OMP_CLAUSE_PRIVATE clause for it.
Mark Wielaard [Wed, 8 Mar 2017 14:28:38 +0000 (14:28 +0000)]
Fix PR demangler/70909 and 67264 (endless demangler recursion)
ChangeLog:
PR demangler/70909
PR demangler/67264
* include/demangle.h: Add d_printing to struct demangle_component
and pass struct demangle_component as non const.
Andrew Haley [Wed, 8 Mar 2017 11:35:23 +0000 (11:35 +0000)]
re PR tree-optimization/79943 (Loop splitting breaks with loops of pointer type)
2017-03-08 Andrew Haley <aph@redhat.com>
PR tree-optimization/79943
* tree-ssa-loop-split.c (compute_new_first_bound): When
calculating the new upper bound, (END-BEG) should be added, not
subtracted.
Richard Biener [Wed, 8 Mar 2017 08:50:01 +0000 (08:50 +0000)]
re PR tree-optimization/79920 (Incorrect floating point results when compiling with -O3)
2017-03-08 Richard Biener <rguenther@suse.de>
PR tree-optimization/79920
* tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
with ncopies == 1 to ...
(vect_transform_slp_perm_load): ... here. Properly compute
all element loads by iterating VF times over the group. Do
not handle ncopies (computed in a broken way) in
vect_create_mask_and_perm.
Jakub Jelinek [Wed, 8 Mar 2017 08:35:20 +0000 (09:35 +0100)]
re PR target/79904 (ICE in annotate_constant_pool_refs, at config/s390/s390.c:7909)
PR sanitizer/79904
* internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
is a uniform vector, use uniform_vector_p return value instead of
building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
Jakub Jelinek [Tue, 7 Mar 2017 19:07:44 +0000 (20:07 +0100)]
re PR c/79834 (c/c-parser.c: make code more i18n-friendly)
PR c/79834
c/
* c-parser.c (c_parser_pragma): Use error_at instead of c_parser_error
for "may only be used in compound statements" diagnostics, change it
such that the same translatable string is used for all pragmas. For
PRAGMA_OACC_WAIT use "acc wait" rather than "acc enter data" in the
diagnostics.
(c_parser_omp_cancellation_point, c_parser_omp_target_update,
c_parser_omp_target_enter_data, c_parser_omp_target_exit_data): Change
"may only be used in compound statements" diagnostics, such that the
same translatable string is used for all pragmas.
cp/
* parser.c (cp_parser_omp_cancellation_point,
cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data,
cp_parser_omp_target_update): Change "may only be used in compound
statements" diagnostics, such that the same translatable string is
used for all pragmas.
(cp_parser_pragma): Likewise. Use error_at instead of
cp_parser_error for that diagnostics.
testsuite/
* c-c++-common/goacc/pragma_context.c (f2): Adjust expected
diagnostics.