gcc.git
5 years ago[Ada] Renamed equality leads to spurious errors
Hristian Kirtchev [Wed, 14 Nov 2018 11:41:20 +0000 (11:41 +0000)]
[Ada] Renamed equality leads to spurious errors

The following patch corrects the search for the equality function to
handle cases where the equality could be a renaming of another routine.
No simple reproducer possible because this requires PolyORB.

2018-11-14  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch4.adb (Find_Aliased_Equality): New routine.
(Find_Equality): Reimplemented.
(Is_Equality): New routine.

From-SVN: r266121

5 years ago[Ada] Crash on ignored Ghost assignment
Hristian Kirtchev [Wed, 14 Nov 2018 11:41:14 +0000 (11:41 +0000)]
[Ada] Crash on ignored Ghost assignment

This patch modifies the way analysis determine whether an assignment is
an ignored Ghost assignment. This is now achieved by preanalyzing a copy
of the left hand side in order to account for potential code generated
by the left hand side itself.

No small reproducer possible.

2018-11-14  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* ghost.adb (Ghost_Entity): New routine.
(Mark_And_Set_Ghost_Assignment): Reimplemented.
* sem_ch5.adb (Analyze_Assignment): Assess whether the target of
the assignment is an ignored Ghost entity before analyzing the
left hand side.
* sem_ch8.adb (Find_Direct_Name): Update the subprogram
signature. Do not generate markers and references when they are
not desired.
(Nvis_Messages): Do not execute when errors are not desired.
(Undefined): Do not emit errors when they are not desired.
* sem_ch8.ads (Find_Direct_Name): Update the subprogram
signature and comment on usage.
* sem_util.adb (Ultimate_Prefix): New routine.
* sem_util.ads (Ultimate_Prefix): New routine.

From-SVN: r266120

5 years ago[Ada] Visibility error on used enumerated type
Justin Squirek [Wed, 14 Nov 2018 11:41:09 +0000 (11:41 +0000)]
[Ada] Visibility error on used enumerated type

This patch fixes an issue whereby the freezing of a nested package
containing an enumerated type declaration would cause visibility errors
on literals of such type when a use_all_type_clause for it appears
within the same declarative region.

2018-11-14  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* sem_ch7.adb (Uninstall_Declarations): Add conditional to avoid
uninstalling potential visibility during freezing on enumeration
literals.

gcc/testsuite/

* gnat.dg/enum5.adb: New testcase.

From-SVN: r266119

5 years ago[Ada] Do not include crt_externs.h on iOS
Jerome Lambourg [Wed, 14 Nov 2018 11:41:04 +0000 (11:41 +0000)]
[Ada] Do not include crt_externs.h on iOS

2018-11-14  Jerome Lambourg  <lambourg@adacore.com>

gcc/ada/

* env.c: Do not include crt_externs.h on iOS, as it does not
exist there. This is also true for the iPhone Simulator SDK.

From-SVN: r266118

5 years ago[Ada] Unnesting transformations for blocks in package bodies
Ed Schonberg [Wed, 14 Nov 2018 11:40:59 +0000 (11:40 +0000)]
[Ada] Unnesting transformations for blocks in package bodies

The declarations in the package body may have created blocks with nested
subprograms. Such a block must be transformed into a procedure followed
by a call to it, so that unnesting can handle uplevel references within
these nested subprograms (typically generated subprograms to handle
finalization actions).

2018-11-14  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_ch7.adb (Check_Unnesting_In_Declarations): New procedure
to transform blocks that appear in the declarative part of a
package body into subprograms if they contain generated
subprograms (such as finalization routines). Needed to generate
the proper upward references in unnesting mode.

From-SVN: r266117

5 years ago[Ada] Improper extension of bounds of fixed-point type
Ed Schonberg [Wed, 14 Nov 2018 11:40:52 +0000 (11:40 +0000)]
[Ada] Improper extension of bounds of fixed-point type

If the given Delta of an ordinariy fixed-point type is not a machine
number and there is no specified 'Small for the type, the compiler
chooses the actual bounds of the type using the nearest model numbers
that include the given bounds, but it is free to exclude those bounds if
a size clause restricts the number of bits to use for the type. This
patch fixes an error in the case where the bounds of the type can be
chosen to be larger than the bounds specified in the type declaration:
prior to this patch the lower bounds could be chosen to be one delta
smaller that the given bound, when that given bound was smaller than the
nearest machine number,

Compiling rep2.adb must yield:

   rep2.adb:7:24:
       warning: value not in range of type "Test_Type" defined at line 4
   rep2.adb:7:24:
       warning: "Constraint_Error" will be raised at run time

----
with Ada.Text_IO; use Ada.Text_IO;
procedure Rep2 is

   type    Test_Type is delta 0.1 range 0.1 .. 100.0 with Size => 16;
   subtype Next_Type is Test_Type range 0.1 .. 100.0;

   Item : Test_Type := 0.0;                        -- Why is this allowed?
   Next : Next_Type with Address => Item'Address;

begin

   Put_Line (Item'Img & " - " & Item'Valid'Img);  -- Returns "0.0 - TRUE"
   Put_Line (Next'Img & " - " & Next'Valid'Img);  -- Returns "0.0 - FALSE"

end Rep2;

2018-11-14  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* freeze.adb (Freeze_Fixed_Point_Type): If the given low bound
of the type is less than the nearest model number, do not expand
the range of the type to include the model number below the
bound. Similar adjustment if the upper bound is larger than the
nearest model number.

From-SVN: r266116

5 years ago[Ada] Limited function violates No_Exception_Propagation
Hristian Kirtchev [Wed, 14 Nov 2018 11:40:47 +0000 (11:40 +0000)]
[Ada] Limited function violates No_Exception_Propagation

This patch suppresses the generation of raise statements in the context
of build-in-place and elaboration checks for primitives of tagged types
when exceptions cannot be used.

2018-11-14  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* checks.adb (Install_Primitive_Elaboration_Check): Do not
create the check when exceptions cannot be used.
* exp_ch6.adb (Expand_N_Extended_Return_Statement): Do not raise
Program_Errror when exceptions cannot be used. Analyze the
generated code with all checks suppressed.
* exp_ch7.adb (Build_Finalizer): Remove the declaration of
Exceptions_OK.
(Make_Deep_Array_Body): Remove the declaration of Exceptions_OK.
(Make_Deep_Record_Body): Remove the declaration of
Exceptions_OK.
(Process_Transients_In_Scope): Remove the declaration of
Exceptions_OK.
* exp_util.adb (Exceptions_In_Finalization_OK): Renamed to
Exceptions_OK.
* exp_util.ads (Exceptions_In_Finalization_OK): Renamed to
Exceptions_OK.

gcc/testsuite/

* gnat.dg/bip_exception.adb, gnat.dg/bip_exception.ads,
gnat.dg/bip_exception_pkg.ads: New testcase.

From-SVN: r266115

5 years ago[Ada] Crash on tagged equality
Hristian Kirtchev [Wed, 14 Nov 2018 11:40:41 +0000 (11:40 +0000)]
[Ada] Crash on tagged equality

This patch corrects the retrieval of the equality function when it is
inherited from a parent tagged type.

2018-11-14  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_N_Op_Eq): Remove duplicated code and use
routine Find_Equality instead.
(Find_Equality): New routine.

gcc/testsuite/

* gnat.dg/equal4.adb, gnat.dg/equal4.ads,
gnat.dg/equal4_controlled_filter.ads,
gnat.dg/equal4_full_selector_filter.ads,
gnat.dg/equal4_smart_pointers.ads: New testcase.

From-SVN: r266114

5 years ago[Ada] Record components do not appear in the Global contract
Piotr Trojanek [Wed, 14 Nov 2018 11:40:35 +0000 (11:40 +0000)]
[Ada] Record components do not appear in the Global contract

In the Global contract there can be only entire objects, which are
represented either as N_Identifier or N_Expanded_Name. The test for
record components was dead. Now removed. Semantics unaffected.

2018-11-14  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_util.adb (First_From_Global_List): Do not expect
N_Selected_Component in the Global contract; simplify assertion
with Nam_In.

From-SVN: r266113

5 years ago[Ada] Fix handling of generic actuals with default expression in SPARK
Piotr Trojanek [Wed, 14 Nov 2018 11:40:30 +0000 (11:40 +0000)]
[Ada] Fix handling of generic actuals with default expression in SPARK

Both in the GNAT frontend and in the GNATprove backend we have
several checks related to generic actuals of mode IN that rely on the
Corresponding_Generic_Association flag. However, this flag was only set
for actuals with explicit expressions from the generic instance and unset
for actuals with implicit expressions from the generic unit.

For example, the code from the added testcase was wrongly rejected with
a message that Y (which is an actual with a default expression) cannot
appear in the Initializes contract. Now this code is accepted.

2018-11-14  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_ch12.adb (Instantiate_Object): Set
Corresponding_Generic_Association on generic actuals with
default expression.
* sinfo.ads (Corresponding_Generic_Association): Update comment.

gcc/testsuite/

* gnat.dg/generic_actuals.adb: New testcase.

From-SVN: r266112

5 years ago[Ada] Lingering loop for ignored Ghost assignment
Hristian Kirtchev [Wed, 14 Nov 2018 11:40:25 +0000 (11:40 +0000)]
[Ada] Lingering loop for ignored Ghost assignment

The following patch ensures that loops generated for aggregates as part
of ignored Ghost assignments are correctly eliminated from the generated
code.

------------
-- Source --
------------

--  pack.ads

package Pack is
   type addr4k is new Integer range 0 .. 100 with Size => 32;

   type Four_KB_Page_Property is record
      Is_Scrubbed : Boolean := False;
   end record with Ghost;

   type Four_KB_Page_Array is
     array (addr4k range <>) of Four_KB_Page_Property with Ghost;

   type Base_Memory is tagged record
      Four_KB_Pages : Four_KB_Page_Array (addr4k) :=
                        (others => (Is_Scrubbed => False));
   end record with Ghost;

   subtype Memory is Base_Memory with Ghost;
   Global_Memory : Memory with Ghost;

   procedure Assign;
end Pack;

--  pack.adb

package body Pack is
   procedure Assign is
   begin
      Global_Memory.Four_KB_Pages := (others => (Is_Scrubbed => True));
   end Assign;
end Pack;

----------------------------
-- Compilation and output --
----------------------------

$ gcc -c -gnatDG pack.adb
$ grep -c "loop" pack.adb.dg
0

2018-11-14  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch4.adb (Expand_Concatenate): Use the proper routine to
set the need for debug info.
* exp_dbug.adb (Build_Subprogram_Instance_Renamings): Use the
proper routine to set the need for debug info.
* exp_prag.adb (Expand_Pragma_Initial_Condition): Use the proper
routine to set the need for debug info.
* exp_util.adb (Build_DIC_Procedure_Declaration): Use the proper
routine to set the need for debug info.
(Build_Invariant_Procedure_Declaration): Use the proper routine
to set the need for debug info.
* ghost.adb (Record_Ignored_Ghost_Node): Add statements as a
whole class to the list of top level ignored Ghost nodes.
* sem_util.adb (Set_Debug_Info_Needed): Do not generate debug
info for an ignored Ghost entity.

From-SVN: r266111

5 years ago[Ada] Use Cancel_Special_Output instead of Set_Special_Output with null
Piotr Trojanek [Wed, 14 Nov 2018 11:40:20 +0000 (11:40 +0000)]
[Ada] Use Cancel_Special_Output instead of Set_Special_Output with null

I believe Cancel_Special_Output is easier to read and thus preferred;
otherwise, it wouldn't be introduced, so let's use it where possible.

2018-11-14  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* bindgen.adb, exp_cg.adb, repinfo.adb, sprint.adb: Minor reuse
Cancel_Special_Output where possible.

From-SVN: r266110

5 years ago[Ada] Fix parentheses in comments and "library-level" punctuation
Piotr Trojanek [Wed, 14 Nov 2018 11:40:14 +0000 (11:40 +0000)]
[Ada] Fix parentheses in comments and "library-level" punctuation

When acting as an adjective, it is "library-level something"; when
acting as a noun, it is "something at the library level".

2018-11-14  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* exp_dbug.ads, sem_util.ads: Minor fixes in comments.

From-SVN: r266109

5 years ago[Ada] Handle -gx switches explicitly
Arnaud Charlet [Wed, 14 Nov 2018 11:40:09 +0000 (11:40 +0000)]
[Ada] Handle -gx switches explicitly

2018-11-14  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* adabkend.adb (Scan_Back_End_Switches): Handle -gx switches
explicitly.

From-SVN: r266108

5 years agore PR tree-optimization/88019 (ICE in gimplify_modify_expr, at gimplify.c:5779)
Richard Biener [Wed, 14 Nov 2018 11:11:05 +0000 (11:11 +0000)]
re PR tree-optimization/88019 (ICE in gimplify_modify_expr, at gimplify.c:5779)

2018-11-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/88019
* graphite-isl-ast-to-gimple.c (ternary_op_to_tree): Rewrite
COND_EXPR arguments to non-trapping overflow.

From-SVN: r266105

5 years ago[ARC] Cleanup, fix and set LRA default.
Claudiu Zissulescu [Wed, 14 Nov 2018 09:45:39 +0000 (10:45 +0100)]
[ARC] Cleanup, fix and set LRA default.

LP_COUNT register cannot be freely allocated by the compiler as it
size, and/or content may change depending on the ARC hardware
configuration. Thus, make this register fixed.

Remove register classes and unused constraint letters.

Cleanup the implementation of conditional_register_usage hook by using
macros instead of magic constants and removing all references to
reg_class_contents which are bringing so much grief when lra is enabled.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.h (reg_class): Reorder registers classes, remove
unused register classes.
(REG_CLASS_NAMES): Likewise.
(REG_CLASS_CONTENTS): Likewise.
(FIXED_REGISTERS): Make lp_count fixed.
(BASE_REG_CLASS): Remove ACC16_BASE_REGS reference.
(PROGRAM_COUNTER_REGNO): Remove.
* config/arc/arc.c (arc_conditional_register_usage): Remove unused
register classes, use constants for register numbers, remove
reg_class_contents references.
(arc_process_double_reg_moves): Add asserts.
(arc_secondary_reload): Remove LPCOUNT_REG reference, use
lra_in_progress predicate.
(arc_init_reg_tables): Remove unused register classes.
(arc_register_move_cost): Likewise.
(arc_preferred_reload_class): Likewise.
(hwloop_optimize): Update rtx patterns involving lp_count
register.
(arc_return_address_register): Rename ILINK1, INLINK2 regnums
macros.
* config/arc/constraints.md ("c"): Choose between GENERAL_REGS and
CHEAP_CORE_REGS.  Former one will be used for LRA.
("Rac"): Choose between GENERAL_REGS and ALL_CORE_REGS.  Former
one will be used for LRA.
("w"): Choose between GENERAL_REGS and WRITABLE_CORE_REGS.  Former
one will be used for LRA.
("W"): Choose between GENERAL_REGS and MPY_WRITABLE_CORE_REGS.
Former one will be used for LRA.
("f"): Delete constraint.
("k"): Likewise.
("e"): Likewise.
("l"): Change it from register constraint to constraint.
* config/arc/arc.md (movqi_insn): Remove unsed lp_count constraints.
(movhi_insn): Likewise.
(movsi_insn): Update pattern.
(arc_lp): Likewise.
(dbnz): Likewise.
(stack_tie): Remove 'b' constraint letter.
(R4_REG): Define.
(R9_REG, R15_REG, R16_REG, R25_REG): Likewise.
(R32_REG, R40_REG, R41_REG, R42_REG, R43_REG, R44_REG): Likewise.
(R57_REG, R59_REG, PCL_REG): Likewise.
(ILINK1_REGNUM): Renamed to ILINK1_REG.
(ILINK2_REGNUM): Renamed to ILINK2_REG.
(Rgp): Remove.
(SP_REGS): Likewise.
(Rcw): Remove unused reg classes.
* config/arc/predicates.md (dest_reg_operand): Just default on
register_operand predicate.
(mpy_dest_reg_operand): Likewise.
(move_dest_operand): Use macros instead of constants.

From-SVN: r266100

5 years agore PR tree-optimization/87974 (ICE in vect_get_vec_def_for_stmt_copy)
Richard Biener [Wed, 14 Nov 2018 09:19:28 +0000 (09:19 +0000)]
re PR tree-optimization/87974 (ICE in vect_get_vec_def_for_stmt_copy)

2018-11-14  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87974
* tree-vect-loop.c (vectorizable_reduction): When computing
the vectorized reduction PHI vector type ignore constant
and external defs.

* g++.dg/opt/pr87974.C: New testcase.

From-SVN: r266099

5 years agore PR tree-optimization/87977 (ICE: verify_ssa failed (error: definition in block...
Jakub Jelinek [Wed, 14 Nov 2018 09:01:47 +0000 (10:01 +0100)]
re PR tree-optimization/87977 (ICE: verify_ssa failed (error: definition in block 4 follows the use))

PR tree-optimization/87977
* tree-ssa-math-opts.c (optimize_recip_sqrt): Don't reuse division
stmt, build a new one and replace the old one with it.  Formatting fix.
Call release_ssa_name (x) if !has_other_use and !delete_div.
(pass_cse_reciprocals::execute): Before calling optimize_recip_sqrt
verify lhs of stmt is still def.

* gcc.dg/recip_sqrt_mult_1.c: Add -fcompare-debug to dg-options.
* gcc.dg/recip_sqrt_mult_2.c: Likewise.
* gcc.dg/recip_sqrt_mult_3.c: Likewise.
* gcc.dg/recip_sqrt_mult_4.c: Likewise.
* gcc.dg/recip_sqrt_mult_5.c: Likewise.

From-SVN: r266098

5 years agore PR rtl-optimization/87507 (IRA unnecessarily uses non-volatile registers during...
Peter Bergner [Wed, 14 Nov 2018 02:17:35 +0000 (02:17 +0000)]
re PR rtl-optimization/87507 (IRA unnecessarily uses non-volatile registers during register assignment)

gcc/
PR rtl-optimization/87507
* lower-subreg.c (operand_for_swap_move_operator): New function.
(simple_move): Strip simple operators.
(find_pseudo_copy): Likewise.
(resolve_operand_for_swap_move_operator): New function.
(resolve_simple_move): Strip simple operators and swap operands.

gcc/testsuite/
PR rtl-optimization/87507
* gcc.target/powerpc/pr87507.c: New test.
* gcc.target/powerpc/pr68805.c: Update expected results.

From-SVN: r266097

5 years agoDaily bump.
GCC Administrator [Wed, 14 Nov 2018 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r266096

5 years agore PR tree-optimization/87898 (ICE in separate_decls_in_region_debug, at tree-parloop...
Jakub Jelinek [Wed, 14 Nov 2018 00:02:35 +0000 (01:02 +0100)]
re PR tree-optimization/87898 (ICE in separate_decls_in_region_debug, at tree-parloops.c:961)

PR tree-optimization/87898
* omp-simd-clone.c (ipa_simd_modify_stmt_ops): Formatting fix.
(ipa_simd_modify_function_body): Remove debug stmts where the first
argument was changed into a non-decl.

* gcc.dg/gomp/pr87898.c: New test.

From-SVN: r266093

5 years agoFix error when selecting number of memory pools
Jonathan Wakely [Tue, 13 Nov 2018 23:44:39 +0000 (23:44 +0000)]
Fix error when selecting number of memory pools

* src/c++17/memory_resource.cc (select_num_pools): Fix off-by-one
error when block_size is equal to one of the values in the array.

From-SVN: r266092

5 years agoFix unused parameter warnings introduced in earlier patch
Jonathan Wakely [Tue, 13 Nov 2018 23:02:22 +0000 (23:02 +0000)]
Fix unused parameter warnings introduced in earlier patch

* src/c++17/memory_resource.cc (_Pool::deallocate): Restore
attributes to parameters that are only used in assertions.

From-SVN: r266091

5 years agoRemove redundant loop in unsynchronized_pool_resource code
Jonathan Wakely [Tue, 13 Nov 2018 22:58:00 +0000 (22:58 +0000)]
Remove redundant loop in unsynchronized_pool_resource code

* src/c++17/memory_resource.cc (bitset::find_first_unset()): Remove
unused function.
(bitset::get_first_unset()): Remove loop, if there's are unset bits
then _M_next_word refers to the first one and there's no need to loop.
(_Pool::_Pool(size_t, size_t), _Pool::block_size()): Remove dead code.

From-SVN: r266090

5 years agoImprove handling of pool_options::largest_required_pool_block
Jonathan Wakely [Tue, 13 Nov 2018 22:57:53 +0000 (22:57 +0000)]
Improve handling of pool_options::largest_required_pool_block

Make the munge_options function round the largest_required_pool_block
value to a multiple of the smallest pool size (currently 8 bytes) to
avoid pools with odd sizes.

Ensure there is a pool large enough for blocks of the requested size.
Previously when largest_required_pool_block was exactly equal to one of
the pool_sizes[] values there would be no pool of that size. This patch
increases _M_npools by one, so there is a pool at least as large as the
requested value. It also reduces the size of the largest pool to be no
larger than needed.

* src/c++17/memory_resource.cc (munge_options): Round up value of
largest_required_pool_block to multiple of smallest pool size. Round
excessively large values down to largest pool size.
(select_num_pools): Increase number of pools by one unless it exactly
matches requested largest_required_pool_block.
(__pool_resource::_M_alloc_pools()): Make largest pool size equal
largest_required_pool_block.
* testsuite/20_util/unsynchronized_pool_resource/options.cc: Check
that pool_options::largest_required_pool_block is set appropriately.

From-SVN: r266089

5 years agoFix incorrect assertion when deallocating big block
Jonathan Wakely [Tue, 13 Nov 2018 22:57:48 +0000 (22:57 +0000)]
Fix incorrect assertion when deallocating big block

Since a big_block rounds up the size to a multiple of big_block::min it
is wrong to assert that the supplied number of bytes equals the
big_block's size(). Add big_block::alloc_size(size_t) to calculate the
allocated size consistently, and add comments to the code.

* src/c++17/memory_resource.cc (big_block): Improve comments.
(big_block::all_ones): Remove.
(big_block::big_block(size_t, size_t)): Use alloc_size.
(big_block::size()): Add comment, replace all_ones with equivalent
expression.
(big_block::align()): Shift value of correct type.
(big_block::alloc_size(size_t)): New function to round up size.
(__pool_resource::allocate(size_t, size_t)): Add comment.
(__pool_resource::deallocate(void*, size_t, size_t)): Likewise. Fix
incorrect assertion by using big_block::alloc_size(size_t).
* testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Add
more tests for unpooled allocations.

From-SVN: r266088

5 years agoFix overflows in std::pmr::unsynchonized_pool_resource
Jonathan Wakely [Tue, 13 Nov 2018 22:57:44 +0000 (22:57 +0000)]
Fix overflows in std::pmr::unsynchonized_pool_resource

* src/c++17/memory_resource.cc (bitset::full()): Handle edge case
for _M_next_word maximum value.
(bitset::get_first_unset(), bitset::set(size_type)): Use
update_next_word() to update _M_next_word.
(bitset::update_next_word()): New function, avoiding wraparound of
unsigned _M_next_word member.
(bitset::max_word_index()): New function.
(chunk::chunk(void*, uint32_t, void*, size_t)): Add assertion.
(chunk::max_bytes_per_chunk()): New function.
(pool::replenish(memory_resource*, const pool_options&)): Prevent
_M_blocks_per_chunk from exceeding max_blocks_per_chunk or from
causing chunk::max_bytes_per_chunk() to be exceeded.
* testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc:
New test.

From-SVN: r266087

5 years agore PR middle-end/87899 (r264897 cause mis-compiled native arm-linux-gnueabihf toolchain)
Peter Bergner [Tue, 13 Nov 2018 22:14:11 +0000 (22:14 +0000)]
re PR middle-end/87899 (r264897 cause mis-compiled native arm-linux-gnueabihf toolchain)

gcc/
PR rtl-optimization/87899
* lra-lives.c (start_living): Update white space in comment.
(enum point_type): New.
(sparseset_contains_pseudos_p): New function.
(update_pseudo_point): Likewise.
(make_hard_regno_live): Use HARD_REGISTER_NUM_P macro.
(make_hard_regno_dead): Likewise.  Remove ignore_reg_for_conflicts
handling.  Move early exit after adding conflicts.
(mark_pseudo_live): Use HARD_REGISTER_NUM_P macro.  Add early exit
if regno is already live.  Remove all handling of program points.
(mark_pseudo_dead): Use HARD_REGISTER_NUM_P macro.  Add early exit
after adding conflicts.  Remove all handling of program points and
ignore_reg_for_conflicts.
(mark_regno_live): Use HARD_REGISTER_NUM_P macro.  Remove return value
and do not guard call to mark_pseudo_live.
(mark_regno_dead): Use HARD_REGISTER_NUM_P macro.  Remove return value
and do not guard call to mark_pseudo_dead.
(check_pseudos_live_through_calls): Use HARD_REGISTER_NUM_P macro.
(process_bb_lives): Use HARD_REGISTER_NUM_P and HARD_REGISTER_P macros.
Use new function update_pseudo_point.  Handle register copies by
removing the source register from the live set.  Handle INOUT operands.
Update to the next program point using the unused_set, dead_set and
start_dying sets.
(lra_create_live_ranges_1): Use HARD_REGISTER_NUM_P macro.

From-SVN: r266086

5 years agoEliminate source_location in favor of location_t
David Malcolm [Tue, 13 Nov 2018 20:05:03 +0000 (20:05 +0000)]
Eliminate source_location in favor of location_t

Historically GCC used location_t, while libcpp used source_location.

This inconsistency has been annoying me for a while, so this patch
removes source_location in favor of location_t throughout
(as the latter is shorter).

gcc/ChangeLog:
* builtins.c: Replace "source_location" with "location_t".
* diagnostic-show-locus.c: Likewise.
* diagnostic.c: Likewise.
* dumpfile.c: Likewise.
* gcc-rich-location.h: Likewise.
* genmatch.c: Likewise.
* gimple.h: Likewise.
* gimplify.c: Likewise.
* input.c: Likewise.
* input.h: Likewise.  Eliminate the typedef.
* omp-expand.c: Likewise.
* selftest.h: Likewise.
* substring-locations.h (get_source_location_for_substring):
Rename to..
(get_location_within_string): ...this.
* tree-cfg.c: Replace "source_location" with "location_t".
* tree-cfgcleanup.c: Likewise.
* tree-diagnostic.c: Likewise.
* tree-into-ssa.c: Likewise.
* tree-outof-ssa.c: Likewise.
* tree-parloops.c: Likewise.
* tree-phinodes.c: Likewise.
* tree-phinodes.h: Likewise.
* tree-ssa-loop-ivopts.c: Likewise.
* tree-ssa-loop-manip.c: Likewise.
* tree-ssa-phiopt.c: Likewise.
* tree-ssa-phiprop.c: Likewise.
* tree-ssa-threadupdate.c: Likewise.
* tree-ssa.c: Likewise.
* tree-ssa.h: Likewise.
* tree-vect-loop-manip.c: Likewise.

gcc/c-family/ChangeLog:
* c-common.c (c_get_substring_location): Update for renaming of
get_source_location_for_substring to get_location_within_string.
* c-lex.c: Replace "source_location" with "location_t".
* c-opts.c: Likewise.
* c-ppoutput.c: Likewise.

gcc/c/ChangeLog:
* c-decl.c: Replace "source_location" with "location_t".
* c-tree.h: Likewise.
* c-typeck.c: Likewise.
* gimple-parser.c: Likewise.

gcc/cp/ChangeLog:
* call.c: Replace "source_location" with "location_t".
* cp-tree.h: Likewise.
* cvt.c: Likewise.
* name-lookup.c: Likewise.
* parser.c: Likewise.
* typeck.c: Likewise.

gcc/fortran/ChangeLog:
* cpp.c: Replace "source_location" with "location_t".
* gfortran.h: Likewise.

gcc/go/ChangeLog:
* go-gcc-diagnostics.cc: Replace "source_location" with "location_t".
* go-gcc.cc: Likewise.
* go-linemap.cc: Likewise.
* go-location.h: Likewise.
* gofrontend/README: Likewise.

gcc/jit/ChangeLog:
* jit-playback.c: Replace "source_location" with "location_t".

gcc/testsuite/ChangeLog:
* g++.dg/plugin/comment_plugin.c: Replace "source_location" with
"location_t".
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Likewise.

libcc1/ChangeLog:
* libcc1plugin.cc: Replace "source_location" with "location_t".
(plugin_context::get_source_location): Rename to...
(plugin_context::get_location_t): ...this.
* libcp1plugin.cc: Likewise.

libcpp/ChangeLog:
* charset.c: Replace "source_location" with "location_t".
* directives-only.c: Likewise.
* directives.c: Likewise.
* errors.c: Likewise.
* expr.c: Likewise.
* files.c: Likewise.
* include/cpplib.h: Likewise.  Rename MAX_SOURCE_LOCATION to
MAX_LOCATION_T.
* include/line-map.h: Likewise.
* init.c: Likewise.
* internal.h: Likewise.
* lex.c: Likewise.
* line-map.c: Likewise.
* location-example.txt: Likewise.
* macro.c: Likewise.
* pch.c: Likewise.
* traditional.c: Likewise.

From-SVN: r266085

5 years agoPR middle-end/81824 - Warn for missing attributes with function aliases
Martin Sebor [Tue, 13 Nov 2018 19:57:51 +0000 (19:57 +0000)]
PR middle-end/81824 - Warn for missing attributes with function aliases

gcc/c-family/ChangeLog:

* c-attribs.c (handle_copy_attribute): Exclude inlining attributes.
(handle_tls_model_attribute): Improve diagnostics.

gcc/testsuite/ChangeLog:

* gcc.dg/attr-copy-5.c: New test.
* gcc.dg/tls/diag-6.c: Adjust expected diagnostics.

From-SVN: r266084

5 years agoextend.texi: Fix typo in the weakref description.
Michael Ploujnikov [Tue, 13 Nov 2018 19:30:00 +0000 (19:30 +0000)]
extend.texi: Fix typo in the weakref description.

2018-11-13  Michael Ploujnikov  <michael.ploujnikov@oracle.com>

* doc/extend.texi: Fix typo in the weakref description.

From-SVN: r266083

5 years agoFix ChangeLog entry for r266080
David Malcolm [Tue, 13 Nov 2018 16:30:01 +0000 (16:30 +0000)]
Fix ChangeLog entry for r266080

From-SVN: r266082

5 years agore PR tree-optimization/86991 (ICE in vectorizable_reduction, at tree-vect-loop.c...
Richard Biener [Tue, 13 Nov 2018 16:14:37 +0000 (16:14 +0000)]
re PR tree-optimization/86991 (ICE in vectorizable_reduction, at tree-vect-loop.c:6919)

2018-11-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/86991
* tree-vect-loop.c (vect_is_slp_reduction): Delay reduction
group building until we have successfully detected the SLP
reduction.
(vect_is_simple_reduction): Remove fixup code here.

* gcc.dg/pr86991.c: New testcase.

From-SVN: r266081

5 years agoEnsure that dump calls are guarded with dump_enabled_p
David Malcolm [Tue, 13 Nov 2018 16:10:13 +0000 (16:10 +0000)]
Ensure that dump calls are guarded with dump_enabled_p

If called when !dump_enabled_p, the dump_* functions effectively do
nothing, but as of r263178 this doing "nothing" involves non-trivial
work internally.

I wasn't sure whether the dump_* functions should assert that
  dump_enabled_p ()
is true when they're called, or if they should bail out immediately
for this case, so in this patch I implemented both, so that we get
an assertion failure, and otherwise bail out for the case where
!dump_enabled_p when assertions are disabled.

The patch also fixes all of the places I found during testing
(on x86_64-pc-linux-gnu) that call into dump_* but which
weren't guarded by
  if (dump_enabled_p ())

gcc/ChangeLog:
* dumpfile.c (VERIFY_DUMP_ENABLED_P): New macro.
(dump_gimple_stmt): Use it.
(dump_gimple_stmt_loc): Likewise.
(dump_gimple_expr): Likewise.
(dump_gimple_expr_loc): Likewise.
(dump_generic_expr): Likewise.
(dump_generic_expr_loc): Likewise.
(dump_printf): Likewise.
(dump_printf_loc): Likewise.
(dump_dec): Likewise.
(dump_dec): Likewise.
(dump_hex): Likewise.
(dump_symtab_node): Likewise.

gcc/ChangeLog:
* gimple-loop-interchange.cc (tree_loop_interchange::interchange):
Guard dump call with dump_enabled_p.
* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Likewise.
* graphite-optimize-isl.c (optimize_isl): Likewise.
* graphite.c (graphite_transform_loops): Likewise.
* tree-loop-distribution.c (pass_loop_distribution::execute): Likewise.
* tree-parloops.c (parallelize_loops): Likewise.
* tree-ssa-loop-niter.c (number_of_iterations_exit): Likewise.
* tree-vect-data-refs.c (vect_analyze_group_access_1): Likewise.
(vect_prune_runtime_alias_test_list): Likewise.
* tree-vect-loop.c (vect_update_vf_for_slp): Likewise.
(vect_estimate_min_profitable_iters): Likewise.
* tree-vect-slp.c (vect_record_max_nunits): Likewise.
(vect_build_slp_tree_2): Likewise.
(vect_supported_load_permutation_p): Likewise.
(vect_slp_analyze_operations): Likewise.
(vect_slp_analyze_bb_1): Likewise.
(vect_slp_bb): Likewise.
* tree-vect-stmts.c (vect_analyze_stmt): Likewise.
* tree-vectorizer.c (try_vectorize_loop_1): Likewise.
(pass_slp_vectorize::execute): Likewise.
(increase_alignment): Likewise.

From-SVN: r266080

5 years agoFix ICE with -fopt-info-inline (PR ipa/87955)
David Malcolm [Tue, 13 Nov 2018 15:59:57 +0000 (15:59 +0000)]
Fix ICE with -fopt-info-inline (PR ipa/87955)

PR ipa/87955 reports a problem I introduced in r265920, where I converted
the guard in report_inline_failed_reason from using:
  if (dump_file)
to using
  if (dump_enabled_p ()).
without updating the calls to cl_target_option_print_diff and
cl_optimization_print_diff, which assume that dump_file is non-NULL.

The functions are auto-generated.  Rather than porting them to the dump
API, this patch applies the workaround of adding the missing checks on
dump_file before calling them.

gcc/ChangeLog:
PR ipa/87955
* ipa-inline.c (report_inline_failed_reason): Guard calls to
cl_target_option_print_diff and cl_optimization_print_diff with
if (dump_file).

gcc/testsuite/ChangeLog:
PR ipa/87955
* gcc.target/i386/pr87955.c: New test.

From-SVN: r266079

5 years ago-fsave-optimization-record: compress the output using zlib
David Malcolm [Tue, 13 Nov 2018 15:52:45 +0000 (15:52 +0000)]
-fsave-optimization-record: compress the output using zlib

gcc/ChangeLog:
* doc/invoke.texi (-fsave-optimization-record): Note that the
output is compressed.
* optinfo-emit-json.cc: Include <zlib.h>.
(optrecord_json_writer::write): Compress the output.

From-SVN: r266078

5 years agotree-vrp.c (value_range_base::dump): Dump type.
Aldy Hernandez [Tue, 13 Nov 2018 15:46:46 +0000 (15:46 +0000)]
tree-vrp.c (value_range_base::dump): Dump type.

* tree-vrp.c (value_range_base::dump): Dump type.
Do not use INF nomenclature for 1-bit types.
(dump_value_range): Group all variants to common dumping code.
(debug): New overloaded functions for value_ranges.
(value_range_base::dump): Remove no argument version.
(value_range::dump): Same.

testsuite/
* gcc.dg/tree-ssa/pr64130.c: Adjust for new value_range pretty
printer.
* gcc.dg/tree-ssa/vrp92.c: Same.

From-SVN: r266077

5 years agoMove a test-case to a proper folder.
Martin Liska [Tue, 13 Nov 2018 15:28:26 +0000 (16:28 +0100)]
Move a test-case to a proper folder.

2018-11-13  Martin Liska  <mliska@suse.cz>

* gcc.target/i386/pr87930.c: Move to ...
* gcc.dg/asan/pr87930.c: ... here.  Guard for i?86/x86_64 targets.

From-SVN: r266076

5 years agore PR tree-optimization/87931 (ICE in vectorizable_reduction, at tree-vect-loop.c...
Richard Biener [Tue, 13 Nov 2018 15:07:53 +0000 (15:07 +0000)]
re PR tree-optimization/87931 (ICE in vectorizable_reduction, at tree-vect-loop.c:6193 since r265876)

2018-11-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87931
* tree-vect-loop.c (vect_is_simple_reduction): Restrict
nested cycles we support to latch computations vectorizable_reduction
handles.

* gcc.dg/graphite/pr87931.c: New testcase.

From-SVN: r266075

5 years agoImprove -fprofile-report.
Martin Liska [Tue, 13 Nov 2018 15:06:54 +0000 (16:06 +0100)]
Improve -fprofile-report.

2018-11-13  Martin Liska  <mliska@suse.cz>

PR tree-optimization/87885
* cfghooks.c (account_profile_record): Rename
to ...
(profile_record_check_consistency): ... this.
Calculate missing num_mismatched_freq_in.
(profile_record_account_profile): New function
that calculates time and size of a function.
* cfghooks.h (struct profile_record): Remove
all tuples.
(struct cfg_hooks): Remove after_pass flag.
(account_profile_record): Rename to ...
(profile_record_check_consistency): ... this.
(profile_record_account_profile): New.
* cfgrtl.c (rtl_account_profile_record): Remove
after_pass flag.
* passes.c (check_profile_consistency): Do only
checking.
(account_profile): Calculate size and time of
function only.
(pass_manager::dump_profile_report): Reformat
output.
(execute_one_ipa_transform_pass): Call
consistency check before clean upand call account_profile
after a clean up is done.
(execute_one_pass): Call check_profile_consistency and
account_profile instead of using after_pass flag..
* tree-cfg.c (gimple_account_profile_record): Likewise.

From-SVN: r266074

5 years agoDo not allow -mabi=ms and -fsanitize={,kernel-}address (PR sanitizer/87930).
Martin Liska [Tue, 13 Nov 2018 15:03:58 +0000 (16:03 +0100)]
Do not allow -mabi=ms and -fsanitize={,kernel-}address (PR sanitizer/87930).

2018-11-13  Martin Liska  <mliska@suse.cz>

PR sanitizer/87930
* config/i386/i386.c (ix86_option_override_internal): Error
about usage -mabi=ms and -fsanitize={,kernel-}address.
2018-11-13  Martin Liska  <mliska@suse.cz>

PR sanitizer/87930
* gcc.target/i386/pr87930.c: New test.

From-SVN: r266073

5 years ago[PATCH][GCC] Make DR_TARGET_ALIGNMENT compile time variable
Andre Vieira [Tue, 13 Nov 2018 14:11:46 +0000 (14:11 +0000)]
[PATCH][GCC] Make DR_TARGET_ALIGNMENT compile time variable

This patch enables targets to describe DR_TARGET_ALIGNMENT as a compile-time
variable.  It does so by turning the variable into a 'poly_uint64'.

gcc/ChangeLog:
2018-11-13  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* config/aarch64/aarch64.c
(aarch64_vectorize_preferred_vector_alignment): Change return type to
poly_uint64.
(aarch64_simd_vector_alignment_reachable): Adapt to preferred vector
alignment being a poly int.
* doc/tm.texi (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Change
return type to poly_uint64.
* target.def (default_preferred_vector_alignment): Likewise.
* targhooks.c (default_preferred_vector_alignment): Likewise.
* targhooks.h (default_preferred_vector_alignment): Likewise.
* tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise.
(vect_compute_data_ref_alignment): Adapt to vector alignment being a
poly int.
(vect_update_misalignment_for_peel): Likewise.
(vect_enhance_data_refs_alignment): Likewise.
(vect_find_same_alignment_drs): Likewise.
(vect_duplicate_ssa_name_ptr_info): Likewise.
(vect_setup_realignment): Likewise.
(vect_can_force_dr_alignment_p): Change alignment parameter type to
poly_uint64.
* tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a
mask with a compile time variable vector alignment.
(vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly
int.
(vect_do_peeling): Exit early if vector alignment is not constant.
* tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being
a poly int.
(vectorizable_store): Likewise.
(vectorizable_load): Likweise.
* tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a
poly_uint64.
(vect_known_alignment_in_bytes): Adapt to vector alignment being a
poly int.
(vect_can_force_dr_alignment_p): Change alignment parameter type to
poly_uint64.

From-SVN: r266072

5 years agore PR tree-optimization/87962 (ICE in vect_get_vec_def_for_operand_1, at tree-vect...
Richard Biener [Tue, 13 Nov 2018 13:51:34 +0000 (13:51 +0000)]
re PR tree-optimization/87962 (ICE in vect_get_vec_def_for_operand_1, at tree-vect-stmts.c:1485)

2018-11-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87962
* tree-vect-loop.c (vect_is_simple_reduction): More reliably
detect outer reduction for disqualifying in-loop uses.

* gcc.dg/pr87962.c: New testcase.

From-SVN: r266071

5 years agore PR tree-optimization/87967 (ICE in slpeel_duplicate_current_defs_from_edges)
Richard Biener [Tue, 13 Nov 2018 13:50:18 +0000 (13:50 +0000)]
re PR tree-optimization/87967 (ICE in slpeel_duplicate_current_defs_from_edges)

2018-11-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/87967
* tree-vect-loop.c (vect_transform_loop): Also copy PHIs
for constants for the scalar loop.

* g++.dg/opt/pr87967.C: New testcase.

From-SVN: r266070

5 years ago[RS6000] Don't put large integer constants in TOC for -mcmodel=medium
Alan Modra [Tue, 13 Nov 2018 13:01:36 +0000 (23:31 +1030)]
[RS6000] Don't put large integer constants in TOC for -mcmodel=medium

For -mcmodel=medium we can use toc-relative addressing to access
constants placed in read-only data, which is better since they can be
merged when in .rodata.cst8.

* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude
integer constants when -mcmodel=medium.

From-SVN: r266069

5 years ago[ARC] Add support for profiling in glibc.
Claudiu Zissulescu [Tue, 13 Nov 2018 12:51:41 +0000 (13:51 +0100)]
[ARC] Add support for profiling in glibc.

Use PROFILE_HOOK to add mcount library calls in each toolchain.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty.
* config/arc/elf.h (PROFILE_HOOK): Define.
* config/arc/linux.h (PROFILE_HOOK): Likewise.

From-SVN: r266068

5 years ago[ARC] Do not emit ZOL in the presence of text jump tables.
Claudiu Zissulescu [Tue, 13 Nov 2018 12:51:30 +0000 (13:51 +0100)]
[ARC] Do not emit ZOL in the presence of text jump tables.

Avoid emitting lp instruction when in its ZOL body we find a jump
table data in text section. One of the reason is the jump tables size
can be changed latter on, hence the total ZOL length may be wrongly
computed.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (hwloop_optimize): Bailout when detecting a
jump table data in the text section.

From-SVN: r266067

5 years ago[ARC] Update EH code.
Claudiu Zissulescu [Tue, 13 Nov 2018 12:51:19 +0000 (13:51 +0100)]
[ARC] Update EH code.

Our ABI says the blink is pushed first on stack followed by an unknown
number of register saves, and finally by fp.  Hence we cannot use the
EH_RETURN_ADDRESS macro as the stack is not finalized at that moment.
The alternative is to use the eh_return pattern and to initialize all
the bits after register allocation when the stack layout is finalized.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (arc_eh_return_address_location): Repurpose it
to fit the eh_return pattern.
* config/arc/arc.md (eh_return): Define.
(VUNSPEC_ARC_EH_RETURN): Likewise.
* config/arc/arc-protos.h (arc_eh_return_address_location): Match
new implementation.
* config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it.

testsuite/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/builtin_eh.c: New test.

From-SVN: r266066

5 years ago[ARC] Refurbish and improve prologue/epilogue functions.
Claudiu Zissulescu [Tue, 13 Nov 2018 12:07:12 +0000 (13:07 +0100)]
[ARC] Refurbish and improve prologue/epilogue functions.

Reimplement how prologue and epilogue is emitted to accomodate
enter/leave instructions, as well as improving the size of the
existing techinques.

The following modifications are added:

- millicode thunk calls can be now selected regardless of the
  optimization level. However they are enabled for size optimizations
  by default.  Also, the millicode optimization is turned off when we
  compile for long jumps.

- the compiler is able to use enter/leave instructions for prologue
  and epilogue. As these instructions are not ABI compatible we gurad
  them under a switch (i.e., -mcode-density-frame). When this option
  is on, the compiler will try emitting enter/leave instructions, if
  not, then millicode thunk calls (if enabled), and latter the regular
  push/pop instructions.

- The prologue/epilogue is now optimized to use pointer walks, hence
  improving the chance to have push_s/pop_s instructions emitted. It
  also tries to combine the stack adjustments with load/store
  operations.

gcc/
xxxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

        * common/config/arc/arc-common.c (arc_option_optimization_table):
        Millicode optimization is default on for size optimizations.
        * config/arc/arc-protos.h (arc_check_multi): New function.
        * config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange.
        (ENTER_LEAVE_START_REG): Define.
        (ENTER_LEAVE_END_REG): Likewise.
        (arc_override_options): Disable millicode when long calls option
        is on.
        (arc_frame_info): Change it from int to bool.
        (arc_compute_frame_size): Clean up.
        (arc_save_restore): Remove.
        (frame_save_reg): New function.
        (frame_restore_reg): Likewise.
        (arc_enter_leave_p): Likewise.
        (arc_save_callee_saves): Likewise.
        (arc_restore_callee_saves): Likewise.
        (arc_save_callee_enter): Likewise.
        (arc_restore_callee_leave): Likewise.
        (arc_save_callee_milli): Likewise.
        (arc_restore_callee_milli): Likewise.
        (arc_expand_prologue): Reimplement to emit enter/leave
        instructions.
        (arc_expand_epilogue): Likewise.
        (arc_check_multi): New function.
        * config/arc/arc.md (push_multi_fp): New pattern.
        (push_multi_fp_blink): Likewise.
        (pop_multi_fp): Likewise.
        (pop_multi_fp_blink): Likewise.
        (pop_multi_fp_ret): Likewise.
        (pop_multi_fp_blink_ret): Likewise.
        * config/arc/arc.opt (mmillicode): Update option.
        (mcode-density-frame): New option.
        * config/arc/predicates.md (push_multi_operand): New predicate.
        (pop_multi_operand): Likewise.
        * doc/invoke.texi (ARC): Update ARC options information.

gcc/testsuite
xxxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

        * gcc.target/arc/firq-1.c: Update test.
        * gcc.target/arc/firq-3.c: Likewise.
        * gcc.target/arc/firq-4.c: Likewise.
        * gcc.target/arc/interrupt-6.c: Likewise.

From-SVN: r266065

5 years ago[ARC] Add peephole rules to combine store/loads into double store/loads
Claudiu Zissulescu [Tue, 13 Nov 2018 12:06:58 +0000 (13:06 +0100)]
[ARC] Add peephole rules to combine store/loads into double store/loads

Simple peephole rules which combines multiple ld/st instructions into
64-bit load/store instructions. It only works for architectures which
are having double load/store option on.

gcc/
Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc-protos.h (gen_operands_ldd_std): Add.
* config/arc/arc.c (operands_ok_ldd_std): New function.
(mem_ok_for_ldd_std): Likewise.
(gen_operands_ldd_std): Likewise.
* config/arc/arc.md: Add peephole2 rules for std/ldd.

From-SVN: r266064

5 years agotoplev.c (output_stack_usage): Turn test on flag_stack_usage into test on stack_usage...
Eric Botcazou [Tue, 13 Nov 2018 09:56:46 +0000 (09:56 +0000)]
toplev.c (output_stack_usage): Turn test on flag_stack_usage into test on stack_usage_file.

* toplev.c (output_stack_usage): Turn test on flag_stack_usage into
test on stack_usage_file.
(lang_dependent_init): Do not open the .su file if generating LTO.

From-SVN: r266063

5 years agore PR rtl-optimization/87918 (ICE in simplify_binary_operation, at simplify-rtx.c...
Jakub Jelinek [Tue, 13 Nov 2018 09:45:50 +0000 (10:45 +0100)]
re PR rtl-optimization/87918 (ICE in simplify_binary_operation, at simplify-rtx.c:2153 since r264688)

PR rtl-optimization/87918
* simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use
simplify_gen_relational rather than simplify_gen_binary.

* gcc.target/i386/pr87918.c: New test.

From-SVN: r266062

5 years agotree-ssanames.h (set_range_info): Use value_range_base.
Richard Biener [Tue, 13 Nov 2018 09:30:49 +0000 (09:30 +0000)]
tree-ssanames.h (set_range_info): Use value_range_base.

2018-11-13  Richard Biener  <rguenther@suse.de>

* tree-ssanames.h (set_range_info): Use value_range_base.
(get_range_info): Likewise.
* tree-ssanames.c (set_range_info): Likewise.
(get_range_info): Likewise.
* tree-vrp.c (value_range_base::union_helper): Split
out common parts of value_range[_base]::union_.
(value_range_base::union_): Update.
(value_range::union_): Likewise.
(determine_value_range_1): Use value_range_base.
(determine_value_range): Likewise.
* tree-vrp.h (value_range_base::union_helper): Move ...
(value_range::union_helper): ... from here.

From-SVN: r266061

5 years agolinux-unwind.h (_sig_ucontext_t): Remove.
Xianmiao Qu [Tue, 13 Nov 2018 09:12:36 +0000 (09:12 +0000)]
linux-unwind.h (_sig_ucontext_t): Remove.

2018-11-13  Xianmiao Qu  <xianmiao_qu@c-sky.com>

libgcc/
* config/csky/linux-unwind.h (_sig_ucontext_t): Remove.
(csky_fallback_frame_state): Modify the check of the
instructions to adapt to changes in the kernel

From-SVN: r266060

5 years agomisc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions for the runtime on platforms...
Eric Botcazou [Tue, 13 Nov 2018 09:02:33 +0000 (09:02 +0000)]
misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions for the runtime on platforms where...

* gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
for the runtime on platforms where System.Machine_Overflow is true.

From-SVN: r266057

5 years agoImplement P0315R4, Lambdas in unevaluated contexts.
Jason Merrill [Tue, 13 Nov 2018 04:49:09 +0000 (23:49 -0500)]
Implement P0315R4, Lambdas in unevaluated contexts.

When lambdas were added in C++11 they were banned from unevaluated contexts
as a way to avoid needing to deal with them in mangling or SFINAE.  This
proposal avoids that with a more narrow proposal: lambdas never compare as
equivalent (so we don't need to mangle them), and substitution failures
within a lambda are hard errors.  Lambdas appearing in places that types
couldn't previously have been declared introduces various complications; in
particular, it seems likely to mean types with no linkage being used more
broadly, risking ODR violations.  I want to follow up this patch with some
related diagnostics.

* decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR.
* mangle.c (write_expression): Handle LAMBDA_EXPR.
* parser.c (cp_parser_lambda_expression): Allow lambdas in
unevaluated context.  Start the tentative firewall sooner.
(cp_parser_lambda_body): Use cp_evaluated.
* pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR.
(tsubst_function_decl): Substitute a lambda even if it isn't
dependent.
(tsubst_lambda_expr): Use cp_evaluated.  Always complain.
(tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial.
* semantics.c (begin_class_definition): Allow in template parm list.
* tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR.
(cp_tree_equal): Handle LAMBDA_EXPR.

From-SVN: r266056

5 years agoAvoid double substitution with complete explicit template arguments.
Jason Merrill [Tue, 13 Nov 2018 04:47:20 +0000 (23:47 -0500)]
Avoid double substitution with complete explicit template arguments.

Previously, when we got a function template with explicit arguments for all
of the template parameters, we still did "deduction", which of course
couldn't deduce anything, but did other deduction-time checking of
non-dependent conversions and such.  This broke down with the unevaluated
lambdas patch (to follow): substituting into the lambda multiple times, once
to get the function type for deduction and then again to generate the actual
decl, doesn't work, since different substitutions of a lambda produce
different types.  I believe that skipping the initial substitution when we
have all the arguments is still conformant, and produces better diagnostics
for some testcases.

* pt.c (fn_type_unification): If we have a full set of explicit
arguments, go straight to substitution.

From-SVN: r266055

5 years agodecl2.c (min_vis_expr_r, [...]): New.
Jason Merrill [Tue, 13 Nov 2018 04:46:20 +0000 (23:46 -0500)]
decl2.c (min_vis_expr_r, [...]): New.

* decl2.c (min_vis_expr_r, expr_visibility): New.

We weren't properly constraining visibility based on names that appear in
the mangled representation of expressions.  This was made more obvious
by the upcoming unevaluated lambdas patch.

(min_vis_r): Call expr_visibility.
(constrain_visibility_for_template): Likewise.

From-SVN: r266054

5 years agoImplement P0722R3, destroying operator delete.
Jason Merrill [Tue, 13 Nov 2018 04:40:01 +0000 (23:40 -0500)]
Implement P0722R3, destroying operator delete.

A destroying operator delete takes responsibility for calling the destructor
for the object it is deleting; this is intended to be useful for sized
delete of a class allocated with a trailing buffer, where the compiler can't
know the size of the allocation, and so would pass the wrong size to the
non-destroying sized operator delete.

gcc/c-family/
* c-cppbuiltin.c (c_cpp_builtins): Define
__cpp_impl_destroying_delete.
gcc/cp/
* call.c (std_destroying_delete_t_p, destroying_delete_p): New.
(aligned_deallocation_fn_p, usual_deallocation_fn_p): Use
destroying_delete_p.
(build_op_delete_call): Handle destroying delete.
* decl2.c (coerce_delete_type): Handle destroying delete.
* init.c (build_delete): Don't call dtor with destroying delete.
* optimize.c (build_delete_destructor_body): Likewise.
libstdc++-v3/
* libsupc++/new (std::destroying_delete_t): New.

From-SVN: r266053

5 years agoImplement P0780R2, pack expansion in lambda init-capture.
Jason Merrill [Tue, 13 Nov 2018 04:34:59 +0000 (23:34 -0500)]
Implement P0780R2, pack expansion in lambda init-capture.

Mostly this was straightforward; the tricky bit was finding, in the
instantiation, the set of capture proxies built when instantiating the
init-capture.  The comment in lookup_init_capture_pack goes into detail.

* parser.c (cp_parser_lambda_introducer): Parse pack init-capture.
* pt.c (tsubst_pack_expansion): Handle init-capture packs.
(lookup_init_capture_pack): New.
(tsubst_expr) [DECL_EXPR]: Use it.
(tsubst_lambda_expr): Remember field pack expansions for
init-captures.

From-SVN: r266052

5 years agocp-tree.h (struct cp_evaluated): New.
Jason Merrill [Tue, 13 Nov 2018 04:33:57 +0000 (23:33 -0500)]
cp-tree.h (struct cp_evaluated): New.

* cp-tree.h (struct cp_evaluated): New.

This patch simplifies the saving/clearing/restoring of
cp_unevaluated_operand and c_inhibit_evaluation_warnings in the presence of
mid-block returns.

* init.c (get_nsdmi): Use it.
* parser.c (cp_parser_enclosed_template_argument_list): Use it.
* pt.c (coerce_template_parms, tsubst_aggr_type): Use it.

From-SVN: r266051

5 years agoChange __cpp_explicit_bool to __cpp_conditional_explicit.
Jason Merrill [Tue, 13 Nov 2018 04:32:25 +0000 (23:32 -0500)]
Change __cpp_explicit_bool to __cpp_conditional_explicit.

People objected to the old macro name as unclear, so it was changed.

* c-cppbuiltin.c (c_cpp_builtins): Change __cpp_explicit_bool to
__cpp_conditional_explicit.

From-SVN: r266050

5 years ago[RS6000] secondary_reload and find_replacement
Alan Modra [Tue, 13 Nov 2018 03:55:30 +0000 (14:25 +1030)]
[RS6000] secondary_reload and find_replacement

This patch removes a call only necessary when using reload.  It also
corrects a PRE_DEC address offset.

* config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate
offset for PRE_DEC.
(rs6000_secondary_reload_gpr): Don't call find_replacement.

From-SVN: r266049

5 years agore PR middle-end/59634 (Documentation (info/man page): lack of information for cache...
Sandra Loosemore [Tue, 13 Nov 2018 03:40:53 +0000 (22:40 -0500)]
re PR middle-end/59634 (Documentation (info/man page): lack of information for cache size parameters (--param))

2018-11-13  Sandra Loosemore  <sandra@codesourcery.com>

PR middle-end/59634

gcc/
* doc/invoke.texi (Optimize Options): Clarify that the
l1-cache-line-size, l1-cache-size, and l2-cache-size parameters
apply to data cache size.

From-SVN: r266048

5 years ago[RS6000] Comment fixes
Alan Modra [Tue, 13 Nov 2018 03:26:40 +0000 (13:56 +1030)]
[RS6000] Comment fixes

* config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix.

From-SVN: r266047

5 years ago[RS6000] Rotate testcase
Alan Modra [Tue, 13 Nov 2018 03:20:22 +0000 (13:50 +1030)]
[RS6000] Rotate testcase

The testcase exercises one of the rotate patterns.

gcc/
* config/rs6000/predicates.md (logical_const_operand),
(logical_operand): Correct comment.
gcc/testsuite/
* gcc.target/powerpc/rotmask.c: New.

From-SVN: r266046

5 years ago[RS6000] Hide insn not needing to be public
Alan Modra [Tue, 13 Nov 2018 03:12:45 +0000 (13:42 +1030)]
[RS6000] Hide insn not needing to be public

* config/rs6000/rs6000.md (addsi3_high): Prefix with '*'.

From-SVN: r266045

5 years ago[RS6000] Ignore "c", "l" and "h" for register preference
Alan Modra [Tue, 13 Nov 2018 03:03:10 +0000 (13:33 +1030)]
[RS6000] Ignore "c", "l" and "h" for register preference

This catches a few places where move insn patterns don't slightly
disparage CTR, LR and VRSAVE regs.  Also fixes the doc for the rs6000
h constraint, and removes an r->cl alternative covered by r->h.

* gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint
description.
* config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case
covered by alternative.
(movcc_internal1): Ignore h for register preference.
(mov<mode>_hardfloat64): Likewise.
(mov<mode>_softfloat): Ignore c, l, h for register preference.

From-SVN: r266044

5 years agore PR preprocessor/47823 (#pragma once is documented in a weird spot)
Sandra Loosemore [Tue, 13 Nov 2018 02:06:30 +0000 (21:06 -0500)]
re PR preprocessor/47823 (#pragma once is documented in a weird spot)

2018-11-12  Sandra Loosemore  <sandra@codesourcery.com>

PR preprocessor/47823

gcc/
* doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once
documentation to...
(Pragmas): ...here.
* doc/extend.texi (Pragmas): Note additional pragmas documented
in the CPP manual.

From-SVN: r266043

5 years agoDaily bump.
GCC Administrator [Tue, 13 Nov 2018 00:16:30 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r266042

5 years agore PR target/86677 (popcount builtin detection is breaking some kernel build)
Kugan Vivekanandarajah [Mon, 12 Nov 2018 23:43:56 +0000 (23:43 +0000)]
re PR target/86677 (popcount builtin detection is breaking some kernel build)

gcc/ChangeLog:

2018-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86677
PR middle-end/87528
* tree-scalar-evolution.c (expression_expensive_p): Make BUILTIN POPCOUNT
as expensive when backend does not define it.

gcc/testsuite/ChangeLog:

2018-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR middle-end/86677
PR middle-end/87528
* g++.dg/tree-ssa/pr86544.C: Run only for target supporting popcount
pattern.
* gcc.dg/tree-ssa/popcount.c: Likewise.
* gcc.dg/tree-ssa/popcount2.c: Likewise.
* gcc.dg/tree-ssa/popcount3.c: Likewise.
* gcc.target/aarch64/popcount4.c: New test.
* lib/target-supports.exp (check_effective_target_popcountl): New.

From-SVN: r266039

5 years agoMIPS: Default to --with-llsc for the R5900 Linux target as well
Fredrik Noring [Mon, 12 Nov 2018 23:16:40 +0000 (23:16 +0000)]
MIPS: Default to --with-llsc for the R5900 Linux target as well

The Linux kernel requires and emulates LL and SC for the R5900 too.  The
special --without-llsc default for the R5900 is therefore not applicable
in that case.

Reviewed-by: Maciej W. Rozycki <macro@linux-mips.org>
2018-11-12  Fredrik Noring  <noring@nocrew.org>

gcc/
* config.gcc: Update with-llsc defaults for MIPS r5900.

From-SVN: r266038

5 years agoInstrument only selected files (PR gcov-profile/87442).
Martin Liska [Mon, 12 Nov 2018 21:01:38 +0000 (22:01 +0100)]
Instrument only selected files (PR gcov-profile/87442).

2018-11-12  Martin Liska  <mliska@suse.cz>

PR gcov-profile/87442
* common.opt: Add -fprofile-filter-files and -fprofile-exclude-files
options.
* doc/invoke.texi: Document them.
* tree-profile.c (parse_profile_filter): New.
(parse_profile_file_filtering): Likewise.
(release_profile_file_filtering): Likewise.
(include_source_file_for_profile): Likewise.
(tree_profiling): Filter source files based on the
newly added options.
2018-11-12  Martin Liska  <mliska@suse.cz>

PR gcov-profile/87442
* gcc.dg/profile-filtering-1.c: New test.
* gcc.dg/profile-filtering-2.c: New test.

From-SVN: r266037

5 years agoFix documentation of __builtin_cpu_is and __builtin_cpu_supports for x86.
Martin Liska [Mon, 12 Nov 2018 20:58:02 +0000 (21:58 +0100)]
Fix documentation of __builtin_cpu_is and __builtin_cpu_supports for x86.

2018-11-12  Martin Liska  <mliska@suse.cz>

PR target/87903
* doc/extend.texi: Add missing values for __builtin_cpu_is and
__builtin_cpu_supports for x86 target.

From-SVN: r266036

5 years agore PR middle-end/21110 (incorrect documentat for high and lo_sum RTL operators)
Sandra Loosemore [Mon, 12 Nov 2018 19:08:37 +0000 (14:08 -0500)]
re PR middle-end/21110 (incorrect documentat for high and lo_sum RTL operators)

2018-11-12  Sandra Loosemore  <sandra@codesourcery.com>

PR middle-end/21110

gcc/
* doc/rtl.texi (Constants): Clarify that mode of "high" doesn't
have to be Pmode.
(Arithmetic): Likewise for "lo_sum".

From-SVN: r266035

5 years agoPR c/81824 - Warn for missing attributes with function aliases
Martin Sebor [Mon, 12 Nov 2018 18:02:41 +0000 (18:02 +0000)]
PR c/81824 - Warn for missing attributes with function aliases

gcc/testsuite/ChangeLog:
* gcc.dg/Wattribute-alias.c: Require ifunc support.

From-SVN: r266034

5 years ago[PR87815]Don't generate shift sequence for load replacement in DSE when the mode...
Renlin Li [Mon, 12 Nov 2018 16:47:24 +0000 (16:47 +0000)]
[PR87815]Don't generate shift sequence for load replacement in DSE when the mode size is not compile-time constant

The patch adds a check if the gap is compile-time constant.

This happens when dse decides to replace the load with previous store value.
The problem is that, shift sequence could not accept compile-time non-constant
mode operand.

gcc/

2018-11-12  Renlin Li  <renlin.li@arm.com>

PR target/87815
* dse.c (get_stored_val): Add check for compile-time
constantness of gap.

gcc/testsuite/

2018-11-12  Renlin Li  <renlin.li@arm.com>

PR target/87815
* gcc.target/aarch64/sve/pr87815.c: New.

From-SVN: r266033

5 years agoPR libstdc++/87963 fix build for 64-bit mingw
Jonathan Wakely [Mon, 12 Nov 2018 15:25:40 +0000 (15:25 +0000)]
PR libstdc++/87963 fix build for 64-bit mingw

PR libstdc++/87963
* src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from
unsigned to uint32_t.
(chunk): Fix static assertion for 64-bit targets that aren't LP64.
(bigblock::all_ones): Fix undefined shift.

From-SVN: r266032

5 years ago[GCC, ARM] Enable armv8.5-a and add +sb and +predres for previous ARMv8-a in ARM
Sudakshina Das [Mon, 12 Nov 2018 14:58:39 +0000 (14:58 +0000)]
[GCC, ARM] Enable armv8.5-a and add +sb and +predres for previous ARMv8-a in ARM

This patch adds -march=armv8.5-a to the Arm backend.
Armv8.5-A also adds two new security features:
- Speculation Barrier instruction
- Execution and Data Prediction Restriction Instructions
These are made optional to all older Armv8-A versions. Thus we are adding two
new options "+sb" and "+predres" to all older Armv8-A. These are passed on to
the assembler and have no code generation effects and have already gone in the
trunk of binutils.

*** gcc/ChangeLog ***

2018-11-12  Sudakshina Das  <sudi.das@arm.com>

* config/arm/arm-cpus.in (armv8_5, sb, predres): New features.
(ARMv8_5a): New fgroup.
(armv8.5-a): New arch.
(armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options
sb and predres.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/t-aprofile: Add matching rules for -march=armv8.5-a
* config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a.
* config/arm/t-multilib (v8_5_a_simd_variants): New variable.
Add matching rules for -march=armv8.5-a and extensions.
* doc/invoke.texi (ARM options): Document -march=armv8.5-a.
Add sb and predres to all armv8-a except armv8.5-a.

*** gcc/testsuite/ChangeLog ***

2018-11-12  Sudakshina Das  <sudi.das@arm.com>

* gcc.target/arm/multilib.exp: Add some -march=armv8.5-a
combination tests.

From-SVN: r266031

5 years ago2018-11=12 Richard Biener <rguenther@suse.de>
Richard Biener [Mon, 12 Nov 2018 14:53:36 +0000 (14:53 +0000)]
2018-11=12  Richard Biener  <rguenther@suse.de>

* tree-vrp.h (value_range[_base]::set): Make public.  Provide
overload for single value.
(value_range[_base]::set_nonnull): New.
(value_range[_base]::set_null): Likewise.
(value_range): Document bitmap copying behavior, mark
copy constructor and assignment operator deleted.
(value_range::move): New.
(value_range::set_and_canonicalize): Default bitmap to zero.
(set_value_range_to_nonnull): Remove.
(set_value_range_to_null): Likewise.
(set_value_range): Likewise.
(set_value_range_to_value): Likewise.
(extract_range_from_unary_expr): Work on value_range_base.
(extract_range_from_binary_expr_1): Likewise.  Rename to...
(extract_range_from_binary_expr): ... this.
* tree-vrp.c (value_range::update): Clear equiv bitmap
if required.
(value_range::move): New, move equiv bitmap.
(value_range_base::set_undefined): Avoid assignment.
(value_range::set_undefined): Likewise.
(value_range_base::set_varying): Likewise.
(value_range::set_varying): Likewise.
(set_value_range): Remove.
(value_range_base::set): New overload for value.
(value_range::set): Likewise.
(set_value_range_to_nonnull): Remove.
(value_range_base::set_nonnull): New.
(value_range::set_nonnull): Likewise.
(set_value_range_to_null): Remove.
(value_range_base::set_null): New.
(value_range::set_null): Likewise.
(range_is_null): Work on value_range_base.
(range_is_nonnull): Likewise.
(ranges_from_anti_range): Likewise.
(extract_range_into_wide_ints): Likewise.
(extract_range_from_multiplicative_op): Likewise.
(extract_range_from_binary_expr): Likewise.  Update for API changes.
(extract_range_from_unary_expr): Likewise.  Remove OBJ_TYPE_REF
handling.
(value_range::intersect_helper): Avoid copy and assignment.
(value_range::union_helper): Likewise.
(determine_value_range_1): Adjust.
* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
Avoid assignment by using move.
(evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment.
* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
Likewise.
* tree-ssanames.c (get_range_info): Likewise.
* vr-values.h (vr_values::get_vr_for_comparison): Adjust API.
* vr-values.c (vr_values::get_value_range): Adjust.
(vr_values::update_value_range): Likewise.
(symbolic_range_based_on_p): Work on value_range_base.
(vr_values::extract_range_from_binary_expr): Use value_range_base.
(vr_values::extract_range_from_unary_expr): Likewise.
(vr_values::extract_range_from_cond_expr): Avoid assignment.
(vr_values::extract_range_from_comparison): Adjust.
(vr_values::check_for_binary_op_overflow): Use value_range_base.
(vr_values::extract_range_basic): Adjust.
(vr_values::adjust_range_with_scev): Likewise.
(vr_values::vrp_visit_assignment_or_call): Likewise.
(vr_values::get_vr_for_comparison): Change API to avoid
assignment and copy construction.
(vr_values::compare_name_with_value): Adjust accordingly.
(vr_values::compare_names): Likewise.
(vr_values::extract_range_from_phi_node): Avoid assignment and
bogus in-place modify of equiv bitmap.
(vr_values::simplify_bit_ops_using_ranges): Use value_range_base.
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust
for extract_range_from_unary_expr API change.
* ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise.

From-SVN: r266030

5 years ago* config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate.
Eric Botcazou [Mon, 12 Nov 2018 12:00:37 +0000 (12:00 +0000)]
* config/mcore/mcore.h (WORD_REGISTER_OPERATIONS): Remove duplicate.

From-SVN: r266029

5 years agotree-vrp.h (value_range_base::symbolic_p, [...]): Move from value_range.
Richard Biener [Mon, 12 Nov 2018 11:59:32 +0000 (11:59 +0000)]
tree-vrp.h (value_range_base::symbolic_p, [...]): Move from value_range.

2018-11-12  Richard Biener  <rguenther@suse.de>

* tree-vrp.h (value_range_base::symbolic_p,
value_range_base::constant_p, value_range_base::zero_p,
value_range_base::singleton_p): Move from value_range.
(value_range::dump): Add.
* gimple-ssa-evrp-analyze.c
(evrp_range_analyzer::record_ranges_from_phis): Use set_varying.
* ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range.
* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
Use set_varying.
* tree-vrp.c (value_range::symbolic_p): Move to value_range_base.
(value_range::constant_p): Likewise.
(value_range::singleton_p): Likewise.
(value_range_base::dump): Add.
(set_value_range_to_undefined): Remove.
(set_value_range_to_varying): Likewise.
(range_int_cst_p): Take value_range_base argument.
(range_int_cst_singleton_p): Likewise.
(value_range_constant_singleton): Likewise.
(vrp_set_zero_nonzero_bits): Likewise.
(extract_range_from_multiplicative_op): Use set_varying.
(extract_range_from_binary_expr_1): Likewise. Use set_undefined.
(extract_range_from_unary_expr): Likewise.
(dump_value_range_base): Change to overload of dump_value_range.
(vrp_prop::vrp_initialize): Use set_varying and set_undefined.
(vrp_prop::visit_stmt): Likewise.
(value_range::intersect_helper): Likewise.
(value_range::union_helper): Likewise.
(determine_value_range_1): Likewise.

From-SVN: r266028

5 years agotree-vrp.c (set_value_range_to_nonnull): Clear equiv.
Richard Biener [Mon, 12 Nov 2018 11:16:36 +0000 (11:16 +0000)]
tree-vrp.c (set_value_range_to_nonnull): Clear equiv.

2018-11-12  Richard Biener  <rguenther@suse.de>

* tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
(set_value_range_to_null): Likewise.
* vr-values.c (vr_values::extract_range_from_comparison):
Clear equiv for constant singleton ranges.

From-SVN: r266027

5 years agosse.md: Combine VFIXUPIMM* patterns
Wei Xiao [Mon, 12 Nov 2018 08:52:37 +0000 (08:52 +0000)]
sse.md: Combine VFIXUPIMM* patterns

2018-11-12 Wei Xiao <wei3.xiao@intel.com>

        * config/i386/sse.md: Combine VFIXUPIMM* patterns
        (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
        (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
        (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
        (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
        (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
        (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.

From-SVN: r266026

5 years agore PR c/69502 (attribute aligned reduces alignment contrary to documentation)
Sandra Loosemore [Mon, 12 Nov 2018 06:23:16 +0000 (01:23 -0500)]
re PR c/69502 (attribute aligned reduces alignment contrary to documentation)

2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>

PR c/69502

gcc/
* doc/extend.texi (Common Type Attributes): For the align type
attribute, copy language about decreasing alignment from the
corresponding variable attribute.

From-SVN: r266025

5 years agocsky.md (*fpuv2_nmulsf3_1, [...]): Handle -frounding-math.
Xianmiao Qu [Mon, 12 Nov 2018 02:36:45 +0000 (02:36 +0000)]
csky.md (*fpuv2_nmulsf3_1, [...]): Handle -frounding-math.

2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>

gcc/
* config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle
-frounding-math.

gcc/testsuite
* gcc.target/csky/fnmul-1.c: New.
* gcc.target/csky/fnmul-2.c: New.
* gcc.target/csky/fnmul-3.c: New.
* gcc.target/csky/fnmul-4.c: New.

From-SVN: r266024

5 years agoDaily bump.
GCC Administrator [Mon, 12 Nov 2018 00:16:28 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r266023

5 years agore PR c++/43105 (Document restrictions on mixing -fno-rtti and -frtti)
Sandra Loosemore [Sun, 11 Nov 2018 22:46:00 +0000 (17:46 -0500)]
re PR c++/43105 (Document restrictions on mixing -fno-rtti and -frtti)

2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>

PR c++/43105

gcc/
* doc/invoke.texi (C++ Dialect Options): Add warning about mixing
-frtti and -fno-rtti code.

From-SVN: r266020

5 years agoFix copypasto in las ChangeLog.
Hans-Peter Nilsson [Sun, 11 Nov 2018 22:21:28 +0000 (22:21 +0000)]
Fix copypasto in las ChangeLog.

From-SVN: r266019

5 years agore PR libstdc++/54005 (Use __atomic_always_lock_free in libstdc++ is_lock_free instea...
Hans-Peter Nilsson [Sun, 11 Nov 2018 22:20:19 +0000 (22:20 +0000)]
re PR libstdc++/54005 (Use __atomic_always_lock_free in libstdc++ is_lock_free instead of __atomic_is_lock_free)

PR libstdc++-v3/54005
* include/bits/atomic_base.h (__atomic_base<_TTp>::is_lock_free(),
__atomic_base<_PTp*>::is_lock_free()): Call __atomic_always_lock_free
with the type-derived _S_alignment instead of __alignof the object.
* include/std/atomic (atomic<T>::is_lock_free()): Likewise.

From-SVN: r266018

5 years agore PR c/26366 (__builtin_expect needs better documentation)
Sandra Loosemore [Sun, 11 Nov 2018 18:39:10 +0000 (13:39 -0500)]
re PR c/26366 (__builtin_expect needs better documentation)

2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>

PR c/26366

gcc/
* doc/extend.texi (Other Builtins): Document probability associated
with __builtin_expect.

From-SVN: r266017

5 years agore PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386.c:11161...
Uros Bizjak [Sun, 11 Nov 2018 17:49:33 +0000 (18:49 +0100)]
re PR target/87928 (ICE in ix86_compute_frame_layout, at config/i386/i386.c:11161 since r228607)

PR target/87928
* config/i386/i386.h (STACK_BOUNDARY): Use TARGET_64BIT_MS_ABI
instead of (TARGET_64BIT && ix86_abi == MS_ABI).
* config/i386/darwin.h (STACK_BOUNDARY): Ditto.
* config/i386/cygming.h (STACK_BOUNDARY): Remove.

testsuite /Changelog:

PR target/87928
* gcc.target/i386/pr87928.c: New test.

From-SVN: r266016

5 years agocsky-linux-elf.h (CC1_SPEC): Support -profile.
Xianmiao Qu [Sun, 11 Nov 2018 14:56:23 +0000 (14:56 +0000)]
csky-linux-elf.h (CC1_SPEC): Support -profile.

2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>

* config/csky/csky-linux-elf.h (CC1_SPEC): Support -profile.

From-SVN: r266013

5 years agocsky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
Xianmiao Qu [Sun, 11 Nov 2018 13:44:01 +0000 (13:44 +0000)]
csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.

2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>

* config/csky/csky.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.

From-SVN: r266012

5 years agotree-vrp.h (class value_range_base): New base class for value_range containing all...
Richard Biener [Sun, 11 Nov 2018 08:51:34 +0000 (08:51 +0000)]
tree-vrp.h (class value_range_base): New base class for value_range containing all but the m_equiv member.

2018-11-11  Richard Biener  <rguenther@suse.de>

* tree-vrp.h (class value_range_base): New base class for
value_range containing all but the m_equiv member.
(dump_value_range_base): Add.
(range_includes_zero_p): Work on value_range_base.
* tree-vrp.c (value_range_base::set): Split out base handling
from...
(value_range::set): this.
(value_range::set_equiv): New.
(value_range_base::value_range_base): New constructors.
(value_range_base::check): Split out base handling from...
(value_range::check): this.
(value_range::equal_p): Refactor in terms of
ignore_equivs_equal_p which is now member of the base.
(value_range_base::set_undefined): New.
(value_range_base::set_varying): Likewise.
(value_range_base::dump):Split out base handling from...
(value_range::dump): this.
(value_range_base::set_and_canonicalize): Split out base handling
from...
(value_range::set_and_canonicalize): this.
(value_range_base::union_): New.
* ipa-prop.h (struct ipa_jump_func): Use value_range_base *
for m_vr.
* ipa-cp.c (class ipcp_vr_lattice): Use value_range_base
instead of value_range everywhere.
(ipcp_vr_lattice::print): Use dump_value_range_base.
(ipcp_vr_lattice::meet_with): Adjust.
(ipcp_vr_lattice::meet_with_1): Likewise.
(ipa_vr_operation_and_type_effects): Likewise.
(propagate_vr_across_jump_function): Likewise.
* ipa-prop.c (struct ipa_vr_ggc_hash_traits): Likewise.
(ipa_get_value_range): Likewise.
(ipa_set_jfunc_vr): Likewise.
(ipa_compute_jump_functions_for_edge): Likewise.

From-SVN: r266011

5 years agoImplement P0318R1 unwrap_ref_decay and unwrap_reference
Jonathan Wakely [Sun, 11 Nov 2018 05:17:03 +0000 (05:17 +0000)]
Implement P0318R1 unwrap_ref_decay and unwrap_reference

Implement P0318R1 unwrap_ref_decay and unwrap_reference
* include/std/type_traits (unwrap_reference, unwrap_reference_t)
(unwrap_ref_decay, unwrap_ref_decay_t): New traits and aliases.
* testsuite/20_util/unwrap_reference/1.cc: New test.
* testsuite/20_util/unwrap_reference/2.cc: New test.

From-SVN: r266010

5 years agoImplement P1007R3 std::assume_aligned
Jonathan Wakely [Sun, 11 Nov 2018 05:16:51 +0000 (05:16 +0000)]
Implement P1007R3 std::assume_aligned

Implement P1007R3 std::assume_aligned
* include/std/memory (assume_aligned): Implement for C++17.
* testsuite/20_util/assume_aligned/1.cc: New test.
* testsuite/20_util/assume_aligned/2_neg.cc: New test.
* testsuite/20_util/assume_aligned/3.cc: New test.

From-SVN: r266009

5 years agore PR middle-end/65703 (-fdefer-pop documentation is confusing)
Sandra Loosemore [Sun, 11 Nov 2018 01:33:53 +0000 (20:33 -0500)]
re PR middle-end/65703 (-fdefer-pop documentation is confusing)

2018-11-10  Sandra Loosemore  <sandra@codesourcery.com>

PR middle-end/65703

gcc/
* doc/invoke.texi (Optimize Options): Add @opindex entries
for the positive forms of -fno-xxx and -mno-xxx options
that were lacking them.

From-SVN: r266008

5 years agoDaily bump.
GCC Administrator [Sun, 11 Nov 2018 00:16:47 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r266007

5 years agocombine: More make_more_copies
Segher Boessenkool [Sat, 10 Nov 2018 23:12:48 +0000 (00:12 +0100)]
combine: More make_more_copies

This makes make_more_copies do what its documentation says, that is,
only make an intermediate pseudo if copying to a pseudo.

This regressed generated code quality when we didn't keep the original
notes that were on the copy, but since r265582 we do, and only allowing
pseudos now is a win.  It also simplifies the code.

* combine.c (make_more_copies): Only make an intermediate copy if the
dest of a move is a pseudo.

From-SVN: r266004