]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
7 years ago[Ada] Fix potential Constraint_Error if Library_Version is too long
pmderodat [Tue, 31 Jul 2018 09:56:53 +0000 (09:56 +0000)] 
[Ada] Fix potential Constraint_Error if Library_Version is too long

2018-07-31  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* gnatlink.adb: Fix potential Constraint_Error if
Library_Version is too long.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263107 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Sem_Elab: remove duplicate condition
pmderodat [Tue, 31 Jul 2018 09:56:48 +0000 (09:56 +0000)] 
[Ada] Sem_Elab: remove duplicate condition

2018-07-31  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* sem_elab.adb: Remove duplicate condition detected by CodePeer.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263106 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Unnesting: improve support for entries in protected objects
pmderodat [Tue, 31 Jul 2018 09:56:43 +0000 (09:56 +0000)] 
[Ada] Unnesting: improve support for entries in protected objects

2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_unst.adb (Subp_Index): In the case of a protected
operation, the relevant entry is the generated
protected_subprogram_body into which the original body is
rewritten. Assorted cleanup and optimizations.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263105 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Refine generation of range checks to happen in front end
pmderodat [Tue, 31 Jul 2018 09:56:36 +0000 (09:56 +0000)] 
[Ada] Refine generation of range checks to happen in front end

2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_attr.adb (Expand_Attribute, case Fixed_Value): Set the
base type of the result to ensure that proper overflow and range
checks are generated.  If the target is a fixed-point tyoe,
generate the required overflow and range checks explicitly,
rather than relying on Apply_Type_Conversion_Checks, which might
simply set the Do_Range_Check flag and rely on the backend to
add the check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263104 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Secondary stack leak with access-to-subprogram
pmderodat [Tue, 31 Jul 2018 09:56:31 +0000 (09:56 +0000)] 
[Ada] Secondary stack leak with access-to-subprogram

This patch modifies call resolution to recognize when the designated type of
an access-to-subprogram requires secondary stack management, and establish
the proper transient block.

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

--  leak7.adb

procedure Leak7 is
   Max_Iterations : constant := 10_000;

   function Func return String is
   begin
      return "Will this leak? Or will it dry?";
   end Func;

   type Func_Ptr is access function return String;

   procedure Anonymous_Leak (Func : access function return String) is
   begin
      for Iteration in 1 .. Max_Iterations loop
         declare
            Val : constant String := Func.all;
         begin null; end;
      end loop;
   end Anonymous_Leak;

   procedure Named_Leak (Func : Func_Ptr) is
   begin
      for Iteration in 1 .. Max_Iterations loop
         declare
            Val : constant String := Func.all;
         begin null; end;
      end loop;
   end Named_Leak;

begin
   Anonymous_Leak (Func'Access);
   Named_Leak     (Func'Access);
end Leak7;

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

$ gnatmake -q leak7.adb
$ valgrind ./leak7 >& leak7.txt
$ grep -c "still reachable" leak7.txt
0

2018-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Call): Establish a transient scope to
manage the secondary stack when the designated type of an
access-to-subprogram requires it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263103 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Unnesting: find local subps in nested stmt sequences
pmderodat [Tue, 31 Jul 2018 09:56:26 +0000 (09:56 +0000)] 
[Ada] Unnesting: find local subps in nested stmt sequences

2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada

* exp_ch7.adb (Check_Unnesting_Elaboration_Code): To find local
subprograms in the elaboration code for a package body, recurse
through nested statement sequences because a compiler-generated
procedure may appear within a condition statement.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263102 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Spurious error on default parameter in protected operation
pmderodat [Tue, 31 Jul 2018 09:56:21 +0000 (09:56 +0000)] 
[Ada] Spurious error on default parameter in protected operation

This patch fixes a spurious compiler error on a call to a protected
operation whose profile includes a defaulted in-parameter that is a call
to another protected function of the same object.

2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_ch6.adb (Expand_Protected_Subprogram_Call): Handle
properly a protected call that includes a default parameter that
is a call to a protected function of the same type.

gcc/testsuite/

* gnat.dg/prot5.adb, gnat.dg/prot5_pkg.adb,
gnat.dg/prot5_pkg.ads: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263101 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] GNATmake fails to detect missing body
pmderodat [Tue, 31 Jul 2018 09:56:15 +0000 (09:56 +0000)] 
[Ada] GNATmake fails to detect missing body

This patch corrects an issue whereby building a multi-unit compilation with
missing sources resulted in a cryptic "code generation" error instead of the
appropriate file not found error.

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

--  main.adb

with Types;
procedure Main is
begin
   null;
end;

--  types.ads

package Types is
  procedure Force;
end;

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

& gnatmake -q main.adb
gnatmake: "types.adb" not found

2018-07-31  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* lib-writ.adb (Write_With_Lines): Modfiy the generation of
dependencies within ali files so that source unit bodies are
properly listed even if said bodies are missing.  Perform legacy
behavior in GNATprove mode.
* lib-writ.ads: Modify documentation to reflect current behavior.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263100 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Fix alignment of mutex_t and cond_t type on 32-bit SPARC/Solaris
pmderodat [Tue, 31 Jul 2018 09:56:10 +0000 (09:56 +0000)] 
[Ada] Fix alignment of mutex_t and cond_t type on 32-bit SPARC/Solaris

The alignment of the couple of types from System.OS_Interface was wrongly
set to 4 (32-bit) instead of 8 (64-bit) in 32-bit mode.

2018-07-31  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

*  libgnarl/s-osinte__solaris.ads (upad64_t): New private type.
(mutex_t): Use it for 'lock' and 'data' components.
(cond_t): Likewise for 'data' and use single 'flags' component.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263099 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Wrong value after assignment of overlain record objects
pmderodat [Tue, 31 Jul 2018 09:56:04 +0000 (09:56 +0000)] 
[Ada] Wrong value after assignment of overlain record objects

This patch corrects an issue whereby objects of a record type with a
representation clause which are overlain by address would fail to get
assigned values properly when one or both of said objects were marked
volatile.

2018-07-31  Justin Squirek  <squirek@adacore.com>

gcc/ada/

* exp_ch5.adb (Make_Field_Assign): Force temporarily generated
objects for assignment of overlaid user objects to be renamings
instead of constant declarations.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263098 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Spurious error on the placement of aspect Global
pmderodat [Tue, 31 Jul 2018 09:55:59 +0000 (09:55 +0000)] 
[Ada] Spurious error on the placement of aspect Global

This patch modifies the expansion of stand-alone subprogram bodies that appear
in the body of a protected type to properly associate aspects and pragmas to
the newly created spec for the subprogram body. As a result, the annotations
are properly associated with the initial declaration of the subprogram.

2018-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_ch9.adb (Analyze_Pragmas): New routine.
(Build_Private_Protected_Declaration): Code clean up. Relocate
relevant aspects and pragmas from the stand-alone body to the
newly created spec.  Explicitly analyze any pragmas that have
been either relocated or produced by the analysis of the
aspects.
(Move_Pragmas): New routine.
* sem_prag.adb (Find_Related_Declaration_Or_Body): Recognize the
case where a pragma applies to the internally created spec for a
stand-along subprogram body declared in a protected body.

gcc/testsuite/

* gnat.dg/global.adb, gnat.dg/global.ads: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263097 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Compiler failure on an extended_return_statement in a block
pmderodat [Tue, 31 Jul 2018 09:55:53 +0000 (09:55 +0000)] 
[Ada] Compiler failure on an extended_return_statement in a block

When compiling with an assertion-enabled compiler, Assert_Failure can be
raised when expanded an extended_return_statement whose enclosing scope
is not a function (such as when it's a block_statement). The simple fix
is to change the Assert to test Current_Subprogram rather than Current_Scope.
Three such Assert pragmas are corrected in this way.

2018-07-31  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* exp_ch6.adb (Expand_N_Extended_Return_Statement): Replace
calls to Current_Scope in three assertions with calls to
Current_Subprogram.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263096 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Spurious warning on iteration over range of 64-bit modular type
pmderodat [Tue, 31 Jul 2018 09:55:48 +0000 (09:55 +0000)] 
[Ada] Spurious warning on iteration over range of 64-bit modular type

This patch suppresses a spurious warning on the use of a 64-bit modular type
in a quantified expression, where the range of iteration will include a bound
that appears larger than the run-time representation of Universal_Integer'last.

2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_eval.adb (Check_Non_Static_Context): Do not warn on an
integer literal greater than the upper bound of
Universal_Integer'Last when expansion is disabled, to avoid a
spurious warning over ranges involving 64-bit modular types.

gcc/testsuite/

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263095 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Print the Is_Activation_Record flag
pmderodat [Tue, 31 Jul 2018 09:55:43 +0000 (09:55 +0000)] 
[Ada] Print the Is_Activation_Record flag

2018-07-31  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

* einfo.adb (Write_Entity_Flags): Also print
Is_Activation_Record flag.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263094 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Replace low-level calls to Ekind with high-level calls to Is_Formal
pmderodat [Tue, 31 Jul 2018 09:55:37 +0000 (09:55 +0000)] 
[Ada] Replace low-level calls to Ekind with high-level calls to Is_Formal

High-level wrappers are easier to read. This change came up while reading
some code related to GNATprove, but then uniformly applied to the entire
frontend. For the few remaining membership tests that could be replaced
by Is_Formal it is not obvious whether the high-level routine makes the
code better.

2018-07-31  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* exp_aggr.adb, exp_ch4.adb, exp_ch6.adb, lib-xref.adb,
repinfo.adb, sem_ch9.adb: Minor replace Ekind membership tests
with a wrapper routine.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263093 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Deconstruct 'F' as a prefix for an ALI data
pmderodat [Tue, 31 Jul 2018 09:55:32 +0000 (09:55 +0000)] 
[Ada] Deconstruct 'F' as a prefix for an ALI data

In GNATprove we used to store a variant of cross-reference information in
the ALI file in lines that started with an 'F' letter. This is no longer
the case, so the letter can be returned to the pool of unused prefixes.

2018-07-31  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* ali.adb (Known_ALI_Lines): Remove 'F' as a prefix for lines
related to the FORMAL analysis done by GNATprove.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263092 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Fix a freezing issue
pmderodat [Tue, 31 Jul 2018 09:55:26 +0000 (09:55 +0000)] 
[Ada] Fix a freezing issue

2018-07-31  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem.ads (Inside_Preanalysis_Without_Freezing): New global
counter.
* sem.adb (Semantics): This subprogram has now the
responsibility of resetting the counter before analyzing a unit,
and restoring its previous value before returning.
* freeze.adb (Freeze_Entity): Do not freeze if we are
preanalyzing without freezing.
* sem_res.adb (Preanalyze_And_Resolve): Set & restore
In_Preanalysis_Without_Freezing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263091 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Fix resolution of class-wide operations that are generic actuals
pmderodat [Tue, 31 Jul 2018 09:55:21 +0000 (09:55 +0000)] 
[Ada] Fix resolution of class-wide operations that are generic actuals

2018-07-31  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch4.adb (Traverse_Homonyms): Consider generic actuals that
may rename a matching class-wide operation only if the renaming
declaration for that actual is in an enclosing scope (i.e.
within the corrresponding instance).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263090 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Minor reformattings
pmderodat [Tue, 31 Jul 2018 09:55:16 +0000 (09:55 +0000)] 
[Ada] Minor reformattings

2018-07-31  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada

* checks.adb, contracts.adb, exp_aggr.adb, exp_ch5.adb,
exp_disp.adb, make.adb, sem_ch4.adb, sem_eval.adb, sem_res.adb,
usage.adb: Minor reformatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263089 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[Ada] Spurious error -- "allocation from empty storage pool"
pmderodat [Tue, 31 Jul 2018 09:55:11 +0000 (09:55 +0000)] 
[Ada] Spurious error -- "allocation from empty storage pool"

This patch fixes a bug in which if "pragma Default_Storage_Pool (null);"
is given, then a build-in-place function will get an incorrect error
message "allocation from empty storage pool" even though there is no
such allocation in the source program.

2018-07-31  Bob Duff  <duff@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Allocator): Do not complain about the
implicit allocator that occurs in the expansion of a return
statement for a build-in-place function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263088 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoImprove specs processing to allow %* in function arguments
hainque [Tue, 31 Jul 2018 09:44:48 +0000 (09:44 +0000)] 
Improve specs processing to allow %* in function arguments

2018-07-31  Olivier Hainque  <hainque@adacore.com>

* gcc.c (handle_spec_function): Accept a soft_matched_part
argument, as do_spec_1.  Pass it down to ...
(eval_spec_function): Accept a soft_matched_part argument,
and pass it down to ...
(do_spec_2): Accept a soft_matched_part argument, and pass
it down to do_spec_1.
(do_spec_1): Pass soft_matched_part to handle_spec_function.
(handle_braces): Update call to handle_spec_function.
(driver::set_up_specs): Update calls to do_spec_2.
(compare_debug_dump_opt_spec_function): Likewise.
(compare_debug_self_opt_spec_function): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263087 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd support for -nolibc
hainque [Tue, 31 Jul 2018 09:24:41 +0000 (09:24 +0000)] 
Add support for -nolibc

2018-06-07  Olivier Hainque  <hainque@adacore.com>

* common.opt (nolibc): New option.
* doc/invoke.texi (Link Options): Document it.
* gcc.c (LINK_GCC_C_SEQUENCE_SPEC): Honor nolibc.
* config/alpha/linux.h: Likewise.
* config/arc/elf.h: Likewise.
* config/arm/uclinux-elf.h: Likewise.
* config/arm/unknown-elf.h: Likewise.
* config/avr/avrlibc.h: Likewise.
* config/bfin/bfin.h: Likewise.
* config/bfin/linux.h: Likewise.
* config/bfin/uclinux.h: Likewise.
* config/darwin.h: Likewise.
* config/darwin10.h: Likewise.
* config/darwin12.h: Likewise.
* config/gnu-user.h: Likewise.
* config/lm32/uclinux-elf.h: Likewise.
* config/pa/pa-hpux11.h: Likewise.
* config/pa/pa64-hpux.h: Likewise.
* config/sparc/sparc.h: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263083 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoReverting 'AsyncI/O patch committed' as it is breaking bare-metal builds.
avieira [Tue, 31 Jul 2018 08:42:21 +0000 (08:42 +0000)] 
Reverting 'AsyncI/O patch committed' as it is breaking bare-metal builds.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

Revert 'AsyncI/O patch committed'
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* gfortran.texi: Add description of asynchronous I/O.
* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
as volatile.
* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
st_wait_async and change argument spec from ".X" to ".w".
(gfc_trans_wait): Pass ID argument via reference.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

Revert 'AsyncI/O patch committed'
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* gfortran.dg/f2003_inquire_1.f03: Add write statement.
* gfortran.dg/f2003_io_1.f03: Add wait statement.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

Revert 'AsyncI/O patch committed'
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* Makefile.am: Add async.c to gfor_io_src.
Add async.h to gfor_io_headers.
* Makefile.in: Regenerated.
* gfortran.map: Add _gfortran_st_wait_async.
* io/async.c: New file.
* io/async.h: New file.
* io/close.c: Include async.h.
(st_close): Call async_wait for an asynchronous unit.
* io/file_pos.c (st_backspace): Likewise.
(st_endfile): Likewise.
(st_rewind): Likewise.
(st_flush): Likewise.
* io/inquire.c: Add handling for asynchronous PENDING
and ID arguments.
* io/io.h (st_parameter_dt): Add async bit.
(st_parameter_wait): Correct.
(gfc_unit): Add au pointer.
(st_wait_async): Add prototype.
(transfer_array_inner): Likewise.
(st_write_done_worker): Likewise.
* io/open.c: Include async.h.
(new_unit): Initialize asynchronous unit.
* io/transfer.c (async_opt): New struct.
(wrap_scalar_transfer): New function.
(transfer_integer): Call wrap_scalar_transfer to do the work.
(transfer_real): Likewise.
(transfer_real_write): Likewise.
(transfer_character): Likewise.
(transfer_character_wide): Likewise.
(transfer_complex): Likewise.
(transfer_array_inner): New function.
(transfer_array): Call transfer_array_inner.
(transfer_derived): Call wrap_scalar_transfer.
(data_transfer_init): Check for asynchronous I/O.
Perform a wait operation on any pending asynchronous I/O
if the data transfer is synchronous. Copy PDT and enqueue
thread for data transfer.
(st_read_done_worker): New function.
(st_read_done): Enqueue transfer or call st_read_done_worker.
(st_write_done_worker): New function.
(st_write_done): Enqueue transfer or call st_read_done_worker.
(st_wait): Document as no-op for compatibility reasons.
(st_wait_async): New function.
* io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK;
add NOTE where necessary.
(get_gfc_unit): Likewise.
(init_units): Likewise.
(close_unit_1): Likewise. Call async_close if asynchronous.
(close_unit): Use macros LOCK and UNLOCK.
(finish_last_advance_record): Likewise.
(newunit_alloc): Likewise.
* io/unix.c (find_file): Likewise.
(flush_all_units_1): Likewise.
(flush_all_units): Likewise.
* libgfortran.h (generate_error_common): Add prototype.
* runtime/error.c: Include io.h and async.h.
(generate_error_common): New function.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

Revert 'AsyncI/O patch committed'.
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* testsuite/libgomp.fortran/async_io_1.f90: New test.
* testsuite/libgomp.fortran/async_io_2.f90: New test.
* testsuite/libgomp.fortran/async_io_3.f90: New test.
* testsuite/libgomp.fortran/async_io_4.f90: New test.
* testsuite/libgomp.fortran/async_io_5.f90: New test.
* testsuite/libgomp.fortran/async_io_6.f90: New test.
* testsuite/libgomp.fortran/async_io_7.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263082 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogetenv_spec_function to prepend / to value for undef var
hainque [Tue, 31 Jul 2018 08:30:41 +0000 (08:30 +0000)] 
getenv_spec_function to prepend / to value for undef var

So the value can be used in places where an absolute path
is expected.

2018-07-31  Olivier Hainque  <hainque@adacore.com>

        * gcc.c (getenv_spec_function): Prepend '/' to value for
allowed undefined variables.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263081 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Tue, 31 Jul 2018 00:16:35 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263080 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoarm: Generate correct const_ints (PR86640)
segher [Mon, 30 Jul 2018 17:50:26 +0000 (17:50 +0000)] 
arm: Generate correct const_ints (PR86640)

In arm_block_set_aligned_vect 8-bit constants are generated as zero-
extended const_ints, not sign-extended as required.  Fix that.

PR target/86640
* config/arm/arm.c (arm_block_set_aligned_vect): Use gen_int_mode
instead of GEN_INT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263075 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86734 make reverse_iterator::operator-> more robust
redi [Mon, 30 Jul 2018 17:13:05 +0000 (17:13 +0000)] 
PR libstdc++/86734 make reverse_iterator::operator-> more robust

Implement the proposed resolution from LWG 1052, which also resolves
DR 2118 by avoiding taking the address in the first place.

PR libstdc++/86734
* include/bits/stl_iterator.h (reverse_iterator::operator->): Call
_S_to_pointer (LWG 1052, LWG 2118).
(reverse_iterator::_S_to_pointer): Define overloaded helper functions.
* testsuite/24_iterators/reverse_iterator/dr1052.cc: New test.
* testsuite/24_iterators/reverse_iterator/dr2188.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263074 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd workaround for aligned_alloc bug on AIX
redi [Mon, 30 Jul 2018 17:12:44 +0000 (17:12 +0000)] 
Add workaround for aligned_alloc bug on AIX

20_util/memory_resource/2.cc FAILs on AIX 7.2.0.0, because aligned_alloc
incorrectly requires the alignment to be a multiple of sizeof(void*).

This adds a workaround to the operator new overload taking an alignment
value, to increase the alignment (and size) if needed.

* libsupc++/new_opa.cc (operator new(size_t, align_val_t)): Add
workaround for aligned_alloc bug on AIX.
* testsuite/18_support/new_aligned.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263073 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agotestcase for 2-2 combine
segher [Mon, 30 Jul 2018 16:11:44 +0000 (16:11 +0000)] 
testcase for 2-2 combine

gcc/testsuite/
PR rtl-optimization/85160
* gcc.target/powerpc/combine-2-2.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263072 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * de.po, sv.po: Update.
jsm28 [Mon, 30 Jul 2018 15:31:04 +0000 (15:31 +0000)] 
* de.po, sv.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263070 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-30 Tom Tromey <tom@tromey.com>
tromey [Mon, 30 Jul 2018 13:47:01 +0000 (13:47 +0000)] 
2018-07-30  Tom Tromey  <tom@tromey.com>

* cplus-dem.c (remember_Btype): Don't call memcpy with LEN==0.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263069 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
edlinger [Mon, 30 Jul 2018 13:26:25 +0000 (13:26 +0000)] 
2018-07-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * tree-ssa-forwprop.c (simplify_builtin_call): Don't create a not NUL
        terminated string literal.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263068 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agocombine: Allow combining two insns to two insns
segher [Mon, 30 Jul 2018 13:18:17 +0000 (13:18 +0000)] 
combine: Allow combining two insns to two insns

This patch allows combine to combine two insns into two.  This helps
in many cases, by reducing instruction path length, and also allowing
further combinations to happen.  PR85160 is a typical example of code
that it can improve.

This patch does not allow such combinations if either of the original
instructions was a simple move instruction.  In those cases combining
the two instructions increases register pressure without improving the
code.  With this move test register pressure does no longer increase
noticably as far as I can tell.

(At first I also didn't allow either of the resulting insns to be a
move instruction.  But that is actually a very good thing to have, as
should have been obvious).

PR rtl-optimization/85160
* combine.c (is_just_move): New function.
(try_combine): Allow combining two instructions into two if neither of
the original instructions was a move.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263067 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARM] libgcc: Fix comment for code working on architectures >= 4.
clyon [Mon, 30 Jul 2018 12:51:42 +0000 (12:51 +0000)] 
[ARM] libgcc: Fix comment for code working on architectures >= 4.

2018-07-30  Christophe Lyon  <christophe.lyon@linaro.org>

* config/arm/ieee754-df.S: Fix comment for code working on
architectures >= 4.
* config/arm/ieee754-sf.S: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263066 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agodoc: discourage const/volatile on register variables (PR 86673)
amonakov [Mon, 30 Jul 2018 12:26:37 +0000 (12:26 +0000)] 
doc: discourage const/volatile on register variables (PR 86673)

PR target/86673
* doc/extend.texi (Global Register Variables): Discourage use of type
qualifiers.
(Local Register Variables): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263065 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoResync inline implementation of ceil_log2 (PR 86506)
rsandifo [Mon, 30 Jul 2018 11:23:26 +0000 (11:23 +0000)] 
Resync inline implementation of ceil_log2 (PR 86506)

In r262961 I only updated the out-of-line copy of ceil_log2.  This patch
applies the same change to the other (inline) one.

2018-07-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
PR tree-optimization/86506
* hwint.h (ceil_log2): Resync with hwint.c implementation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263064 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agolra: consider clobbers when selecting hard_regno to spill
krebbel [Mon, 30 Jul 2018 08:30:06 +0000 (08:30 +0000)] 
lra: consider clobbers when selecting hard_regno to spill

The idea behind the rclass loop in spill_hard_reg_in_range() seems to
be: find a hard_regno, which in general conflicts with reload regno,
but does not do so between `from` and `to`, and then do the live range
splitting based on this information. To check the absence of conflicts,
we make use of insn_bitmap, which does not contain insns which clobber
the hard_regno.

gcc/ChangeLog:

2018-07-30  Ilya Leoshkevich  <iii@linux.ibm.com>

        PR target/86547
* lra-constraints.c (spill_hard_reg_in_range): When selecting the
hard_regno, make sure no insn between `from` and `to` clobbers it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263063 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, nvptx] Handle per-function max-threads-per-block in default dims
vries [Mon, 30 Jul 2018 08:17:26 +0000 (08:17 +0000)] 
[libgomp, nvptx] Handle per-function max-threads-per-block in default dims

Currently parallel-loop-1.c fails at -O0 on a Quadro M1200, because one of the
kernel launch configurations exceeds the resources available in the device, due
to the default dimensions chosen by the runtime.

This patch fixes that by taking the per-function max_threads_per_block into
account when using the default dimensions.

2018-07-30  Tom de Vries  <tdevries@suse.de>

* plugin/plugin-nvptx.c (MIN, MAX): Redefine.
(nvptx_exec): Ensure worker and vector default dims don't exceed
targ_fn->max_threads_per_block.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263062 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, nvptx] Calculate default dims per device
vries [Mon, 30 Jul 2018 08:17:16 +0000 (08:17 +0000)] 
[libgomp, nvptx] Calculate default dims per device

The default dimensions are calculated using per-device properties, but
initialized once and used on all devices.

This patch fixes this problem by introducing per-device default dimensions.

2018-07-30  Tom de Vries  <tdevries@suse.de>

* plugin/plugin-nvptx.c (struct ptx_device): Add default_dims field.
(nvptx_open_device): Init default_dims for device.
(nvptx_exec): Use default_dims from device.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263061 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[nvptx, offloading] Determine default workers at runtime
vries [Mon, 30 Jul 2018 08:16:52 +0000 (08:16 +0000)] 
[nvptx, offloading] Determine default workers at runtime

Currently, if the user doesn't specify the number of workers for an openacc
region, the compiler hardcodes it to a default value.

This patch removes this functionality, such that the libgomp runtime can decide
on a default value.

2018-07-30  Cesar Philippidis  <cesar@codesourcery.com>
    Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (PTX_GANG_DEFAULT): Rename to ...
(PTX_DEFAULT_RUNTIME_DIM): ... this.
(nvptx_goacc_validate_dims): Set default worker and gang dims to
PTX_DEFAULT_RUNTIME_DIM.
(nvptx_dim_limit): Ignore GOMP_DIM_WORKER.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263060 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Mon, 30 Jul 2018 00:16:40 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263059 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * config/pa/pa.c (pa_output_addr_vec): Align address table.
danglin [Sun, 29 Jul 2018 15:50:13 +0000 (15:50 +0000)] 
* config/pa/pa.c (pa_output_addr_vec): Align address table.
* config/pa/pa.h (JUMP_TABLES_IN_TEXT_SECTION): Revise comment.
* config/pa/pa32-linux.h (JUMP_TABLES_IN_TEXT_SECTION): Define.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263051 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Sun, 29 Jul 2018 00:16:24 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263050 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoC++: clean up cp_printer
dmalcolm [Sat, 28 Jul 2018 17:03:56 +0000 (17:03 +0000)] 
C++: clean up cp_printer

This makes it easier to compare cp_printer with gcc_cxxdiag_char_table
in c-format.c.

No functional change intended.

gcc/cp/ChangeLog:
* error.c (cp_printer): In the leading comment, move "%H" and "%I"
into alphabetical order, and add missing "%G" and "%K".  Within
the switch statement, move cases 'G', 'H', 'I' and 'K' so that the
cases are in alphabetical order.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263046 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Sat, 28 Jul 2018 00:16:31 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263045 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-27 Michael Meissner <meissner@linux.ibm.com>
meissner [Fri, 27 Jul 2018 22:13:36 +0000 (22:13 +0000)] 
2018-07-27  Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/constraints.md (wG constraint): Delete, no longer
used.
* config/rs6000/predicates.md (p9_fusion_reg_operand): Rename
predicate to reflect toc fusion has been deleted.
(toc_fusion_mem_raw): Delete, no longer used.
(toc_fusion_mem_wrapped): Likewise.
* config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete toc
fusion mask bit.
* config/rs6000/rs6000-protos.h (fusion_wrap_memory_address):
Delete, no longer used.
* config/rs6000/rs6000.c (struct rs6000_reg_addr): Delete fields
meant to be used for toc fusion.
(rs6000_debug_print_mode): Delete toc fusion debugging.
(rs6000_debug_reg_global): Likewise.
(rs6000_init_hard_regno_mode_ok): Delete setting up fields for toc
fusion and secondary reload support that were never used.
(rs6000_option_override_internal): Delete TOC fusion, that was only
partially defined, and it did not work unless you also used the
-mcmodel= switch.
(rs6000_legitimate_address_p): Delete TOC fusion support.
(rs6000_opt_masks): Likewise.
(fusion_wrap_memory_address): Delete function, no longer used.
(fusion_split_address); Delete TOC fusion support.
* config/rs6000/rs6000.h (TARGET_TOC_FUSION_INT): Delete, no
longer used with toc fusion being deleted.
(TARGET_TOC_FUSION_FP): Likewise.
* config/rs6000/rs6000.md (UNSPEC_FUSION_ADDIS): Delete TOC fusion
UNSPEC.
(toc fusion spliter): Delete TOC fusion support.
(toc_fusionload_<mode>): Likewise.
(toc_fusionload_di): Likewise.
(fusion_gpr_load_<mode>): Delete generator function, this insn no
longer needs to be named.  Rename predicate to delete TOC fusion.
(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
(fusion_gpr_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
(fusion_vsx_<P:mode>_<GPR_FUSION:mode>_load): Likewise.
(fusion_vsx_<P:mode>_<GPR_FUSION:mode>_store): Likewise.
(p9 fusion peephole2s): Rename predicate to delete TOC fusion.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263039 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoUpdate .po files.
jsm28 [Fri, 27 Jul 2018 19:47:23 +0000 (19:47 +0000)] 
Update .po files.

* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
zh_TW.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263036 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago libgo: prune sighandler frames in runtime.sigprof
ian [Fri, 27 Jul 2018 18:43:34 +0000 (18:43 +0000)] 
libgo: prune sighandler frames in runtime.sigprof

    When writing stack frames to the pprof CPU profile machinery, it is
    very important to insure that the frames emitted do not contain any
    frames corresponding to artifacts of the profiling process itself
    (signal handlers, sigprof, etc). This patch changes runtime.sigprof to
    strip out those frames from the raw stack generated by
    "runtime.callers".

    Fixes golang/go#26595.

    Reviewed-on: https://go-review.googlesource.com/126175

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263035 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc/ChangeLog:
kelvin [Fri, 27 Jul 2018 17:38:10 +0000 (17:38 +0000)] 
gcc/ChangeLog:

2018-07-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* doc/extend.texi (Basic PowerPC Built-in Functions Available on
ISA 2.05):  Replace __uint128_t with __uint128 and __int128_t with
__int128 in built-in function prototypes.
(PowerPC AltiVec Built-in Functions on ISA 2.07): Likewise.
(PowerPC AltiVec Built-in Functions on ISA 3.0): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263033 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/86696 - ICE in handle_char_store at gcc/tree-ssa-strlen.c:3332
msebor [Fri, 27 Jul 2018 17:06:44 +0000 (17:06 +0000)] 
PR tree-optimization/86696 - ICE in handle_char_store at gcc/tree-ssa-strlen.c:3332

gcc/ChangeLog:

PR tree-optimization/86696
* tree-ssa-strlen.c (get_min_string_length): Handle all integer
types, including enums.
(handle_char_store): Be prepared for the above function to fail.

gcc/testsuite/ChangeLog:

PR tree-optimization/86696
* gcc.dg/pr86696.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263032 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFixes to testcase for PR tree-optimization/86636
dmalcolm [Fri, 27 Jul 2018 16:57:01 +0000 (16:57 +0000)] 
Fixes to testcase for PR tree-optimization/86636

gcc/testsuite/ChangeLog:
PR tree-optimization/86636
* gcc.c-torture/compile/pr86636.c: Add dg-do compile.
Add dg-require-effective-target pthread.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263031 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoi386: Remove _Unwind_Frames_Increment
hjl [Fri, 27 Jul 2018 14:40:47 +0000 (14:40 +0000)] 
i386: Remove _Unwind_Frames_Increment

CET kernel has been changed to place a restore token on shadow stack for
signal handler to enhance security.  It is usually transparent to user
programs since kernel will pop the restore token when signal handler
returns.  But when an exception is thrown from a signal handler, now
we need to remove _Unwind_Frames_Increment to pop the the restore token
from shadow stack.  Otherwise, we get

FAIL: g++.dg/torture/pr85334.C   -O0  execution test
FAIL: g++.dg/torture/pr85334.C   -O1  execution test
FAIL: g++.dg/torture/pr85334.C   -O2  execution test
FAIL: g++.dg/torture/pr85334.C   -O3 -g  execution test
FAIL: g++.dg/torture/pr85334.C   -Os  execution test
FAIL: g++.dg/torture/pr85334.C   -O2 -flto -fno-use-linker-plugin -flto-partition=none  execution test

PR libgcc/85334
* config/i386/shadow-stack-unwind.h (_Unwind_Frames_Increment):
Removed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263030 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDisable strcmp/strncmp/memcmp inlining when optimization
qinzhao [Fri, 27 Jul 2018 01:56:57 +0000 (01:56 +0000)] 
Disable strcmp/strncmp/memcmp inlining when optimization
level is lower than 2 or Os

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263028 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Fri, 27 Jul 2018 00:16:26 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263027 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * 30_threads/condition_variable_any/cond.cc: New test.
mpolacek [Thu, 26 Jul 2018 21:23:12 +0000 (21:23 +0000)] 
* 30_threads/condition_variable_any/cond.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263022 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR target/86612
pthaugen [Thu, 26 Jul 2018 20:41:25 +0000 (20:41 +0000)] 
PR target/86612
* gcc.target/powerpc/pr58673-2.c: Call strdup.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263020 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR tree-optimization/86043 - strlen after memcpy partially overwriting a string not...
msebor [Thu, 26 Jul 2018 16:45:43 +0000 (16:45 +0000)] 
PR tree-optimization/86043 - strlen after memcpy partially overwriting a string not optimized
PR tree-optimization/86042 - missing strlen optimization after second strcpy

gcc/ChangeLog:

PR tree-optimization/86043
PR tree-optimization/86042
* tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps.
(get_string_cst_length): Rename...
(get_min_string_length): ...to this.  Add argument.
(handle_char_store): Extend to handle multi-character stores by
MEM_REF.
* tree.c (initializer_zerop): Use new argument.  Handle MEM_REF.
* tree.h (initializer_zerop): Add argument.

gcc/testsuite/ChangeLog:

PR tree-optimization/86043
PR tree-optimization/86042
* gcc/testsuite/gcc.dg/attr-nonstring-2.c: Xfail test cases due to
pr86688.
* gcc.dg/strlenopt-44.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263018 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * src/c++98/locale_init.cc: Fix #ifdef condition.
mpolacek [Thu, 26 Jul 2018 16:36:50 +0000 (16:36 +0000)] 
* src/c++98/locale_init.cc: Fix #ifdef condition.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263016 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR testsuite/86660
jakub [Thu, 26 Jul 2018 16:12:58 +0000 (16:12 +0000)] 
PR testsuite/86660
* testsuite/libgomp.c++/for-15.C (results): Include it in
omp declare target region.
(main): Use map (always, tofrom: results) instead of
map (tofrom: results).

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263011 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR middle-end/86660
jakub [Thu, 26 Jul 2018 16:12:02 +0000 (16:12 +0000)] 
PR middle-end/86660
* omp-low.c (scan_sharing_clauses): Don't ignore map clauses for
declare target to variables if they have always,{to,from,tofrom} map
kinds.

* testsuite/libgomp.c/pr86660.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263010 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agolibsanitizer: Mark REAL(swapcontext) with indirect_return attribute on x86
hjl [Thu, 26 Jul 2018 14:48:55 +0000 (14:48 +0000)] 
libsanitizer: Mark REAL(swapcontext) with indirect_return attribute on x86

Cherry-pick compiler-rt revision 337603:

When shadow stack from Intel CET is enabled, the first instruction of all
indirect branch targets must be a special instruction, ENDBR.

lib/asan/asan_interceptors.cc has

...
  int res = REAL(swapcontext)(oucp, ucp);
...

REAL(swapcontext) is a function pointer to swapcontext in libc.  Since
swapcontext may return via indirect branch on x86 when shadow stack is
enabled, as in this case,

int res = REAL(swapcontext)(oucp, ucp);
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  This function may be
returned via an indirect branch.

Here compiler must insert ENDBR after call, like

call *bar(%rip)
endbr64

I opened an LLVM bug:

https://bugs.llvm.org/show_bug.cgi?id=38207

to add the indirect_return attribute so that it can be used to inform
compiler to insert ENDBR after REAL(swapcontext) call.  We mark
REAL(swapcontext) with the indirect_return attribute if it is available.

This fixed:

https://bugs.llvm.org/show_bug.cgi?id=38249

Reviewed By: eugenis

Differential Revision: https://reviews.llvm.org/D49608

PR target/86560
* asan/asan_interceptors.cc (swapcontext) Cherry-pick
compiler-rt revision 337603.
* sanitizer_common/sanitizer_internal_defs.h (__has_attribute):
Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263009 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd missing dg-require-cstdint directives to tests
redi [Thu, 26 Jul 2018 14:03:28 +0000 (14:03 +0000)] 
Add missing dg-require-cstdint directives to tests

* testsuite/18_support/aligned_alloc/aligned_alloc.cc: Add
dg-require-cstdint directive.
* testsuite/20_util/allocator/overaligned.cc: Likewise.
* testsuite/20_util/any/cons/aligned.cc: Likewise.
* testsuite/20_util/monotonic_buffer_resource/allocate.cc: Likewise.
* testsuite/20_util/monotonic_buffer_resource/deallocate.cc: Likewise.
* testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc:
Likewise.
* testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc: Likewise.
* testsuite/23_containers/list/modifiers/insert/25288.cc: Likewise.
* testsuite/23_containers/set/allocator/move_assign.cc: Likewise.
* testsuite/25_algorithms/make_heap/complexity.cc: Likewise.
* testsuite/25_algorithms/pop_heap/complexity.cc: Require cstdint and
random_device effective-target.
* testsuite/25_algorithms/push_heap/complexity.cc: Likewise.
* testsuite/25_algorithms/sample/1.cc: Require cstdint.
* testsuite/25_algorithms/sample/2.cc: Likewise.
* testsuite/25_algorithms/sort_heap/complexity.cc: Require cstdint
and random_device.
* testsuite/26_numerics/headers/random/types_std_c++0x.cc: Require
cstdint.
* testsuite/26_numerics/random/chi_squared_distribution/83833.cc:
Likewise.
* testsuite/26_numerics/random/discard_block_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/discard_block_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/independent_bits_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/linear_congruential_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/linear_congruential_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/mersenne_twister_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/mersenne_twister_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/pr60037-neg.cc: Likewise.
* testsuite/26_numerics/random/seed_seq/cons/65631.cc: Likewise.
* testsuite/26_numerics/random/shuffle_order_engine/requirements/
constexpr_data.cc: Add dg-require-cstdint directive.
* testsuite/26_numerics/random/shuffle_order_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
constexpr_data.cc: Likewise.
* testsuite/26_numerics/random/subtract_with_carry_engine/requirements/
constexpr_functions.cc: Likewise.
* testsuite/26_numerics/random/uniform_real_distribution/operators/
64351.cc: Likewise.
* testsuite/29_atomics/headers/atomic/types_std_c++0x.cc: Likewise.
* testsuite/experimental/algorithm/sample-2.cc: Likewise.
* testsuite/experimental/algorithm/sample.cc: Likewise.
* testsuite/experimental/algorithm/search.cc: Likewise.
* testsuite/experimental/algorithm/shuffle.cc: Likewise.
* testsuite/experimental/any/cons/aligned.cc: Likewise.
* testsuite/experimental/memory_resource/new_delete_resource.cc:
Likewise.
* testsuite/experimental/memory_resource/resource_adaptor.cc: Likewise.
* testsuite/experimental/random/randint.cc: Likewise.
* testsuite/experimental/source_location/1.cc: Likewise.
* testsuite/ext/bitmap_allocator/overaligned.cc: Likewise.
* testsuite/ext/malloc_allocator/overaligned.cc: Likewise.
* testsuite/ext/mt_allocator/overaligned.cc: Likewise.
* testsuite/ext/new_allocator/overaligned.cc: Likewise.
* testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
* testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
* testsuite/ext/pool_allocator/overaligned.cc: Likewise.
* testsuite/ext/throw_allocator/check_allocate_max_size.cc: Likewise.
* testsuite/ext/throw_allocator/check_deallocate_null.cc: Likewise.
* testsuite/ext/throw_allocator/check_delete.cc: Likewise.
* testsuite/ext/throw_allocator/check_new.cc: Likewise.
* testsuite/ext/throw_allocator/deallocate_global.cc: Likewise.
* testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
* testsuite/ext/throw_allocator/explicit_instantiation.cc: Likewise.
* testsuite/ext/throw_allocator/variadic_construct.cc: Likewise.
* testsuite/tr1/8_c_compatibility/cinttypes/functions.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263008 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove dg-require-cstdint directive from tests
redi [Thu, 26 Jul 2018 14:03:01 +0000 (14:03 +0000)] 
Remove dg-require-cstdint directive from tests

Tests for components which are no longer dependent on
_GLIBCXX_USE_C99_STDINT_TR1 do not need to require <cstdint>.

* testsuite/30_threads/recursive_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/recursive_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/requirements/typedefs.cc:
Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/recursive_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/recursive_mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/dest/
destructor_locked.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/native_handle/
typesizes.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
Likewise.
* testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/recursive_timed_mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
* testsuite/30_threads/scoped_lock/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/shared_future/cons/assign.cc: Likewise.
* testsuite/30_threads/shared_future/cons/constexpr.cc: Likewise.
* testsuite/30_threads/shared_future/cons/copy.cc: Likewise.
* testsuite/30_threads/shared_future/cons/default.cc: Likewise.
* testsuite/30_threads/shared_future/cons/move.cc: Likewise.
* testsuite/30_threads/shared_future/cons/move_assign.cc: Likewise.
* testsuite/30_threads/shared_future/members/45133.cc: Likewise.
* testsuite/30_threads/shared_future/members/get.cc: Likewise.
* testsuite/30_threads/shared_future/members/get2.cc: Likewise.
* testsuite/30_threads/shared_future/members/valid.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_for.cc: Likewise.
* testsuite/30_threads/shared_future/members/wait_until.cc: Likewise.
* testsuite/30_threads/shared_future/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/1.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/2.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/3.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/4.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/5.cc: Likewise.
* testsuite/30_threads/shared_lock/cons/6.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/1.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/2.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/3.cc: Likewise.
* testsuite/30_threads/shared_lock/locking/4.cc: Likewise.
* testsuite/30_threads/shared_lock/modifiers/1.cc: Likewise.
* testsuite/30_threads/shared_lock/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/shared_lock/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/shared_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/shared_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/shared_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/shared_mutex/requirements/standard_layout.cc:
Likewise.
* testsuite/30_threads/shared_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/shared_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/shared_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/requirements/
standard_layout.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/try_lock/3.cc: Likewise.
* testsuite/30_threads/shared_timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/this_thread/1.cc: Likewise.
* testsuite/30_threads/this_thread/2.cc: Likewise.
* testsuite/30_threads/this_thread/3.cc: Likewise.
* testsuite/30_threads/this_thread/4.cc: Likewise.
* testsuite/30_threads/this_thread/58038.cc: Likewise.
* testsuite/30_threads/thread/70503.cc: Likewise.
* testsuite/30_threads/thread/84532.cc: Likewise.
* testsuite/30_threads/thread/adl.cc: Likewise.
* testsuite/30_threads/thread/cons/1.cc: Likewise.
* testsuite/30_threads/thread/cons/2.cc: Likewise.
* testsuite/30_threads/thread/cons/3.cc: Likewise.
* testsuite/30_threads/thread/cons/4.cc: Likewise.
* testsuite/30_threads/thread/cons/49668.cc: Likewise.
* testsuite/30_threads/thread/cons/5.cc: Likewise.
* testsuite/30_threads/thread/cons/6.cc: Likewise.
* testsuite/30_threads/thread/cons/7.cc: Likewise.
* testsuite/30_threads/thread/cons/8.cc: Likewise.
* testsuite/30_threads/thread/cons/84535.cc: Likewise.
* testsuite/30_threads/thread/cons/9.cc: Likewise.
* testsuite/30_threads/thread/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/thread/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/thread/cons/lwg2097.cc: Likewise.
* testsuite/30_threads/thread/cons/moveable.cc: Likewise.
* testsuite/30_threads/thread/cons/terminate.cc: Likewise.
* testsuite/30_threads/thread/id/operators.cc: Likewise.
* testsuite/30_threads/thread/members/1.cc: Likewise.
* testsuite/30_threads/thread/members/2.cc: Likewise.
* testsuite/30_threads/thread/members/3.cc: Likewise.
* testsuite/30_threads/thread/members/4.cc: Likewise.
* testsuite/30_threads/thread/members/5.cc: Likewise.
* testsuite/30_threads/thread/members/hardware_concurrency.cc:
Likewise.
* testsuite/30_threads/thread/native_handle/cancel.cc: Likewise.
* testsuite/30_threads/thread/swap/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/timed_mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/timed_mutex/requirements/
standard_layout.cc: Likewise.
* testsuite/30_threads/timed_mutex/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
* testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
* testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/timed_mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/try_lock/1.cc: Likewise.
* testsuite/30_threads/try_lock/2.cc: Likewise.
* testsuite/30_threads/try_lock/3.cc: Likewise.
* testsuite/30_threads/try_lock/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/1.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/2.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/3.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/4.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
* testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/1.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/2.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
* testsuite/30_threads/unique_lock/locking/4.cc: Likewise.
* testsuite/30_threads/unique_lock/modifiers/1.cc: Likewise.
* testsuite/30_threads/unique_lock/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/unique_lock/requirements/typedefs.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263007 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove dg-require-cstdint directive from tests
redi [Thu, 26 Jul 2018 14:02:42 +0000 (14:02 +0000)] 
Remove dg-require-cstdint directive from tests

Tests for components which are no longer dependent on
_GLIBCXX_USE_C99_STDINT_TR1 do not need to require <cstdint>.

* testsuite/30_threads/async/42819.cc: Remove dg-require-cstdint
directive.
* testsuite/30_threads/async/49668.cc: Likewise.
* testsuite/30_threads/async/54297.cc: Likewise.
* testsuite/30_threads/async/84532.cc: Likewise.
* testsuite/30_threads/async/any.cc: Likewise.
* testsuite/30_threads/async/async.cc: Likewise.
* testsuite/30_threads/async/except.cc: Likewise.
* testsuite/30_threads/async/forced_unwind.cc: Likewise.
* testsuite/30_threads/async/launch.cc: Likewise.
* testsuite/30_threads/async/lwg2021.cc: Likewise.
* testsuite/30_threads/async/sync.cc: Likewise.
* testsuite/30_threads/call_once/39909.cc: Likewise.
* testsuite/30_threads/call_once/49668.cc: Likewise.
* testsuite/30_threads/call_once/60497.cc: Likewise.
* testsuite/30_threads/call_once/call_once1.cc: Likewise.
* testsuite/30_threads/call_once/constexpr.cc: Likewise.
* testsuite/30_threads/call_once/dr2442.cc: Likewise.
* testsuite/30_threads/call_once/once_flag.cc: Likewise.
* testsuite/30_threads/condition_variable/54185.cc: Likewise.
* testsuite/30_threads/condition_variable/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable/cons/assign_neg.cc:
Likewise.
* testsuite/30_threads/condition_variable/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/condition_variable/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable/members/2.cc: Likewise.
* testsuite/30_threads/condition_variable/members/3.cc: Likewise.
* testsuite/30_threads/condition_variable/members/53841.cc: Likewise.
* testsuite/30_threads/condition_variable/members/68519.cc: Likewise.
* testsuite/30_threads/condition_variable/native_handle/typesizes.cc:
Likewise.
* testsuite/30_threads/condition_variable/requirements/
standard_layout.cc: Likewise.
* testsuite/30_threads/condition_variable/requirements/typedefs.cc:
* Likewise.
* testsuite/30_threads/condition_variable_any/50862.cc: Likewise.
* testsuite/30_threads/condition_variable_any/53830.cc: Likewise.
* testsuite/30_threads/condition_variable_any/cons/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/cons/assign_neg.cc:
Likewise.
* testsuite/30_threads/condition_variable_any/cons/copy_neg.cc:
Likewise.
* testsuite/30_threads/condition_variable_any/members/1.cc: Likewise.
* testsuite/30_threads/condition_variable_any/members/2.cc: Likewise.
* testsuite/30_threads/future/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/future/cons/constexpr.cc: Likewise.
* testsuite/30_threads/future/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/future/cons/default.cc: Likewise.
* testsuite/30_threads/future/cons/move.cc: Likewise.
* testsuite/30_threads/future/cons/move_assign.cc: Likewise.
* testsuite/30_threads/future/members/45133.cc: Likewise.
* testsuite/30_threads/future/members/get.cc: Likewise.
* testsuite/30_threads/future/members/get2.cc: Likewise.
* testsuite/30_threads/future/members/share.cc: Likewise.
* testsuite/30_threads/future/members/valid.cc: Likewise.
* testsuite/30_threads/future/members/wait.cc: Likewise.
* testsuite/30_threads/future/members/wait_for.cc: Likewise.
* testsuite/30_threads/future/members/wait_until.cc: Likewise.
* testsuite/30_threads/future/requirements/explicit_instantiation.cc:
Likewise.
* testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc:
Likewise.
* testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
* testsuite/30_threads/headers/mutex/types_std_c++0x.cc: Likewise.
* testsuite/30_threads/headers/thread/std_c++0x_neg.cc: Likewise.
* testsuite/30_threads/headers/thread/types_std_c++0x.cc: Likewise.
* testsuite/30_threads/lock/1.cc: Likewise.
* testsuite/30_threads/lock/2.cc: Likewise.
* testsuite/30_threads/lock/3.cc: Likewise.
* testsuite/30_threads/lock/4.cc: Likewise.
* testsuite/30_threads/lock_guard/cons/1.cc: Likewise.
* testsuite/30_threads/lock_guard/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/lock_guard/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/mutex/cons/1.cc: Likewise.
* testsuite/30_threads/mutex/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/mutex/cons/constexpr.cc: Likewise.
* testsuite/30_threads/mutex/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/mutex/dest/destructor_locked.cc: Likewise.
* testsuite/30_threads/mutex/lock/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/1.cc: Likewise.
* testsuite/30_threads/mutex/native_handle/typesizes.cc: Likewise.
* testsuite/30_threads/mutex/requirements/standard_layout.cc::
Likewise.
* testsuite/30_threads/mutex/requirements/typedefs.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/1.cc: Likewise.
* testsuite/30_threads/mutex/try_lock/2.cc: Likewise.
* testsuite/30_threads/mutex/unlock/1.cc: Likewise.
* testsuite/30_threads/mutex/unlock/2.cc: Likewise.
* testsuite/30_threads/once_flag/cons/constexpr.cc: Likewise.
* testsuite/30_threads/packaged_task/49668.cc: Likewise.
* testsuite/30_threads/packaged_task/60564.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/1.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/3.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/56492.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc2.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/alloc_min.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move.cc: Likewise.
* testsuite/30_threads/packaged_task/cons/move_assign.cc: Likewise.
* testsuite/30_threads/packaged_task/members/at_thread_exit.cc:
Likewise.
* testsuite/30_threads/packaged_task/members/get_future.cc: Likewise.
* testsuite/30_threads/packaged_task/members/get_future2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke3.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke4.cc: Likewise.
* testsuite/30_threads/packaged_task/members/invoke5.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset.cc: Likewise.
* testsuite/30_threads/packaged_task/members/reset2.cc: Likewise.
* testsuite/30_threads/packaged_task/members/swap.cc: Likewise.
* testsuite/30_threads/packaged_task/members/valid.cc: Likewise.
* testsuite/30_threads/packaged_task/requirements/
explicit_instantiation.cc: Likewise.
* testsuite/30_threads/packaged_task/uses_allocator.cc: Likewise.
* testsuite/30_threads/promise/60966.cc: Likewise.
* testsuite/30_threads/promise/69106.cc: Likewise.
* testsuite/30_threads/promise/cons/1.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc2.cc: Likewise.
* testsuite/30_threads/promise/cons/alloc_min.cc: Likewise.
* testsuite/30_threads/promise/cons/assign_neg.cc: Likewise.
* testsuite/30_threads/promise/cons/copy_neg.cc: Likewise.
* testsuite/30_threads/promise/cons/move.cc: Likewise.
* testsuite/30_threads/promise/cons/move_assign.cc: Likewise.
* testsuite/30_threads/promise/members/at_thread_exit.cc: Likewise.
* testsuite/30_threads/promise/members/at_thread_exit2.cc: Likewise.
* testsuite/30_threads/promise/members/get_future.cc: Likewise.
* testsuite/30_threads/promise/members/get_future2.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception.cc: Likewise.
* testsuite/30_threads/promise/members/set_exception2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value.cc: Likewise.
* testsuite/30_threads/promise/members/set_value2.cc: Likewise.
* testsuite/30_threads/promise/members/set_value3.cc: Likewise.
* testsuite/30_threads/promise/members/swap.cc: Likewise.
* testsuite/30_threads/promise/requirements/explicit_instantiation.cc:
* Likewise.
* testsuite/30_threads/promise/uses_allocator.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263006 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove dg-require-cstdint directive from tests
redi [Thu, 26 Jul 2018 14:02:26 +0000 (14:02 +0000)] 
Remove dg-require-cstdint directive from tests

Tests for components which are no longer dependent on
_GLIBCXX_USE_C99_STDINT_TR1 do not need to require <cstdint>.

* testsuite/18_support/numeric_limits/char16_32_t.cc: Qualify names
from namespace std.
* testsuite/20_util/align/2.cc: Remove dg-require-cstdint directive.
* testsuite/20_util/duration/arithmetic/1.cc: Likewise.
* testsuite/20_util/duration/arithmetic/2.cc: Likewise.
* testsuite/20_util/duration/arithmetic/dr2020.cc: Likewise.
* testsuite/20_util/duration/arithmetic/dr934-1.cc: Likewise.
* testsuite/20_util/duration/arithmetic/dr934-2.cc: Likewise.
* testsuite/20_util/duration/comparison_operators/1.cc: Likewise.
* testsuite/20_util/duration/cons/1.cc: Likewise.
* testsuite/20_util/duration/cons/1_neg.cc: Likewise.
* testsuite/20_util/duration/cons/2.cc: Likewise.
* testsuite/20_util/duration/cons/54025.cc: Likewise.
* testsuite/20_util/duration/cons/dr974_neg.cc: Likewise.
* testsuite/20_util/duration/requirements/explicit_instantiation/
explicit_instantiation.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
* testsuite/20_util/make_signed/requirements/typedefs-4.cc: Likewise.
* testsuite/20_util/ratio/comparisons/comp1.cc: Likewise.
* testsuite/20_util/ratio/comparisons/comp2.cc: Likewise.
* testsuite/20_util/ratio/comparisons/comp3.cc: Likewise.
* testsuite/20_util/ratio/cons/cons1.cc: Likewise.
* testsuite/20_util/ratio/operations/45866.cc: Likewise.
* testsuite/20_util/ratio/operations/47913.cc: Likewise.
* testsuite/20_util/ratio/operations/53840.cc: Likewise.
* testsuite/20_util/ratio/operations/ops1.cc: Likewise.
* testsuite/20_util/shared_ptr/atomic/3.cc: Likewise.
* testsuite/20_util/system_clock/1.cc: Likewise.
* testsuite/20_util/time_point/1.cc: Likewise.
* testsuite/20_util/time_point/2.cc: Likewise.
* testsuite/20_util/time_point/3.cc: Likewise.
* testsuite/20_util/time_point/requirements/explicit_instantiation/
explicit_instantiation.cc: Likewise.
* testsuite/21_strings/basic_string/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/21_strings/basic_string/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/21_strings/basic_string_view/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/21_strings/char_traits/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/21_strings/char_traits/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/21_strings/headers/string/types_std_c++0x.cc: Likewise.
* testsuite/22_locale/codecvt/char16_t.cc: Likewise.
* testsuite/22_locale/codecvt/char32_t.cc: Likewise.
* testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc:
Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc:
Likewise.
* testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc:
Likewise.
* testsuite/22_locale/codecvt/utf8.cc: Likewise.
* testsuite/23_containers/vector/bool/72847.cc: Likewise.
* testsuite/23_containers/vector/debug/multithreaded_swap.cc:
Likewise.
* testsuite/experimental/string_view/requirements/
explicit_instantiation/char16_t/1.cc: Likewise.
* testsuite/experimental/string_view/requirements/
explicit_instantiation/char32_t/1.cc: Likewise.
* testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/
1.cc: Likewise.
* testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/
1.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263005 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd missing checks for _GLIBCXX_USE_C99_STDINT_TR1
redi [Thu, 26 Jul 2018 14:02:11 +0000 (14:02 +0000)] 
Add missing checks for _GLIBCXX_USE_C99_STDINT_TR1

The throw_allocator extension depends on <tr1/random> which depends on
_GLIBCXX_USE_C99_STDINT_TR1.

The Transactional Memory support uses fixed-width integer types from
<stdint.h>.

* include/ext/throw_allocator.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(random_condition, throw_value_random, throw_allocator_random)
(std::hash<throw_value_random>): Do not define when <tr1/random> is
not usable.
* src/c++11/cow-stdexcept.cc [!_GLIBCXX_USE_C99_STDINT_TR1]: Do not
define transactional memory support when <stdint.h> is not usable.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263004 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoModify some library internals to work without <stdint.h>
redi [Thu, 26 Jul 2018 14:02:05 +0000 (14:02 +0000)] 
Modify some library internals to work without <stdint.h>

std::__detail::__clp2 used uint_fast32_t and uint_fast64_t without
checking _GLIBCXX_USE_C99_STDINT_TR1 which was a potential bug. A
simpler implementation based on the new std::__ceil2 code performs
better and doesn't depend on <stdint.h> types.

std::align and other C++11 functions in <memory> where unnecessarily
missing when _GLIBCXX_USE_C99_STDINT_TR1 was not defined.

* include/bits/hashtable_policy.h (__detail::__clp2): Use faster
implementation that doesn't depend on <stdint.h> types.
* include/std/memory (align) [!_GLIBCXX_USE_C99_STDINT_TR1]: Use
std::size_t when std::uintptr_t is not usable.
[!_GLIBCXX_USE_C99_STDINT_TR1] (pointer_safety, declare_reachable)
(undeclare_reachable, declare_no_pointers, undeclare_no_pointers):
Define independent of _GLIBCXX_USE_C99_STDINT_TR1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263003 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove char16_t and char32_t dependency on <stdint.h>
redi [Thu, 26 Jul 2018 14:02:01 +0000 (14:02 +0000)] 
Remove char16_t and char32_t dependency on <stdint.h>

The char16_t and char32_t types are automatically defined by the
compiler and do not depend on support in <stdint.h>. The char_traits
specializations depend on uint_leastNN_t but can be made to work anyway
by using the predefined macros, or as a last resort make_unsigned.

* include/bits/basic_string.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(hash<u16string>, hash<u32string>): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1.
* include/bits/char_traits.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(char_traits<char16_t>, char_traits<char32_t>): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1. Use __UINT_LEAST16_TYPE__ and
__UINT_LEAST32_TYPE__ or make_unsigned when <stdint.h> is not usable.
* include/bits/codecvt.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(codecvt<char16_t, char, mbstate_t>)
(codecvt<char32_t, char, mbstate_t>)
(codecvt_byname<char16_t, char, mbstate_t>)
(codecvt_byname<char32_t, char, mbstate_t>): Remove dependency
on _GLIBCXX_USE_C99_STDINT_TR1.
* include/bits/locale_facets.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(_GLIBCXX_NUM_UNICODE_FACETS): Likewise.
* include/bits/stringfwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(char_traits<char16_t>, char_traits<char32_t>)
(basic_string<char16_t>, basic_string<char32_t>): Remove dependency
on _GLIBCXX_USE_C99_STDINT_TR1.
* include/experimental/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
(u16string_view, u32string_view, hash<u16string_view>)
(hash<u32string_view>, operator""sv(const char16_t, size_t))
(operator""sv(const char32_t, size_t)): Likewise.
* include/ext/vstring.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(hash<__u16vstring>, hash<__u32vstring>): Likewise.
* include/ext/vstring_fwd.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(__u16vstring, __u16sso_string, __u16rc_string, __u32vstring)
(__u32sso_string, __u32rc_string): Likewise.
* include/std/codecvt [!_GLIBCXX_USE_C99_STDINT_TR1] (codecvt_mode)
(codecvt_utf8, codecvt_utf16, codecvt_utf8_utf16): Likewise.
* include/std/string_view [!_GLIBCXX_USE_C99_STDINT_TR1]
(u16string_view, u32string_view, hash<u16string_view>)
(hash<u32string_view>, operator""sv(const char16_t, size_t))
(operator""sv(const char32_t, size_t)): Likewise.
* src/c++11/codecvt.cc: Likewise.
* src/c++98/locale_init.cc: Likewise.
* src/c++98/localename.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263002 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRemove <chrono> dependency on _GLIBCXX_USE_C99_STDINT_TR1
redi [Thu, 26 Jul 2018 14:01:55 +0000 (14:01 +0000)] 
Remove <chrono> dependency on _GLIBCXX_USE_C99_STDINT_TR1

By adding fallback definitions of std::intmax_t and std::uintmax_t it's
possible to define <ratio> without _GLIBCXX_USE_C99_STDINT_TR1. This in
turn allows most of <chrono> to be defined, which removes the dependency
on _GLIBCXX_USE_C99_STDINT_TR1 for all of the C++11 concurrency features.

The compiler defines __INTMAX_TYPE__ and __UINTMAX_TYPE__
unconditionally so it should be safe to rely on them.

* include/bits/atomic_futex.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(__atomic_futex_unsigned_base): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1 macro.
* include/bits/unique_lock.h [!_GLIBCXX_USE_C99_STDINT_TR1]
(unique_lock): Remove dependency on _GLIBCXX_USE_C99_STDINT_TR1.
* include/c_global/cstdint [!_GLIBCXX_USE_C99_STDINT_TR1] (intmax_t)
(uintmax_t): Define using predefined macros.
* include/std/chrono [!_GLIBCXX_USE_C99_STDINT_TR1] (duration)
(time_point, system_clock, high_resolution_clock, steady_clock): Remove
dependency on _GLIBCXX_USE_C99_STDINT_TR1 macro.
(nanoseconds, microseconds, milliseconds, seconds, minutes, hours):
[!_GLIBCXX_USE_C99_STDINT_TR1]: Define using __INT64_TYPE__ or
long long when <stdint.h> is not usable.
* include/std/condition_variable [!_GLIBCXX_USE_C99_STDINT_TR1]
(condition_variable, condition_variable_any): Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1.
* include/std/future [!_GLIBCXX_USE_C99_STDINT_TR1] (future, promise)
(packaged_task, async): Likewise.
* include/std/mutex [!_GLIBCXX_USE_C99_STDINT_TR1] (recursive_mutex)
(timed_mutex, recursive_timed_mutex, try_lock, lock, scoped_lock)
(once_flag, call_once): Likewise.
* include/std/ratio [!_GLIBCXX_USE_C99_STDINT_TR1] (ratio): Likewise.
* include/std/shared_mutex [!_GLIBCXX_USE_C99_STDINT_TR1]
(shared_mutex, shared_timed_mutex, shared_lock): Likewise.
* include/std/thread [!_GLIBCXX_USE_C99_STDINT_TR1] (thread)
(this_thread::get_id, this_thread::yield, this_thread::sleep_for)
(this_thread::sleep_until): Likewise.
* src/c++11/chrono.cc: Remove dependency on
_GLIBCXX_USE_C99_STDINT_TR1 macro.
* src/c++11/condition_variable.cc: Likewise.
* src/c++11/futex.cc: Likewise.
* src/c++11/future.cc: Likewise.
* src/c++11/mutex.cc: Likewise.
* src/c++11/thread.cc: Likewise.
* testsuite/20_util/duration/literals/range_neg.cc: Adjust dg-error.
* testsuite/20_util/duration/requirements/typedefs_neg1.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg2.cc: Likewise.
* testsuite/20_util/duration/requirements/typedefs_neg3.cc: Likewise.
* testsuite/20_util/ratio/cons/cons_overflow_neg.cc: Likewise.
* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263001 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoxfail experimental/memory_resource/new_delete_resource.cc on 32-bit Solaris/x86 ...
ro [Thu, 26 Jul 2018 12:36:21 +0000 (12:36 +0000)] 
xfail experimental/memory_resource/new_delete_resource.cc on 32-bit Solaris/x86 (PR libstdc++/77691)

PR libstdc++/77691
* testsuite/experimental/memory_resource/new_delete_resource.cc:
xfail execution on 32-bit Solaris/x86.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263000 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd linker_output as prefix for LTO temps (PR lto/86548).
marxin [Thu, 26 Jul 2018 12:13:14 +0000 (12:13 +0000)] 
Add linker_output as prefix for LTO temps (PR lto/86548).

2018-07-26  Martin Liska  <mliska@suse.cz>

        PR lto/86548
* lto-wrapper.c: Add linker_output as prefix
        for ltrans_output_file.
2018-07-26  Martin Liska  <mliska@suse.cz>

        PR lto/86548
* libiberty.h (make_temp_file_with_prefix): New function.
2018-07-26  Martin Liska  <mliska@suse.cz>

        PR lto/86548
* make-temp-file.c (TEMP_FILE): Remove leading 'cc'.
(make_temp_file): Call make_temp_file_with_prefix with
        first argument set to NULL.
(make_temp_file_with_prefix): Support also prefix.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262999 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agooptimize std::vector move assignment
glisse [Thu, 26 Jul 2018 12:01:14 +0000 (12:01 +0000)] 
optimize std::vector move assignment

2018-07-26  Marc Glisse  <marc.glisse@inria.fr>

* include/bits/stl_vector.h (_Vector_impl_data::_M_copy_data): New.
(_Vector_impl_data::_M_swap_data): Use _M_copy_data.
(vector::_M_move_assign): Reorder the swaps.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262998 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, nvptx] Add error with recompilation hint for launch failure
vries [Thu, 26 Jul 2018 11:42:29 +0000 (11:42 +0000)] 
[libgomp, nvptx] Add error with recompilation hint for launch failure

Currently, when a kernel is lauched with too many workers, it results in a cuda
launch failure.  This is triggered f.i. for parallel-loop-1.c at -O0 on a Quadro
M1200.

This patch detects this situation, and errors out with a hint on how to fix it.

Build and reg-tested on x86_64 with nvptx accelerator.

2018-07-26  Cesar Philippidis  <cesar@codesourcery.com>
    Tom de Vries  <tdevries@suse.de>

* plugin/plugin-nvptx.c (nvptx_exec): Error if the hardware doesn't have
sufficient resources to launch a kernel, and give a hint on how to fix
it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262997 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, nvptx] Move device property sampling from nvptx_exec to nvptx_open
vries [Thu, 26 Jul 2018 11:42:19 +0000 (11:42 +0000)] 
[libgomp, nvptx] Move device property sampling from nvptx_exec to nvptx_open

Move sampling of device properties from nvptx_exec to nvptx_open, and assume
the sampling always succeeds.  This simplifies the default dimension
initialization code in nvptx_open.

2018-07-26  Cesar Philippidis  <cesar@codesourcery.com>
    Tom de Vries  <tdevries@suse.de>

* plugin/plugin-nvptx.c (struct ptx_device): Add warp_size,
max_threads_per_block and max_threads_per_multiprocessor fields.
(nvptx_open_device): Initialize new fields.
(nvptx_exec): Use num_sms, and new fields.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262996 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agocombine: Another hard register problem (PR85805)
segher [Thu, 26 Jul 2018 10:16:48 +0000 (10:16 +0000)] 
combine: Another hard register problem (PR85805)

The current code in reg_nonzero_bits_for_combine allows using the
reg_stat info when last_set_mode is a different integer mode.  This is
completely wrong for non-pseudos.  For example, as in the PR, a value
in a DImode hard register is set by eight writes to its constituent
QImode parts.  The value written to the DImode is not the same as that
written to the lowest-numbered QImode!

PR rtl-optimization/85805
* combine.c (reg_nonzero_bits_for_combine): Only use the last set
value for hard registers if that was written in the same mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262994 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcov: Fix wrong usage of NAN in statistics (PR gcov-profile/86536).
marxin [Thu, 26 Jul 2018 08:50:21 +0000 (08:50 +0000)] 
gcov: Fix wrong usage of NAN in statistics (PR gcov-profile/86536).

2018-07-26  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/86536
* gcov.c (format_gcov): Use printf format %.*f directly
        and do not handle special values.
2018-07-26  Martin Liska  <mliska@suse.cz>

        PR gcov-profile/86536
* gcc.misc-tests/gcov-pr86536.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262991 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, openacc, testsuite] Fix async logic in lib-12.f90
vries [Thu, 26 Jul 2018 07:52:45 +0000 (07:52 +0000)] 
[libgomp, openacc, testsuite] Fix async logic in lib-12.f90

In testcase lib-12.f90, all acc_async_test calls are placed in a location
where they are not guaranteed to succeed, which explains why there's an xfail
for the lower optimization levels.

This patch fixes the problem by moving the acc_async_test calls to the correct
locations.

Reg-tested on x86_64 with nvptx accelerator.

2018-07-26  Tom de Vries  <tdevries@suse.de>

* testsuite/libgomp.oacc-fortran/lib-12.f90: Move acc_async_test calls
to correct locations.  Remove xfail.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262990 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[libgomp, openacc, testsuite] Fix async/wait logic in lib-13.f90
vries [Thu, 26 Jul 2018 07:52:35 +0000 (07:52 +0000)] 
[libgomp, openacc, testsuite] Fix async/wait logic in lib-13.f90

The purpose of the lib-13.f90 test-case is to test acc_wait_all_async.  The
test indeed calls acc_wait_all_async, but then subsequentlys calls
acc_wait_all, so the acc_wait_all_async functionality is not tested.
Furthermore, all acc_async_test calls are placed in a location where they are
not guaranteed to succeed, which explains why there's an xfail for the lower
optimization levels.

This patch fixes the problems by replacing acc_wait_all with an acc_wait on
the async id used for the acc_wait_all_async call, and moving the
acc_async_test calls to the correct locations.

Reg-tested on x86_64 with nvptx accelerator.

2018-07-26  Tom de Vries  <tdevries@suse.de>

* testsuite/libgomp.oacc-fortran/lib-13.f90: Replace acc_wait_all with
acc_wait.  Move acc_async_test calls to correct locations.  Remove
xfail.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262989 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoDaily bump.
gccadmin [Thu, 26 Jul 2018 00:16:29 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262988 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86676 another alignment fix for test
redi [Wed, 25 Jul 2018 23:38:17 +0000 (23:38 +0000)] 
PR libstdc++/86676 another alignment fix for test

PR libstdc++/86676
* testsuite/20_util/monotonic_buffer_resource/release.cc: Request
same alignment for post-release allocation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262984 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * es.po, ja.po, sv.po: Update.
jsm28 [Wed, 25 Jul 2018 21:37:39 +0000 (21:37 +0000)] 
* es.po, ja.po, sv.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262982 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agogcc/testsuite/ChangeLog:
msebor [Wed, 25 Jul 2018 20:53:42 +0000 (20:53 +0000)] 
gcc/testsuite/ChangeLog:

* gcc.c-torture/execute/builtins/strnlen.c: Remove DejaGnu directives
ignored by the test harness.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262981 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoPR libstdc++/86676 Do not assume stack buffer is aligned
redi [Wed, 25 Jul 2018 20:23:07 +0000 (20:23 +0000)] 
PR libstdc++/86676 Do not assume stack buffer is aligned

PR libstdc++/86676
* testsuite/20_util/monotonic_buffer_resource/release.cc: Allow for
buffer being misaligned and so returned pointer not being at start.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262980 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-25 Nicolas Koenig <koenigni@gcc.gnu.org>
koenigni [Wed, 25 Jul 2018 19:34:33 +0000 (19:34 +0000)] 
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* testsuite/libgomp.fortran/async_io_1.f90: Really commit.
* testsuite/libgomp.fortran/async_io_2.f90: Really commit.
* testsuite/libgomp.fortran/async_io_3.f90: Really commit.
* testsuite/libgomp.fortran/async_io_4.f90: Really commit.
* testsuite/libgomp.fortran/async_io_5.f90: Really commit.
* testsuite/libgomp.fortran/async_io_6.f90: Really commit.
* testsuite/libgomp.fortran/async_io_7.f90: Really commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262979 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-25 Nicolas Koenig <koenigni@gcc.gnu.org>
koenigni [Wed, 25 Jul 2018 18:48:39 +0000 (18:48 +0000)] 
2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* gfortran.texi: Add description of asynchronous I/O.
* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
as volatile.
* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
st_wait_async and change argument spec from ".X" to ".w".
(gfc_trans_wait): Pass ID argument via reference.

2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* gfortran.dg/f2003_inquire_1.f03: Add write statement.
* gfortran.dg/f2003_io_1.f03: Add wait statement.

2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* Makefile.am: Add async.c to gfor_io_src.
Add async.h to gfor_io_headers.
* Makefile.in: Regenerated.
* gfortran.map: Add _gfortran_st_wait_async.
* io/async.c: New file.
* io/async.h: New file.
* io/close.c: Include async.h.
(st_close): Call async_wait for an asynchronous unit.
* io/file_pos.c (st_backspace): Likewise.
(st_endfile): Likewise.
(st_rewind): Likewise.
(st_flush): Likewise.
* io/inquire.c: Add handling for asynchronous PENDING
and ID arguments.
* io/io.h (st_parameter_dt): Add async bit.
(st_parameter_wait): Correct.
(gfc_unit): Add au pointer.
(st_wait_async): Add prototype.
(transfer_array_inner): Likewise.
(st_write_done_worker): Likewise.
* io/open.c: Include async.h.
(new_unit): Initialize asynchronous unit.
* io/transfer.c (async_opt): New struct.
(wrap_scalar_transfer): New function.
(transfer_integer): Call wrap_scalar_transfer to do the work.
(transfer_real): Likewise.
(transfer_real_write): Likewise.
(transfer_character): Likewise.
(transfer_character_wide): Likewise.
(transfer_complex): Likewise.
(transfer_array_inner): New function.
(transfer_array): Call transfer_array_inner.
(transfer_derived): Call wrap_scalar_transfer.
(data_transfer_init): Check for asynchronous I/O.
Perform a wait operation on any pending asynchronous I/O
if the data transfer is synchronous. Copy PDT and enqueue
thread for data transfer.
(st_read_done_worker): New function.
(st_read_done): Enqueue transfer or call st_read_done_worker.
(st_write_done_worker): New function.
(st_write_done): Enqueue transfer or call st_read_done_worker.
(st_wait): Document as no-op for compatibility reasons.
(st_wait_async): New function.
* io/unit.c (insert_unit): Use macros LOCK, UNLOCK and TRYLOCK;
add NOTE where necessary.
(get_gfc_unit): Likewise.
(init_units): Likewise.
(close_unit_1): Likewise. Call async_close if asynchronous.
(close_unit): Use macros LOCK and UNLOCK.
(finish_last_advance_record): Likewise.
(newunit_alloc): Likewise.
* io/unix.c (find_file): Likewise.
(flush_all_units_1): Likewise.
(flush_all_units): Likewise.
* libgfortran.h (generate_error_common): Add prototype.
* runtime/error.c: Include io.h and async.h.
(generate_error_common): New function.

2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
Thomas Koenig <tkoenig@gcc.gnu.org>

PR fortran/25829
* testsuite/libgomp.fortran/async_io_1.f90: New test.
* testsuite/libgomp.fortran/async_io_2.f90: New test.
* testsuite/libgomp.fortran/async_io_3.f90: New test.
* testsuite/libgomp.fortran/async_io_4.f90: New test.
* testsuite/libgomp.fortran/async_io_5.f90: New test.
* testsuite/libgomp.fortran/async_io_6.f90: New test.
* testsuite/libgomp.fortran/async_io_7.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262978 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd missing header for std::max_align_t
redi [Wed, 25 Jul 2018 17:24:49 +0000 (17:24 +0000)] 
Add missing header for std::max_align_t

* include/experimental/memory_resource: Include <cstddef> header.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262977 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago * cp-tree.h (enum cp_tree_index): Add
jakub [Wed, 25 Jul 2018 16:47:18 +0000 (16:47 +0000)] 
* cp-tree.h (enum cp_tree_index): Add
CPTI_{ABI_TAG,ALIGNED,BEGIN,END,GET,TUPLE_{ELEMENT,SIZE}}_IDENTIFIER
and CPTI_{GNU,TYPE,VALUE,FUN,CLOSURE}_IDENTIFIER.
(abi_tag_identifier, aligned_identifier, begin_identifier,
end_identifier, get__identifier, gnu_identifier,
tuple_element_identifier, tuple_size_identifier, type_identifier,
value_identifier, fun_identifier, closure_identifier): Define.
* decl.c (initialize_predefined_identifiers): Initialize the above
identifiers.
(get_tuple_size): Use tuple_size_identifier instead of
get_identifier ("tuple_size") and value_identifier instead of
get_identifier ("value").
(get_tuple_element_type): Use tuple_element_identifier instead of
get_identifier ("tuple_element") and type_identifier instead of
get_identifier ("type").
(get_tuple_decomp_init): Use get__identifier instead of
get_identifier ("get").
* lambda.c (maybe_add_lambda_conv_op): Use fun_identifier instead of
get_identifier ("_FUN").
* parser.c (cp_parser_lambda_declarator_opt): Use closure_identifier
instead of get_identifier ("__closure").
(cp_parser_std_attribute): Use gnu_identifier instead of
get_identifier ("gnu").
(cp_parser_std_attribute_spec): Likewise.  Use aligned_identifier
instead of get_identifier ("aligned").
* class.c (check_abi_tags, inherit_targ_abi_tags): Use
abi_tag_identifier instead of get_identifier ("abi_tag").

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262976 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago PR c++/85515
jakub [Wed, 25 Jul 2018 16:46:34 +0000 (16:46 +0000)] 
PR c++/85515
* cp-tree.h (enum cp_tree_index): Add
CPTI_FOR_{RANGE,BEGIN,END}{,_}_IDENTIFIER.
(for_range__identifier, for_begin__identifier, for_end__identifier,
for_range_identifier, for_begin_identifier, for_end_identifier):
Define.
* decl.c (initialize_predefined_identifiers): Initialize
for_{range,begin,end}{,_}_identifier.
* parser.c (build_range_temp): Use for_range__identifier instead of
get_identifier ("__for_range").
(cp_convert_range_for): Use for_begin__identifier and
for_end__identifier instead of get_identifier ("__for_begin") and
get_identifier ("__for_end").
* semantics.c (finish_for_stmt): Rename "__for_{range,begin,end} "
local symbols to "__for_{range,begin,end}".

* g++.dg/pr85515-2.C: Add expected dg-error.
* g++.dg/cpp0x/range-for36.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262975 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Update default optimizations for size.
claziss [Wed, 25 Jul 2018 14:31:34 +0000 (14:31 +0000)] 
[ARC] Update default optimizations for size.

Update the list of default optimizations used for size compilations.

gcc/
2018-07-10  Claudiu Zissulescu  <claziss@synopsys.com>

* common/config/arc/arc-common.c (arc_option_optimization_table):
Update default optimizations for size.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262973 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoRegenerate .pot files.
jsm28 [Wed, 25 Jul 2018 14:31:18 +0000 (14:31 +0000)] 
Regenerate .pot files.

gcc/po:
* gcc.pot: Regenerate.

libcpp/po:
* cpplib.pot: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262972 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Improve instruction selection for fp moves.
claziss [Wed, 25 Jul 2018 14:31:16 +0000 (14:31 +0000)] 
[ARC] Improve instruction selection for fp moves.

Improve selection of short instruction for fp-moves.

gcc/
2018-05-17  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (movsf_insn): Add short instruction selection.
* config/arc/constraints.md (CfZ): New constraint.
* config/arc/fpu.md (addssf3_fpu): Use CfZ constraint.
(subsf3_fpu): Likewise.
(cmpsf_fpu): Likewise.
(cmpsf_fpu_uneq): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262971 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Fix uncache attribute.
claziss [Wed, 25 Jul 2018 14:31:04 +0000 (14:31 +0000)] 
[ARC] Fix uncache attribute.

gcc/
2018-05-09  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (compact_memory_operand_p): Check for uncached
accesses as well.
(arc_is_uncached_mem_p): uncached applies to both the variable and
the pointer.

testsuite/
2018-05-09  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/uncached-1.c: New test.
* gcc.target/arc/uncached-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262970 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago[ARC] Add more additional register names
claziss [Wed, 25 Jul 2018 14:30:52 +0000 (14:30 +0000)] 
[ARC] Add more additional register names

gcc/
  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Add additional
register names.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262969 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agooptinfo-emit-json.cc: fix trivial memory leak
dmalcolm [Wed, 25 Jul 2018 14:18:22 +0000 (14:18 +0000)] 
optinfo-emit-json.cc: fix trivial memory leak

gcc/ChangeLog:
* optinfo-emit-json.cc (class optrecord_json_writer): Convert
field "m_scopes" from vec to auto_vec.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262967 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix wrong declaration.
marxin [Wed, 25 Jul 2018 12:16:48 +0000 (12:16 +0000)] 
Fix wrong declaration.

2018-07-25  Martin Liska  <mliska@suse.cz>

* config/powerpcspe/powerpcspe-protos.h (rs6000_loop_align): Fix
        return type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262966 138bc75d-0d04-0410-961f-82ee72b054a4

7 years ago2018-07-25 Richard Biener <rguenther@suse.de>
rguenth [Wed, 25 Jul 2018 12:10:13 +0000 (12:10 +0000)] 
2018-07-25  Richard Biener  <rguenther@suse.de>

PR debug/86654
* dwarf2out.c (dwarf2out_decl): Do not handle nested functions
special wrt context_die late.
(gen_subprogram_die): Re-use DIEs in local scope.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262965 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd new src/c++17 directory to list in acinclude.m4
redi [Wed, 25 Jul 2018 11:01:39 +0000 (11:01 +0000)] 
Add new src/c++17 directory to list in acinclude.m4

* acinclude.m4 (glibcxx_SUBDIRS): Add src/c++17.
* src/Makefile.am: Add comment.
* src/c++17/Makefile.in: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262964 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoMove std::unique_lock definition to a separate header
redi [Wed, 25 Jul 2018 10:40:12 +0000 (10:40 +0000)] 
Move std::unique_lock definition to a separate header

This will allow std::mutex and std::lock_guard to be used elsewhere in
the library without pulling in the whole of <chrono>.

Previously the whole of <bits/std_mutex.h> was conditional on the
_GLIBCXX_USE_C99_STDINT_TR1 macro, but only the std::unique_lock members
that use <chrono> facilities should depend on that. std::mutex only
needs to depend on _GLIBCXX_HAS_GTHREADS and std::lock_guard can be
defined unconditionally.

Some parts of <bits/std_mutex.h> and <mutex> are based on code in
<ext/concurrence.h> which dates from 2003. However, the std::unique_lock
implementation was added in 2008 by r135007, without using any earlier
code. Therefore the new header file has copyright years 2008-2018.

* include/Makefile.am: Add new <bits/unique_lock.h> header.
* include/Makefile.in: Regenerate.
* include/bits/std_mutex.h [!_GLIBCXX_USE_C99_STDINT_TR1] (mutex)
(lock_guard): Define independent of _GLIBCXX_USE_C99_STDINT_TR1.
(unique_lock): Move definition to ...
* include/bits/unique_lock.h: New header.
[!_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock): Define unconditionally.
[_GLIBCXX_USE_C99_STDINT_TR1] (unique_lock(mutex_type&, time_point))
(unique_lock(mutex_type&, duration), unique_lock::try_lock_until)
(unique_lock::try_lock_for): Define only when <chrono> is usable.
* include/std/condition_variable: Include <bits/unique_lock.h>.
* include/std/mutex: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262963 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoAdd PR number
rsandifo [Wed, 25 Jul 2018 08:42:38 +0000 (08:42 +0000)] 
Add PR number

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262962 138bc75d-0d04-0410-961f-82ee72b054a4

7 years agoFix ceil_log2(0) (PR 86644)
rsandifo [Wed, 25 Jul 2018 08:41:35 +0000 (08:41 +0000)] 
Fix ceil_log2(0) (PR 86644)

This PR shows a pathological case in which we try SLP vectorisation on
dead code.  We record that 0 bits of the result are enough to satisfy
all users (which is true), and that led to precision being 0 in:

static unsigned int
vect_element_precision (unsigned int precision)
{
  precision = 1 << ceil_log2 (precision);
  return MAX (precision, BITS_PER_UNIT);
}

ceil_log2 (0) returned 64 rather than 0, leading to 1 << 64, which is UB.

2018-07-25  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* hwint.c (ceil_log2): Fix comment.  Return 0 for 0.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@262961 138bc75d-0d04-0410-961f-82ee72b054a4