aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2018-06-12PR c/85931 - -Wsizeof-pointer-memaccess for strncpy with size of sourceMartin Sebor6-2/+91
gcc/c-family/ChangeLog: PR c/85931 * c-warn.c (sizeof_pointer_memaccess_warning): Avoid warning when sizeof source and destination yields the same value. gcc/ChangeLog: PR c/85931 * fold-const.c (operand_equal_p): Handle SAVE_EXPR. gcc/testsuite/ChangeLog: PR c/85931 * gcc.dg/Wstringop-truncation-3.c: New test. From-SVN: r261515
2018-06-12p8-vec-xl-xst-v2.c: New.(actually added this time).Will Schmidt1-0/+64
[testsuite] 2018-05-31 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/p8-vec-xl-xst-v2.c: New.(actually added this time). From-SVN: r261510
2018-06-12p8-vec-xl-xst-v2.c: New.Will Schmidt3-4/+12
[testsuite] 2018-05-31 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/p8-vec-xl-xst-v2.c: New. * gcc.target/powerpc/p8-vec-xl-xst.c: Disable gimple-folding. * gcc.target/powerpc/swaps-p8-17.c: Same. From-SVN: r261509
2018-06-12fold-vec-store-vec_vsx_st-char.c: New.Will Schmidt7-0/+227
[testsuite] 2018-05-31 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-store-vec_vsx_st-char.c: New. * gcc.target/powerpc/fold-vec-store-vec_vsx_st-double.c: New. * gcc.target/powerpc/fold-vec-store-vec_vsx_st-float.c: New. * gcc.target/powerpc/fold-vec-store-vec_vsx_st-int.c: New. * gcc.target/powerpc/fold-vec-store-vec_vsx_st-longlong.c: New. * gcc.target/powerpc/fold-vec-store-vec_vsx_st-short.c: New. From-SVN: r261508
2018-06-12fold-vec-store-builtin_vec_xst-char.c: New.Will Schmidt7-1/+227
[testsuite] 2018-05-31 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-char.c: New. * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-double.c: New. * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-float.c: New. * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-int.c: New. * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-longlong.c: New. * gcc.target/powerpc/fold-vec-store-builtin_vec_xst-short.c: New. From-SVN: r261507
2018-06-12fold-vec-store-vec_xst-char.c: New.Will Schmidt7-0/+222
[testsuite] 2018-05-31 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-store-vec_xst-char.c: New. * gcc.target/powerpc/fold-vec-store-vec_xst-double.c: New. * gcc.target/powerpc/fold-vec-store-vec_xst-float.c: New. * gcc.target/powerpc/fold-vec-store-vec_xst-int.c: New. * gcc.target/powerpc/fold-vec-store-vec_xst-longlong.c: New. * gcc.target/powerpc/fold-vec-store-vec_xst-short.c: New. From-SVN: r261506
2018-06-12fold-vec-load-vec_vsx_ld-char.c: New.Will Schmidt7-0/+222
[testsuite] 2018-05-31 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-char.c: New. * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-double.c: New. * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-float.c: New. * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-int.c: New. * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-longlong.c: New. * gcc.target/powerpc/fold-vec-load-vec_vsx_ld-short.c: New. From-SVN: r261505
2018-06-12fold-vec-load-builtin_vec_xl-char.c: New.Will Schmidt7-0/+227
[testsuite] 2018-05-31 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-char.c: New. * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-double.c: New. * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-float.c: New. * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-int.c: New. * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-longlong.c: New. * gcc.target/powerpc/fold-vec-load-builtin_vec_xl-short.c: New. From-SVN: r261504
2018-06-12fold-vec-load-vec_xl-char.c: New testcase.Will Schmidt7-0/+222
[testsuite] 2018-06-12 Will Schmidt <will_schmidt@vnet.ibm.com> * gcc.target/powerpc/fold-vec-load-vec_xl-char.c: New testcase. * gcc.target/powerpc/fold-vec-load-vec_xl-double.c: New testcase. * gcc.target/powerpc/fold-vec-load-vec_xl-float.c: New testcase. * gcc.target/powerpc/fold-vec-load-vec_xl-int.c: New testcase. * gcc.target/powerpc/fold-vec-load-vec_xl-longlong.c: New testcase. * gcc.target/powerpc/fold-vec-load-vec_xl-short.c: New testcase. From-SVN: r261503
2018-06-12rs6000-c.c (altivec_overloaded_builtins): Add BUILTIN_VEC_XST entries for ↵Will Schmidt2-0/+11
pointer to double and long long. [gcc] 2018-06-12 Will Schmidt <will_schmidt@vnet.ibm.com> * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add BUILTIN_VEC_XST entries for pointer to double and long long. From-SVN: r261502
2018-06-12Linux/x86: Update TARGET_THREAD_SPLIT_STACK_OFFSET commentsH.J. Lu3-2/+12
Glibc 2.18 was changed by commit ecbf434213c0333d81706074e4d107ac45011635 Author: Andreas Jaeger <aj@suse.de> Date: Wed May 15 20:20:54 2013 +0200 Reserve new TLS field for x86 and x86_64 [BZ #10686] * sysdeps/x86_64/tls.h (struct tcbhead_t): Add __private_ss field. * sysdeps/i386/tls.h (struct tcbhead_t): Likewise. to reduce the size of __private_tm to make room for __private_ss, which was supposed to be used for TARGET_THREAD_SPLIT_STACK_OFFSET: typedef struct { void *tcb; /* Pointer to the TCB. Not necessarily the thread descriptor used by libpthread. */ dtv_t *dtv; void *self; /* Pointer to the thread descriptor. */ int multiple_threads; uintptr_t sysinfo; uintptr_t stack_guard; uintptr_t pointer_guard; int gscope_flag; int __glibc_reserved1; /* Reservation of some values for the TM ABI. */ void *__private_tm[4]; /* GCC split stack support. */ void *__private_ss; } tcbhead_t; But the offset of __private_ss for i386 was mistakenly set to 0x30, instead of 0x34 and libgcc/config/i386/morestack.S has: cmpl %gs:0x30,%eax # See if we have enough space. movl %eax,%gs:0x30 # Save the new stack boundary. movl %eax,%gs:0x30 # Save the new stack boundary. movl %ecx,%gs:0x30 # Save new stack boundary. movl %eax,%gs:0x30 movl %gs:0x30,%eax movl %eax,%gs:0x30 Since update TARGET_THREAD_SPLIT_STACK_OFFSET changes split stack ABI, glibc 2.28 has been changed by commit 0221ce2a90be2d40fc90f0b5dcec77a1ec013f53 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jun 12 06:23:28 2018 -0700 i386: Change offset of __private_ss to 0x30 [BZ #23250] to match GCC: typedef struct { void *tcb; /* Pointer to the TCB. Not necessarily the thread descriptor used by libpthread. */ dtv_t *dtv; void *self; /* Pointer to the thread descriptor. */ int multiple_threads; uintptr_t sysinfo; uintptr_t stack_guard; uintptr_t pointer_guard; int gscope_flag; int __glibc_reserved1; /* Reservation of some values for the TM ABI. */ void *__private_tm[3]; /* GCC split stack support. */ void *__private_ss; void *__glibc_reserved2; } tcbhead_t; PR target/85990 * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET): Update comments. * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET): Likewise. From-SVN: r261501
2018-06-12Document IntegerRange in internal documentation.Martin Liska2-0/+9
2018-06-12 Martin Liska <mliska@suse.cz> * doc/options.texi: Document IntegerRange. From-SVN: r261498
2018-06-12Come up with Deprecated option flag.Martin Liska11-23/+72
2018-06-12 Martin Liska <mliska@suse.cz> * doc/options.texi: Document Deprecated option flag. 2018-06-12 Martin Liska <mliska@suse.cz> * config/i386/i386.opt: Make MPX-related options as Deprecated. * opt-functions.awk: Handle Deprecated flag. * opts-common.c (decode_cmdline_option): Handle cl_deprecated and report error. (read_cmdline_option): Report warning for a deprecated option. * opts.h (struct cl_option): Add new field cl_deprecated. (CL_ERR_DEPRECATED): New. 2018-06-12 Martin Liska <mliska@suse.cz> * c.opt: Make MPX-related options as Deprecated. 2018-06-12 Martin Liska <mliska@suse.cz> * g++.dg/opt/mpx.C: New test. * gcc.target/i386/mpx.c: New test. From-SVN: r261497
2018-06-12[PATCH] [ARC][QuarkSE] UpdateClaudiu Zissulescu5-31/+67
QuarkSE has lp_count width set to 16 bits. Update the compiler to consider it. gcc/ 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc-arch.h (arc_extras): New enum. (arc_cpu_t):Add field extra. (arc_cpu_types): Consider the extras. * config/arc/arc-cpus.def: Add extras info. * config/arc/arc-opts.h (processor_type): Consider extra field. * config/arc/arc.c (arc_override_options): Handle extra field. From-SVN: r261496
2018-06-12[ARC] Update warning messges.Claudiu Zissulescu8-62/+96
When we pass an mcpu to the compiler we have two types of (hardware configuration) flags that are set: 1. Architecture specific, for example code-density is always enabled for ARCHS architectures. These options are overwriting whatever the corresponding user options with the preset ones. 2. CPU specific, for example archs is using LL64 option by default. These options can be freely enabled or disabled. Because of the above complexity, we need to throw some errors for the user to know when he/she does something which goes against the above rules. Thus, I came up with the following set of rules: 1. Overwriting default architecture specific hardware option: it is ignored, a warning is thrown; 2. Overwriting default CPU specific hardware option: it is taken into account, a warning is thrown. gcc/ 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc-arch.h: Update ARC_OPTX macro. * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc field. * config/arc/arc.c (arc_init): Update pic warning. (irq_range): Update irq range parsing warnings. (arc_override_options): Update various warning messages. (arc_handle_aux_attribute): Likewise. gcc/testsuite 2018-06-12 Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/builtin_simdarc.c: Update test. * gcc.target/arc/mulsi3_highpart-2.c: Likewise. * gcc.target/arc/tumaddsidi4.c: Likewise. From-SVN: r261495
2018-06-12MIPS: Fix build after r261489.Robert Suchanek2-1/+5
gcc/ * config/mips/i6400.md (i6400_fpu_fadd): Remove frint. From-SVN: r261494
2018-06-12sourcebuild.texi: Document usage of line number 0 in verify compiler ↵Jozef Lawrynowicz2-0/+7
messages directives. * doc/sourcebuild.texi: Document usage of line number 0 in verify compiler messages directives. From-SVN: r261493
2018-06-12MIPS: Add i6500 processor as an alias for i6400.Matthew Fortune5-2/+14
gcc/ChangeLog: 2018-06-12 Matthew Fortune <mfortune@gmail.com> * config/mips/mips-cpus.def: New MIPS_CPU for i6500. * config/mips/mips-tables.opt: Regenerate. * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as mips64r6. * doc/invoke.texi: Document -march=i6500. From-SVN: r261490
2018-06-12MIPS: Update I6400 scheduler.Prachi Godbole2-25/+88
gcc/ChangeLog: 2018-06-12 Prachi Godbole <prachi.godbole@imgtec.com> * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit. (i6400_gpmul): Add cpu_unit. (i6400_gpdiv): Likewise. (i6400_msa_add_d): Update reservations. (i6400_msa_int_add) Likewise. (i6400_msa_short_logic3) Likewise. (i6400_msa_short_logic2) Likewise. (i6400_msa_short_logic) Likewise. (i6400_msa_move) Likewise. (i6400_msa_cmp) Likewise. (i6400_msa_short_float2) Likewise. (i6400_msa_div_d) Likewise. (i6400_msa_long_logic1) Likewise. (i6400_msa_long_logic2) Likewise. (i6400_msa_mult) Likewise. (i6400_msa_long_float2) Likewise. (i6400_msa_long_float4) Likewise. (i6400_msa_long_float5) Likewise. (i6400_msa_long_float8) Likewise. (i6400_fpu_fadd): Include frint type. (i6400_fpu_store): New define_insn_reservation. (i6400_fpu_load): Likewise. (i6400_fpu_move): Likewise. (i6400_fpu_fcmp): Likewise. (i6400_fpu_fmadd): Likewise. (i6400_int_mult): Include imul3nc type and update reservation. (i6400_int_div): Include idiv3 type and update reservation. (i6400_int_load): Update to check type not move_type. (i6400_int_store): Likewise. (i6400_int_prefetch): Set zero latency. From-SVN: r261489
2018-06-12ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Change from using TYPE_LANG_FLAG_4 ↵Eric Botcazou5-30/+45
to using TYPE_LANG_FLAG_0. * gcc-interface/ada-tree.h (TYPE_RETURN_BY_DIRECT_REF_P): Change from using TYPE_LANG_FLAG_4 to using TYPE_LANG_FLAG_0. (TYPE_ALIGN_OK): Move around. (TYPE_PADDING_FOR_COMPONENT): Remove superfluous parentheses. * gcc-interface/decl.c (change_qualified_type): Move to... (gnat_to_gnu_entity): Adjust comment. * gcc-interface/gigi.h (change_qualified_type): ...here; make inline. (ceil_pow2): Use ceil_log2. * gcc-interface/utils.c (finish_subprog_decl): Add couple of comments and do not set TREE_SIDE_EFFECTS. (handle_noreturn_attribute): Use change_qualified_type. From-SVN: r261486
2018-06-12decl.c (gnat_to_gnu_entity): Do not get the expression of a dispatch table ↵Eric Botcazou2-15/+12
that is not being defined. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: Do not get the expression of a dispatch table that is not being defined. <E_Record_Subtype>: Remove obsolete kludge. From-SVN: r261483
2018-06-12decl.c (warn_on_field_placement): Use specific wording for discriminants.Eric Botcazou2-19/+52
* gcc-interface/decl.c (warn_on_field_placement): Use specific wording for discriminants. (warn_on_list_placement): New static function. (components_to_record): Use it to warn on multiple fields in list. From-SVN: r261480
2018-06-12decl.c (variant_desc): Add AUX field.Eric Botcazou7-67/+179
* gcc-interface/decl.c (variant_desc): Add AUX field. (gnat_to_gnu_entity) <discrete_type>: Do not call compute_record_mode directly. (reverse_sort_field_list): New static function. (components_to_record): Place the variant part at the beginning of the field list when there is an obvious order of increasing position. (build_variant_list): Initialize it. (create_variant_part_from): Do not call compute_record_mode directly. (copy_and_substitute_in_layout): Likewise. Always sort the fields with fixed position in order of increasing position, in the record and all the variants, in any. Call reverse_sort_field_list. * gcc-interface/utils.c (make_packable_type): Compute the sizes before calling finish_record_type. Do not call compute_record_mode directly. (finish_record_type): Overhaul final processing depending on REP_LEVEL and call finish_bitfield_layout if it is equal to one or two. From-SVN: r261479
2018-06-12[testsuite] Add gcc.dg-selftests/dg-final.expTom de Vries2-0/+105
2018-06-12 Tom de Vries <tdevries@suse.de> * gcc.dg-selftests/dg-final.exp: New file. From-SVN: r261476
2018-06-12gcc.c: Document new %@{...} sequence.Eric Botcazou2-113/+150
* gcc.c: Document new %@{...} sequence. (LINK_COMMAND_SPEC): Use it for the -L switches. (cpp_unique_options): Use it for the -I switches. (at_file_argbuf): New global variable. (in_at_file): Likewise. (alloc_args): Create at_file_argbuf. (clear_args): Truncate at_file_argbuf. (store_arg): If in_at_file, push the argument onto at_file_argbuf. (open_at_file): New function. (close_at_file): Likewise. (create_at_file): Delete. (do_spec_1) <'i'>: Use open_at_file/close_at_file. <'o'>: Likewise. <'@'>: New case. (validate_switches_from_spec): Deal with %@{...} sequence. (validate_switches): Likewise. (driver::finalize): Call clear_args. From-SVN: r261474
2018-06-12Daily bump.GCC Administrator1-1/+1
From-SVN: r261472
2018-06-11PR c++/85792 -Wctor-dtor-privacy and inherited constructor.Jason Merrill3-2/+21
* class.c (maybe_warn_about_overly_private_class): Handle inherited constructors. From-SVN: r261459
2018-06-11PR c++/85963 - -Wunused-but-set with ?: in template.Jason Merrill3-0/+33
* pt.c (tsubst_copy_and_build) [COND_EXPR]: Call mark_rvalue_use. From-SVN: r261458
2018-06-11vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.Rasmus Villemoes2-0/+11
2018-06-11 Rasmus Villemoes <rasmus.villemoes@prevas.dk> * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0. From-SVN: r261457
2018-06-11decl.c (grok_op_properties): Consistently use the location of the decl...Paolo Carlini1-0/+18
/cp 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (grok_op_properties): Consistently use the location of the decl; remove special casing of POSTINCREMENT_EXPR and POSTDECREMENT_EXPR wrt default arguments. /testsuite 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/lookup/new2.C: Test locations too. * g++.dg/other/ellipsis1.C: Likewise. * g++.dg/other/operator1.C: Likewise. * g++.dg/other/operator2.C: Likewise. * g++.dg/overload/operator2.C: Likewise. * g++.dg/parse/defarg11.C: Likewise. * g++.dg/parse/operator4.C: Likewise. * g++.dg/template/error30.C: Likewise. * g++.dg/template/explicit-args3.C: Likewise. * g++.dg/warn/effc1.C: Likewise. * g++.old-deja/g++.brendan/prepost2.C: Likewise. * g++.old-deja/g++.brendan/prepost3.C: Likewise. * g++.old-deja/g++.bugs/900215_01.C: Likewise. * g++.old-deja/g++.jason/conversion5.C: Likewise. * g++.old-deja/g++.jason/operator.C: Likewise. From-SVN: r261456
2018-06-11decl.c (grok_op_properties): Consistently use the location of the decl...Paolo Carlini17-86/+96
/cp 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (grok_op_properties): Consistently use the location of the decl; remove special casing of POSTINCREMENT_EXPR and POSTDECREMENT_EXPR wrt default arguments. /testsuite 2018-06-11 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/lookup/new2.C: Test locations too. * g++.dg/other/ellipsis1.C: Likewise. * g++.dg/other/operator1.C: Likewise. * g++.dg/other/operator2.C: Likewise. * g++.dg/overload/operator2.C: Likewise. * g++.dg/parse/defarg11.C: Likewise. * g++.dg/parse/operator4.C: Likewise. * g++.dg/template/error30.C: Likewise. * g++.dg/template/explicit-args3.C: Likewise. * g++.dg/warn/effc1.C: Likewise. * g++.old-deja/g++.brendan/prepost2.C: Likewise. * g++.old-deja/g++.brendan/prepost3.C: Likewise. * g++.old-deja/g++.bugs/900215_01.C: Likewise. * g++.old-deja/g++.jason/conversion5.C: Likewise. * g++.old-deja/g++.jason/operator.C: Likewise. From-SVN: r261455
2018-06-11Fix ptrmem comparison for unions.Jason Merrill3-2/+49
* constexpr.c (cxx_eval_binary_expression): Special case comparison of pointers to members of the same union. From-SVN: r261454
2018-06-11invoke.texi (-Wall): List -Wc++17-compat.Martin Sebor2-4/+45
gcc/ChangeLog: * doc/invoke.texi (-Wall): List -Wc++17-compat. (Wno-class-memaccess): Add @opindex. (Wno-templates, Wno-multiple-inheritance): Same. (Wno-virtual-inheritance, Wno-namespaces): Same. (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same. (Wno-format-overflow, Wno-format-truncation): Same. (Wno-unused-local-typedefs, Walloc-size-larger-than): Same. (Wno-alloc-size-larger-than, Wframe-larger-than): Same (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same. (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same. (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same. (Wno-misspelled-isr): Same. From-SVN: r261453
2018-06-11PR tree-optimization/86083 - handle non-constant assignments in strlenMartin Sebor4-3/+103
gcc/ChangeLog: PR tree-optimization/86083 * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p. gcc/testsuite/ChangeLog: PR tree-optimization/86083 * gcc.dg/strlenopt-44.c: New test. From-SVN: r261452
2018-06-11libgo: add riscv and js/wasm as known targetsIan Lance Taylor1-1/+1
Incorporates cut down versions of https://golang.org/cl/102835 and https://golang.org/cl/106256 from the master sources. This will tell go/build to skip files with those tags. Reviewed-on: https://go-review.googlesource.com/117996 From-SVN: r261451
2018-06-11tree-eh.c (lower_eh_constructs_2): Add a comma to comment.Zhouyi Zhou2-1/+5
2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com> * tree-eh.c (lower_eh_constructs_2): Add a comma to comment. From-SVN: r261450
2018-06-11re PR fortran/45521 ([F08] GENERIC resolution with ALLOCATABLE/POINTER and ↵Janus Weil5-4/+77
PROCEDURE) 2018-06-11 Janus Weil <janus@gcc.gnu.org> PR fortran/45521 * interface.c (compare_ptr_alloc): New function. (generic_correspondence): Call it. 2018-06-11 Janus Weil <janus@gcc.gnu.org> PR fortran/45521 * gfortran.dg/generic_32.f90: New test. * gfortran.dg/generic_33.f90: New test. From-SVN: r261448
2018-06-11PR c++/86094 - wrong code with defaulted move ctor.Jason Merrill3-1/+20
* tree.c (type_has_nontrivial_copy_init): Fix move ctor handling. From-SVN: r261444
2018-06-11* doc/invoke.texi: Document -fabi-version=12.Jason Merrill1-0/+4
From-SVN: r261443
2018-06-11altivec-7.c (main): Remove tests vec_unpackh(vecubi[0]) and ↵Carl Love3-8/+42
vec_unpackl(vecubi[0]) returning long... gcc/testsuite/ChangeLog: 2018-06-11 Carl Love <cel@us.ibm.com> * gcc.target/powerpc/altivec-7.c (main): Remove tests vec_unpackh(vecubi[0]) and vec_unpackl(vecubi[0]) returning long long bool. Remove duplicate dg-final for xxlxor. Update dg-final instruction counts. * gcc.target/powerpc/altivec-37.c (main): New file for tests vec_unpackh and vec_unpackl returning long long bool and long long int. From-SVN: r261438
2018-06-11rs6000: Put constraints on the correct operand in movdi (PR85755)Segher Boessenkool2-12/+19
Some of the mov* patterns use ^ and $ constraint modifiers, which mean give a penalty to this alternative if this operand needs a reload. They are meant here to give a penalty if a register operand needs reloading (because it needs to be in a different kind of register), not when a memory operand needs reloading (which is easy and cheap to do). This patch fixes the movdi patterns. This fixes PR85755. The following are changed (name, old constraints, new constraints): FPR store ^m := d m := ^d FPR move ^d := d ^d := ^d AVX store ^wY := wb wY := ^wb AVX store $Z := wv Z := $wv VSX move ^wi := wi ^wi := ^wi PR target/85755 * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers on the correct operand. (*movdi_internal64): Ditto. --- gcc/config/rs6000/rs6000.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index a2605a0..f06591f 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -8567,16 +8567,16 @@ (define_insn_and_split "reload_gpr_from_vsxsf" (define_insn "*movdi_internal32" [(set (match_operand:DI 0 "nonimmediate_operand" - "=Y, r, r, ^m, ^d, ^d, - r, ^wY, $Z, ^wb, $wv, ^wi, + "=Y, r, r, m, ^d, ^d, + r, wY, Z, ^wb, $wv, ^wi, *wo, *wo, *wv, *wi, *wi, *wv, *wv") (match_operand:DI 1 "input_operand" - "r, Y, r, d, m, d, - IJKnGHF, wb, wv, wY, Z, wi, - Oj, wM, OjwM, Oj, wM, wS, - wB"))] + "r, Y, r, ^d, m, ^d, + IJKnGHF, ^wb, $wv, wY, Z, ^wi, + Oj, wM, OjwM, Oj, wM, wS, + wB"))] "! TARGET_POWERPC64 && (gpc_reg_operand (operands[0], DImode) @@ -8643,17 +8643,17 @@ (define_split (define_insn "*movdi_internal64" [(set (match_operand:DI 0 "nonimmediate_operand" "=YZ, r, r, r, r, r, - ^m, ^d, ^d, ^wY, $Z, $wb, + m, ^d, ^d, wY, Z, $wb, $wv, ^wi, *wo, *wo, *wv, *wi, *wi, *wv, *wv, r, *h, *h, ?*r, ?*wg, ?*r, ?*wj") (match_operand:DI 1 "input_operand" - "r, YZ, r, I, L, nF, - d, m, d, wb, wv, wY, - Z, wi, Oj, wM, OjwM, Oj, - wM, wS, wB, *h, r, 0, - wg, r, wj, r"))] + "r, YZ, r, I, L, nF, + ^d, m, ^d, ^wb, $wv, wY, + Z, ^wi, Oj, wM, OjwM, Oj, + wM, wS, wB, *h, r, 0, + wg, r, wj, r"))] "TARGET_POWERPC64 && (gpc_reg_operand (operands[0], DImode) -- 1.8.3.1 From-SVN: r261435
2018-06-11Fix typo done in MPX removal (PR tree-optimization/86089).Martin Liska4-1/+28
2018-06-11 Martin Liska <mliska@suse.cz> PR tree-optimization/86089 * tree-ssa-strlen.c (get_string_length): Move back removed hunk. 2018-06-11 Martin Liska <mliska@suse.cz> PR tree-optimization/86089 * gcc.dg/tree-ssa/pr86089.c: New test. From-SVN: r261434
2018-06-11Remove redundant intrinsicsJulia Koval6-79/+11
gcc/ * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128) _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove. * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove. gcc/testsuite/ * gcc.target/i386/avx512fvl-vaes-1.c: Remove 128bit versions from test. * gcc.target/i386/vpclmulqdq.c: Ditto. From-SVN: r261433
2018-06-11dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83 for Ada with ↵Olivier Hainque5-0/+32
strict dwarf2. 2018-06-11 Olivier Hainque <hainque@adacore.com> * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83 for Ada with strict dwarf2. testsuite/ * gnat.dg/lang-dw2.adb: New test. * gnat.dg/lang-dw3.adb: New test. From-SVN: r261432
2018-06-11[Ada] Fix wrong code for initialization of fat pointer with -OgEric Botcazou2-20/+41
2018-06-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Reuse the existing fields of a dummy fat pointer type, if any. Clear the TYPE_DECL_SUPPRESS_DEBUG on the fat pointer type after completing it. From-SVN: r261431
2018-06-11[Ada] Suppress the expansion of ignored assertion pragmasHristian Kirtchev9-43/+139
This patch suppresses the expansion of ignored assertion pragmas. 2018-06-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * contracts.adb (Process_Body_Postconditions): Expand only checked postconditions. (Process_Contract_Cases_For): Expand only checked contract cases. (Process_Inherited_Preconditions): Ignored class-wide preconditions are partially expanded because some of their semantic checks are tied to the expansion. (Process_Preconditions_For): Expand only checked preconditions. (Process_Spec_Postconditions): Expand only checked preconditions. Ignored class-wide preconditions are partially expanded because some of their semantic checks are tied to the expansion. * exp_prag.adb (Expand_N_Pragma): Suppress the expansion of ignored assertion pragmas. * exp_util.adb (Add_Inherited_Invariants): Code clean up. * sem_util.adb (Propagate_Invariant_Attributes): Code clean up. gcc/testsuite/ * gnat.dg/assertion_policy1.adb, gnat.dg/assertion_policy1_pkg.adb, gnat.dg/assertion_policy1_pkg.ads: New testcase. From-SVN: r261430
2018-06-11[Ada] Minor reformattingHristian Kirtchev11-69/+84
2018-06-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_ch9.adb, exp_unst.adb, inline.adb, libgnat/a-ciorma.adb, libgnat/a-ciormu.adb, libgnat/a-ciorse.adb, libgnat/a-coorma.adb, libgnat/a-coormu.adb, libgnat/a-coorse.adb, sem_prag.adb: Minor reformatting. From-SVN: r261429
2018-06-11[Ada] Typo fixes and minor reformattingGary Dismukes3-13/+16
2018-06-11 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_unst.ads, exp_unst.adb: Typo fixes and minor reformatting. From-SVN: r261428
2018-06-11[Ada] Double finalization of limited controlled resultHristian Kirtchev3-271/+337
This patch disables a build-in-place optimization when a function returns a limited controlled result because the optimization may violate the semantics of finalizable types by performing illegal calls to Finalize. In general, the optimization causes the result object of a build-in-place function to be allocated at the caller site, with a pointer to the object passed to the function. The function then simply initializes the caller- allocated object. This mode of operation however violates semantics of finalizable types when the context of the call is allocation. The act of allocating the controlled object at the caller site will place it on the associated access type's finalization master. If the function fails the initialization of the object, the malformed object will still be finalized when the finalization master goes out of scope. This is dangerous, and must not happen. ------------ -- Source -- ------------ -- pack.ads with Ada.Finalization; use Ada.Finalization; package Pack is type Lim_Ctrl is new Limited_Controlled with null record; procedure Finalize (Obj : in out Lim_Ctrl); type Lim_Ctrl_Ptr is access all Lim_Ctrl; function Make_Lim_Ctrl_Bad_Init return Lim_Ctrl; function Make_Lim_Ctrl_OK_Init return Lim_Ctrl; end Pack; -- pack.adb with Ada.Text_IO; use Ada.Text_IO; package body Pack is procedure Finalize (Obj : in out Lim_Ctrl) is begin Put_Line (" Finalize"); end Finalize; function Make_Lim_Ctrl_Bad_Init return Lim_Ctrl is begin return Result : Lim_Ctrl := raise Program_Error do null; end return; end Make_Lim_Ctrl_Bad_Init; function Make_Lim_Ctrl_OK_Init return Lim_Ctrl is begin return Result : Lim_Ctrl do raise Program_Error; end return; end Make_Lim_Ctrl_OK_Init; end Pack; -- main.adb with Ada.Text_IO; use Ada.Text_IO; with Pack; use Pack; procedure Main is begin begin Put_Line ("1) Heap-allocated bad init"); declare Obj : Lim_Ctrl_Ptr := new Lim_Ctrl'(Make_Lim_Ctrl_Bad_Init); begin Put_Line ("1) ERROR: Heap-allocated bad init: exception not raised"); end; exception when Program_Error => Put_Line ("1) Heap-allocated bad init: Program_Error raised"); when others => Put_Line ("1) ERROR: Heap-allocatd bad init: unexpected exception"); end; begin Put_Line ("2) Stack-allocated bad init"); declare Obj : Lim_Ctrl := Make_Lim_Ctrl_Bad_Init; begin Put_Line ("2) ERROR: Stack-allocated bad init: exception not raised"); end; exception when Program_Error => Put_Line ("2) Stack-allocated bad init: Program_Error raised"); when others => Put_Line ("2) ERROR: Stack-allocated bad init: unexpected exception"); end; begin Put_Line ("3) Heap-allocated OK init"); declare Obj : Lim_Ctrl_Ptr := new Lim_Ctrl'(Make_Lim_Ctrl_OK_Init); begin Put_Line ("3) ERROR: Heap-allocated OK init: exception not raised"); end; exception when Program_Error => Put_Line ("3) Heap-allocated OK init: Program_Error raised"); when others => Put_Line ("3) ERROR: Heap-allocatd OK init: unexpected exception"); end; begin Put_Line ("4) Stack-allocated OK init"); declare Obj : Lim_Ctrl := Make_Lim_Ctrl_OK_Init; begin Put_Line ("4) ERROR: Stack-allocated OK init: exception not raised"); end; exception when Program_Error => Put_Line ("4) Stack-allocated OK init: Program_Error raised"); when others => Put_Line ("4) ERROR: Stack-allocated OK init: unexpected exception"); end; end Main; ---------------------------- -- Compilation and output -- ---------------------------- $ gnatmake -q main.adb $ ./main 1) Heap-allocated bad init 1) Heap-allocated bad init: Program_Error raised 2) Stack-allocated bad init 2) Stack-allocated bad init: Program_Error raised 3) Heap-allocated OK init Finalize 3) Heap-allocated OK init: Program_Error raised 4) Stack-allocated OK init Finalize 4) Stack-allocated OK init: Program_Error raised 2018-06-11 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * exp_ch6.adb (Add_Unconstrained_Actuals_To_Build_In_Place_Call): Do not add any actuals when the size of the object is known, and the caller will allocate it. (Build_Heap_Allocator): Rename to Build_Heap_Or_Pool_Allocator to better illustrate its functionality. Update the comment on the generated code. Generate a branch for the heap and pool cases where the object is not necessarity controlled. (Expand_N_Extended_Return_Statement): Expand the extended return statement into four branches depending the requested mode if the caller will not allocate the object on its side. (Make_Build_In_Place_Call_In_Allocator): Do not allocate a controlled object on the caller side because this will violate the semantics of finalizable types. Instead notify the function to allocate the object on the heap or a user-defined storage pool. (Needs_BIP_Alloc_Form): A build-in-place function needs to be notified which of the four modes to employ when returning a limited controlled result. * exp_util.adb (Build_Allocate_Deallocate_Proc): Remove a redundant guard which is already covered in Needs_Finalization. From-SVN: r261427
2018-06-11[Ada] Improve last exception info availability from C++ handlersOlivier Hainque5-44/+137
The Most_Recent_Exception service failed to provide accurate information on an Ada exception caught by a C++ handler for foreign exceptions. The service relies on updates of a "current exception buffer" from live exception objects at various points of the propagation process and this update was not performed early enough for the case of foreign exception handlers in non-Ada handlers. The correction applied here consists in moving one of the updates earlier in the raise process, just before unwinding starts, then refine the update API to prevent a redundant copy during the unwinding search phase for the same exception. The example below, compiled with gcc -c b.cc gnatmake -g main.adb -largs b.o --LINK=g++ is expected to run and display ada info: Checking Most_Recent_Exception for CONSTRAINT_ERROR ... OK! // b.cc extern "C" { void foo (); extern void _ada_trigger (); extern void _ada_occurrence_info (); } void foo () { try { _ada_trigger (); } catch (const abi::__foreign_exception &e) { printf ("ada info:\n"); _ada_occurrence_info(); } } -- main.adb with EH; procedure Main is begin EH.Foo; end; -- eh.adb with Gnat.Most_Recent_Exception; with Ada.Text_IO; use Ada.Text_IO; package body EH is procedure Ada_Trigger is begin raise Constraint_Error; end; procedure Ada_Occurrence_Info is begin Check_MRE ("CONSTRAINT_ERROR"); end; function Pre_Check_MRE (Ename : String) return Exception_Id is MROA : Exception_Occurrence_Access := GNAT.Most_Recent_Exception.Occurrence_Access; begin Put ("Checking Most_Recent_Exception for " & Ename & " ... "); if MROA = null then Put_Line ("Most recent exception occurrence access is NULL"); return Null_Id; else return Exception_Identity (MROA.all); end if; end; procedure Diagnose_MRE (MRID : Exception_Id; Ok : Boolean) is begin if Ok then Put_Line ("OK!"); else Put_Line ("Err, Most_Recent_Exception was " & Exception_Name (MRID)); end if; end; procedure Check_MRE (Eid : Exception_Id) is MRID : Exception_Id := Pre_Check_MRE (Ename => Exception_Name (Eid)); begin Diagnose_MRE (MRID, Ok => Eid = MRID); end; procedure Check_MRE (Ename : String) is MRID : Exception_Id := Pre_Check_MRE (Ename => Ename); begin Diagnose_MRE (MRID, Ok => Ename = Exception_Name (MRID)); end; end; -- eh.ads with Ada.Exceptions; use Ada.Exceptions; package EH is procedure Ada_Trigger with Export, Convention => C, External_Name => "_ada_trigger"; procedure Ada_Occurrence_Info with Export, Convention => C, External_Name => "_ada_occurrence_info"; procedure Foo with Import, Convention => C, External_Name => "foo"; procedure Check_MRE (Eid : Exception_Id); procedure Check_MRE (Ename : String); end; 2018-06-11 Olivier Hainque <hainque@adacore.com> gcc/ada/ * libgnat/s-excmac*.ads: Factorize Unwind_Action definitions ... * libgnat/a-exexpr.adb: ... Here, then add comments describing the major datastructures associated with the current exception raised. (Setup_Current_Excep): Accept a "Phase" argument conveying the unwinding phase during which this subprogram is called. For an Ada exception, don't update the current exception buffer from the raised exception object during SEARCH_PHASE, as this is redundant with the call now issued just before propagation starts. (Propagate_GCC_Exception): Move call to Setup_Current_Excep ahead of the unwinding start, conveying Phase 0. (Unhandled_Except_Handler): Pass UA_CLEANUP_PHASE as the Phase value on the call to Setup_Current_Excep. * raise-gcc.c (personality_body): Pass uw_phases as the Phase argument on calls to Setup_Current_Excep. From-SVN: r261426