1. 18 Dec, 2019 4 commits
  2. 17 Dec, 2019 22 commits
    • PR c++/61339 - add warning for mismatch between struct and class · e8f1ade2
      gcc/c-family/ChangeLog:
      
      	PR c++/61339
      	* c.opt (-Wmismatched-tags, -Wredundant-tags): New options.
      
      gcc/cp/ChangeLog:
      
      	PR c++/61339
      	* parser.c (cp_parser_maybe_warn_enum_key): New function.
      	(class_decl_loc_t): New class.
      	(cp_parser_elaborated_type_specifier): Call
      	cp_parser_maybe_warn_enum_key.
      	(cp_parser_class_head): Call cp_parser_check_class_key.
      	(cp_parser_check_class_key): Add arguments.  Call class_decl_loc_t::add.
      	(c_parse_file): Call class_decl_loc_t::diag_mismatched_tags.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/61339
      	* g++.dg/warn/Wmismatched-tags.C: New test.
      	* g++.dg/warn/Wredundant-tags.C: New test.
      	* g++.dg/pch/Wmismatched-tags.C: New test.
      	* g++.dg/pch/Wmismatched-tags.Hs: New test header.
      
      gcc/ChangeLog:
      
      	PR c++/61339
      	* doc/invoke.texi (-Wmismatched-tags, -Wredundant-tags): Document
      	new C++ options.
      
      From-SVN: r279480
      Martin Sebor committed
    • Generate PADDI to add large constants if -mcpu=future. · 54ba911f
      2019-12-12  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/predicates.md (add_operand): Allow eI constants.
      	* config/rs6000/rs6000.md (add<mode>3): Add alternative to
      	generate PADDI for 34-bit constants if -mcpu=future.
      
      From-SVN: r279476
      Michael Meissner committed
    • Use PLI to load up 32-bit SImode constants if -mcpu=future. · ef759fd1
      2019-12-17  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/rs6000.md (movsi_internal1): Add alternative to
      	use PLI to load up 32-bit constants if -mcpu=future.
      
      From-SVN: r279475
      Michael Meissner committed
    • Use PLI to load up large constants if -mcpu=future. · a50e0388
      2019-12-17  Michael Meissner  <meissner@linux.ibm.com>
      
      	* config/rs6000/rs6000.c (num_insns_constant_gpr): Return 1 if the
      	constant can be loaded with PLI if -mcpu=future.
      	* config/rs6000/rs6000.md (movdi_internal64): Add alternative to
      	use PLI to load up 34-bit constants if -mcpu=future.
      
      From-SVN: r279474
      Michael Meissner committed
    • PR c++/79592 - missing explanation of invalid constexpr. · 4f05d85a
      We changed months back to use the pre-generic form for constexpr evaluation,
      but explain_invalid_constexpr_fn was still using DECL_SAVED_TREE.  This
      mostly works, but misses some issues due to folding.  So with this patch we
      save the pre-generic form of constexpr functions even when we know they
      can't produce a constant result.
      
      	* constexpr.c (register_constexpr_fundef): Do store the body of a
      	template instantiation that is not potentially constant.
      	(explain_invalid_constexpr_fn): Look it up.
      	(cxx_eval_call_expression): Check fundef->result.
      
      From-SVN: r279473
      Jason Merrill committed
    • PR c++/92576 - redeclaration of variable template. · 9c7b2b0b
      The variable templates patch way back when forgot to add handling here.  The
      simplest answer seems to be recursing to the underlying declaration.
      
      	* decl.c (redeclaration_error_message): Recurse for variable
      	templates.
      
      From-SVN: r279472
      Jason Merrill committed
    • * name-lookup.c (get_std_name_hint): Add std::byte. · 490a091f
      From-SVN: r279471
      Jason Merrill committed
    • re PR c++/59655 (incorrect diagnostic on templatized function with lambda parameter) · 775670d7
      	PR c++/59655
      	* pt.c (push_tinst_level_loc): If limit_bad_template_recursion,
      	set TREE_NO_WARNING on tldcl.
      	* decl2.c (no_linkage_error): Treat templates with TREE_NO_WARNING
      	as defined during error recovery.
      
      	* g++.dg/cpp0x/diag3.C: New test.
      
      From-SVN: r279470
      Jakub Jelinek committed
    • re PR target/92841 (Optimize -fstack-protector-strong code generation a bit) · 7c32b0d5
      	PR target/92841
      	* config/i386/i386.md (@stack_protect_set_1_<mode>,
      	@stack_protect_test_1_<mode>): Use output_asm_insn.
      	(*stack_protect_set_2_<mode>, *stack_protect_set_3): New define_insns
      	and corresponding define_peephole2s.
      
      	* gcc.target/i386/pr92841.c: New test.
      
      From-SVN: r279468
      Jakub Jelinek committed
    • Revert "Fix vector testcases for amdgcn." · 7ec85098
      Apologies everyone. :-(
      
      From-SVN: r279466
      Andrew Stubbs committed
    • Fix vector testcases for amdgcn. · 62064ec0
      2019-12-17  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/testsuite/
      	* gcc.dg/vect/pr65947-8.c: Change pass conditions for amdgcn.
      	* gcc.dg/vect/vect-multitypes-11.c: Ensure that main isn't vectorized.
      	* gcc.dg/vect/vect-multitypes-12.c: Likewise.
      
      From-SVN: r279465
      Andrew Stubbs committed
    • symtab.c (symtab_node::get_partitioning_class): Aliases of external symbols are external. · 634c5bca
      	* symtab.c (symtab_node::get_partitioning_class): Aliases of external
      	symbols are external.
      
      From-SVN: r279464
      Jan Hubicka committed
    • [ARM] Add support for -mpure-code in thumb-1 (v6m) · e24f6408
      This patch extends support for -mpure-code to all thumb-1 processors,
      by removing the need for MOVT.
      
      Symbol addresses are built using upper8_15, upper0_7, lower8_15 and
      lower0_7 relocations, and constants are built using sequences of
      movs/adds and lsls instructions.
      
      The extension of the *thumb1_movhf pattern uses always the same size
      (6) although it can emit a shorter sequence when possible. This is
      similar to what *arm32_movhf already does.
      
      CASE_VECTOR_PC_RELATIVE is now false with -mpure-code, to avoid
      generating invalid assembly code with differences from symbols from
      two different sections (the difference cannot be computed by the
      assembler).
      
      Tests pr45701-[12].c needed a small adjustment to avoid matching
      upper8_15 when looking for the r8 register.
      
      Test no-literal-pool.c is augmented with __fp16, so it now uses
      -mfp16-format=ieee.
      
      Test thumb1-Os-mult.c generates an inline code sequence with
      -mpure-code and computes the multiplication by using a sequence of
      add/shift rather than using the multiply instruction, so we skip it in
      presence of -mpure-code.
      
      With -mcpu=cortex-m0, the pure-code/no-literal-pool.c fails because
      code like:
      static char *p = "Hello World";
      char *
      testchar ()
      {
        return p + 4;
      }
      
      generates 2 indirections (I removed non-essential directives/code)
                .section        .rodata
      	  .LC0:
      	  .ascii  "Hello World\000"
      	  .data
      	  p:
      	  .word   .LC0
      	  .section        .rodata
      	  .LC2:
      	  .word   p
      	  .section .text,"0x20000006",%progbits
      	  testchar:
      	  push    {r7, lr}
      	  add     r7, sp, #0
      	  movs    r3, #:upper8_15:#.LC2
      	  lsls    r3, #8
      	  adds    r3, #:upper0_7:#.LC2
      	  lsls    r3, #8
      	  adds    r3, #:lower8_15:#.LC2
      	  lsls    r3, #8
      	  adds    r3, #:lower0_7:#.LC2
      	  ldr     r3, [r3]
      	  ldr     r3, [r3]
      	  adds    r3, r3, #4
      	  movs    r0, r3
      	  mov     sp, r7
      	  @ sp needed
      	  pop     {r7, pc}
      
      By contrast, when using -mcpu=cortex-m4, the code looks like:
              .section        .rodata
      	.LC0:
      	.ascii  "Hello World\000"
      	.data
      	p:
      	.word   .LC0
      	testchar:
      	push    {r7}
      	add     r7, sp, #0
      	movw    r3, #:lower16:p
      	movt    r3, #:upper16:p
      	ldr     r3, [r3]
      	adds    r3, r3, #4
      	mov     r0, r3
      	mov     sp, r7
      	pop     {r7}
      	bx      lr
      
      I haven't found yet how to make code for cortex-m0 apply upper/lower
      relocations to "p" instead of .LC2. The current code looks functional,
      but could be improved.
      
      2019-10-18  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/
      	* config/arm/arm-protos.h (thumb1_gen_const_int): Add new prototype.
      	* config/arm/arm.c (arm_option_check_internal): Remove restriction
      	on MOVT for -mpure-code.
      	(thumb1_gen_const_int): New function.
      	(thumb1_legitimate_address_p): Support -mpure-code.
      	(thumb1_rtx_costs): Likewise.
      	(thumb1_size_rtx_costs): Likewise.
      	(arm_thumb1_mi_thunk): Likewise.
      	* config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Likewise.
      	* config/arm/thumb1.md (thumb1_movsi_symbol_ref): New.
      	(*thumb1_movhf): Support -mpure-code.
      
      	gcc/testsuite/
      	* gcc.target/arm/pr45701-1.c: Adjust for -mpure-code.
      	* gcc.target/arm/pr45701-2.c: Likewise.
      	* gcc.target/arm/pure-code/no-literal-pool.c: Add tests for
      	__fp16.
      	* gcc.target/arm/pure-code/pure-code.exp: Remove thumb2 and movt
      	conditions.
      	* gcc.target/arm/thumb1-Os-mult.c: Skip if -mpure-code is used.
      
      From-SVN: r279463
      Christophe Lyon committed
    • Add myself to write after approval. · 6226f592
      2019-12-17  Mihail Ionescu  <mihail.ionescu@arm.com>
      
      	* MAINTAINERS (write_after_approval): Add myself.
      
      From-SVN: r279461
      Mihail Ionescu committed
    • Add pointer to PR92772 · 8354bb0e
      2019-12-17  Andrew Stubbs  <ams@codesourcery.com>
      
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Mention pr92772
      	in the comments.
      
      From-SVN: r279460
      Andrew Stubbs committed
    • Add extract_last for amdgcn · b92d1124
      2019-12-17  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn-valu.md (extract_last_<mode>): New expander.
      	(fold_extract_last_<mode>): New expander.
      
      	gcc/testsuite/
      	* lib/target-supports.exp
      	(check_effective_target_vect_fold_extract_last): Add amdgcn.
      
      From-SVN: r279459
      Andrew Stubbs committed
    • Add clz and ctz for amdgcn · 34bac264
      2019-12-17  Andrew Stubbs  <ams@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
      	(CTZ_DEFINED_VALUE_AT_ZERO): Define.
      	* config/gcn/gcn.md (s_mnemonic): Add clz and ctz.
      	(expander): Likewise.
      	(countzeros): New code iterator.
      	(<expander>si2): New insn pattern.
      	(<expander>di2): New insn pattern.
      
      From-SVN: r279458
      Andrew Stubbs committed
    • libgomp/openacc.f90 – clean-up public/private attributes · 0b8499a4
              * config/accel/openacc.f90 (module openacc_kinds): Use 'PUBLIC' to mark
              all symbols as public except for the 'use …, only' imported symbol,
              which is private. 
              (module openacc): Default to 'PRIVATE' to exclude openacc_internal; mark
              all symbols from module openacc_kinds as PUBLIC
              * openacc.f90: Add comment with crossref to that file and openmp_lib.h;
              fix comment typo.
              * openacc_lib.h (acc_device_gcn): Add this PARAMETER.
      
      From-SVN: r279456
      Tobias Burnus committed
    • re PR target/92962 (Documentation: x86 Options - znver2 missing RDPID and WBNOINVD) · e55cdb14
      	PR target/92962
      	* common/config/i386/i386-common.c (processor_alias_table): Formatting
      	fixes.
      	* doc/invoke.texi (bdver3, bdver4, znver1): Add missing closing paren.
      	(znver2): Likewise.  Add RDPID and WBNOINVD, remove spurious comma
      	before CLWB.
      
      From-SVN: r279455
      Jakub Jelinek committed
    • Add abs pattern to handle {si,di} mode abs to avoid pmax/cmove conversion. · da86c5af
      2019-12-17  Hongyu Wang  <hongyu.wang@intel.com>
      
      gcc/
      	PR target/92651
      	* config/i386/i386.h (TARGET_EXPAND_ABS): New macro.
      	* config/i386/x86-tune.def (X86_TUNE_EXPAND_ABS): New.
      	* config/i386/i386.md (abs<SWI48x>2): New define_expand.
      
      gcc/testsuite
      	* gcc.target/i386/pr92651.c: New testcase.
      
      From-SVN: r279452
      Hongyu Wang committed
    • Use add for a = a + b and a = b + a when possible. · 62dd2904
      Since except for Bonnell,
      
      01 fb                   add    %edi,%ebx
      
      is faster and shorter than
      
      8d 1c 1f                lea    (%rdi,%rbx,1),%ebx
      
      we should use add for a = a + b and a = b + a when possible if not
      optimizing for Bonnell.
      
      Tested on x86-64.
      
      2019-12-17  H.J. Lu  <hjl.tools@gmail.com>
      
      gcc/
      
      	PR target/92807
      	* config/i386/i386.c (ix86_lea_outperforms): Check !TARGET_BONNELL.
      	(ix86_avoid_lea_for_addr): When not optimizing for Bonnell, use add
      	for a = a + b and a = b + a.
      
      gcc/testsuite/
      
      	PR target/92807
      	* gcc.target/i386/pr92807-1.c: New test.
      
      From-SVN: r279451
      H.J. Lu committed
    • Daily bump. · d187dab3
      From-SVN: r279450
      GCC Administrator committed
  3. 16 Dec, 2019 14 commits
    • PR c++/91165 - verify_gimple ICE with cached constexpr. · 4953b790
      It seems we need to unshare even non-CONSTRUCTOR expressions that we are
      going to stick in the constexpr_call_table, so we don't end up sharing the
      same e.g. ADDR_EXPR between two different functions.  I now think I
      understand why unsharing CONSTRUCTOR arguments was improving memory
      performance: separating the arguments from the caller function allows the
      caller function to be GC'd better.  But it occurs to me that we don't need
      to unshare until we decide that we're evaluating and caching this call, so
      we can avoid the CONSTRUCTOR unshare/free pair for tentative arguments.
      Freeing the tentative TREE_VEC still seems worth doing, so free_bindings
      isn't going away entirely.
      
      	* constexpr.c (cxx_bind_parameters_in_call): Don't unshare.
      	(cxx_eval_call_expression): Unshare all args if we're caching.
      
      From-SVN: r279447
      Jason Merrill committed
    • PR middle-end/92952 - gfortran.dg/lto/pr87689 FAILs at -O2 · 12603635
      gcc/ChangeLog:
      	* builtins.c (compute_objsize): Adjust offset by the array low bound.
      
      From-SVN: r279445
      Martin Sebor committed
    • Add pp_write_text_as_html_like_dot_to_stream · a326a3de
      gcc/ChangeLog:
      	* pretty-print.c (pp_write_text_as_html_like_dot_to_stream): New
      	function.
      	* pretty-print.h (pp_write_text_as_html_like_dot_to_stream): New decl.
      
      From-SVN: r279444
      David Malcolm committed
    • rs6000: Use symbolic names for the CR fields in more cases · bb03700c
      It turns out we still used hardcoded register numbers for the CR fields
      in some cases, and they now use the wrong numbers since we renumbered
      most of the registers.  So let's use the symbolic names, instead.
      
      
      	* config/rs6000/rs6000.md (movsi_to_cr_one): Use CR0_REGNO instead of
      	hardcoding the (old, expired) register number.
      	(*mtcrfsi): Ditto.
      
      From-SVN: r279443
      Segher Boessenkool committed
    • MSP430: Add new msp430-elfbare target · e8aa9f55
      contrib/ChangeLog:
      
      2019-12-16  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config-list.mk: Add msp430-elfbare.
      
      gcc/ChangeLog:
      
      2019-12-16  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config.gcc: s/msp430*-*-*/msp430-*-*.
      	Handle msp430-*-elfbare.
      	* config/msp430/msp430-devices.c (TARGET_SUBDIR): Define.
      	(_MSPMKSTR): Define.
      	(__MSPMKSTR): Define.
      	(rest_of_devices_path): Use TARGET_SUBDIR value in string.
      	* config/msp430/msp430.c (msp430_option_override): Error if
      	-fuse-cxa-atexit is used when it has been disabled at configure time.
      	* config/msp430/t-msp430: Define TARGET_SUBDIR when building
      	msp430-devices.o.
      	* doc/install.texi: Document msp430-*-elf and msp430-*-elfbare.
      	* doc/invoke.texi: Update documentation about which path devices.csv is
      	searched for.
      
      gcc/testsuite/ChangeLog:
      
      2019-12-16  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* g++.dg/init/dso_handle1.C: Require cxa_atexit support.
      	* g++.dg/init/dso_handle2.C: Likewise.
      	* g++.dg/other/cxa-atexit1.C: Likewise.
      	* gcc.target/msp430/msp430.exp: Update csv-using-installed.c test to
      	handle msp430-elfbare configuration.
      
      libgcc/ChangeLog:
      
      2019-12-16  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config.host: s/msp430*-*-elf/msp430-*-elf*.
      	Override default "extra_parts" variable.
      	* configure: Regenerate.
      	* configure.ac: Disable TM clone registry by default for
      	msp430-elfbare.
      
      From-SVN: r279442
      Jozef Lawrynowicz committed
    • [Ada] Suppress unused warnings in the presence of errors · 1edfb10a
      2019-12-16  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* errout.adb (Handle_Serious_Error): Disable the above-mentioned
      	warnings.
      
      From-SVN: r279441
      Bob Duff committed
    • [Ada] Minor: improve comments · 495cdc79
      2019-12-16  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* errout.adb, errout.ads: Improve comments.
      
      From-SVN: r279440
      Bob Duff committed
    • [Ada] Minor comment fix · 9aaea2cc
      2019-12-16  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* sem_util.ads: Minor comment fix.
      
      From-SVN: r279439
      Bob Duff committed
    • [Ada] Check for "size for" in Special_Msg_Delete · eb2ff584
      2019-12-16  Bob Duff  <duff@adacore.com>
      
      gcc/ada/
      
      	* errout.ads, errout.adb (Is_Size_Too_Small_Message): Check for
      	"size for" instead of "size for& too small, minimum allowed is
      	^".
      
      From-SVN: r279438
      Bob Duff committed
    • [Ada] Do not set a bogus Esize on subtype built for Component_Size clause · 1cbd2080
      2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Set only
      	the RM_Size on the subtype built for a Component_Size clause
      	when the component type is a biased integer type.
      
      From-SVN: r279437
      Eric Botcazou committed
    • [Ada] Fix warning on _REENTRANT · 08611be2
      2019-12-16  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* socket.c: Shutdown warning.
      
      From-SVN: r279436
      Arnaud Charlet committed
    • [Ada] Mark Deallocator as Favor_Top_Level · c1c3784b
      2019-12-16  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* libgnarl/s-tataat.ads (Deallocator): Mark as Favor_Top_Level.
      
      From-SVN: r279435
      Arnaud Charlet committed
    • [Ada] AI12-0234/321 atomic operations · 019c74bb
      2019-12-16  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* libgnat/s-aotase.adb, libgnat/s-aotase.ads,
      	libgnat/s-atoope.ads, libgnat/s-atopar.adb,
      	libgnat/s-atopar.ads, libgnat/s-atopex.adb,
      	libgnat/s-atopex.ads: New files.
      	* libgnat/s-atopri.ads: Add new intrinsics.
      	* Makefile.rtl: Add new runtime files.
      	* impunit.adb: Add new units to Ada 2020 list.
      
      From-SVN: r279434
      Arnaud Charlet committed
    • [Ada] Remove new strict-alignment check added by AI12-0001 · 1dcdd961
      2019-12-16  Eric Botcazou  <ebotcazou@adacore.com>
      
      gcc/ada/
      
      	* freeze.adb (Check_Strict_Alignment): Remove new check on
      	Has_Aliased_Components for array types.
      
      From-SVN: r279433
      Eric Botcazou committed