gcc.git
3 years agoDaily bump.
GCC Administrator [Wed, 16 Dec 2020 00:16:31 +0000 (00:16 +0000)]
Daily bump.

3 years agoc++: Remove dg-ice in constexpr-52830.C [PR52830]
Marek Polacek [Tue, 15 Dec 2020 22:54:45 +0000 (17:54 -0500)]
c++: Remove dg-ice in constexpr-52830.C [PR52830]

It turned out that r11-5942 fixed this old PR, and it was detected
by one of the few dg-ice tests -- exactly the point of them!  Now
the PR won't be opened until someone notices that it'd been fixed.
The patch failed to remove the dg-ice though, so now it XPASSes.  Fixing
this now.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/constexpr-52830.C: Remove dg-ice.

3 years agocody: Remove unused variable.
Marek Polacek [Tue, 15 Dec 2020 22:03:49 +0000 (17:03 -0500)]
cody: Remove unused variable.

libcody/ChangeLog:

* buffer.cc (MessageBuffer::Lex): Remove unused variable.

3 years agolibcody: Work with older gccs
Nathan Sidwell [Tue, 15 Dec 2020 21:34:26 +0000 (13:34 -0800)]
libcody:  Work with older gccs

Older GCCs don't have all the exciting options we have now.  let's just
turn them off.

libcody/
* Makefile.in: Disable some flags.

3 years agogcc_update update
Nathan Sidwell [Tue, 15 Dec 2020 21:42:23 +0000 (13:42 -0800)]
gcc_update update

I missed adding these two configure files.

contrib/
* gcc_update: Add c++tools & libcody.

3 years agomatch.pd: Optimize X / bool_range_Y to X [PR96094]
Jakub Jelinek [Tue, 15 Dec 2020 21:43:46 +0000 (22:43 +0100)]
match.pd: Optimize X / bool_range_Y to X [PR96094]

When the divisor is bool or has [0, 1] range, as division by
0 is UB, the only remaining option in valid programs is division by 1,
so we can optimize X / bool_range_Y into X.

2020-12-15  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/96094
* match.pd (X / bool_range_Y -> X): New simplification.

* gcc.dg/tree-ssa/pr96094.c: New test.

3 years agod: Fix ICE in gimplify_expr, at gimplify.c (PR98277)
Iain Buclaw [Tue, 15 Dec 2020 09:36:00 +0000 (10:36 +0100)]
d: Fix ICE in gimplify_expr, at gimplify.c (PR98277)

The DMD front-end shouldn't, but can sometimes leak manifest constants
in the AST passed to the code generator.  To prevent this being an
issue, the setting of DECL_INITIAL has been moved to the point where the
CONST_DECL is used, rather than in the declaration handler.

gcc/d/ChangeLog:

PR d/98277
* decl.cc (DeclVisitor::visit (VarDeclaration *)): Move setting of
DECL_INITIAL for manifest constants to ...
(get_symbol_decl): ... here.

gcc/testsuite/ChangeLog:

PR d/98277
* gdc.dg/pr98277.d: New test.

3 years agoGo testsuite: update bugs for recent change
Ian Lance Taylor [Tue, 15 Dec 2020 21:12:17 +0000 (13:12 -0800)]
Go testsuite: update bugs for recent change

This matches changes in 788d204885c187d5604e3960d7c78e1523f04861.

3 years agocompiler: correct grammar in error message
Ian Lance Taylor [Tue, 15 Dec 2020 20:36:19 +0000 (12:36 -0800)]
compiler: correct grammar in error message

For golang/go#43200

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278452

3 years agocompiler: avoid knock-on errors from invalid interfaces
Ian Lance Taylor [Tue, 15 Dec 2020 06:50:18 +0000 (22:50 -0800)]
compiler: avoid knock-on errors from invalid interfaces

The test case for this is issue11614.go.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278192

3 years agocompiler: discard global sink variables with static initializers
Ian Lance Taylor [Tue, 15 Dec 2020 04:41:30 +0000 (20:41 -0800)]
compiler: discard global sink variables with static initializers

This is specifically for the test fixedbugs/issue23781.go, which
builds a large static array.  The code does compile and work without
this change, but it takes a long time and generates a large object
file.  Discarding the unnecessary static initializer makes this test
much faster.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278172

3 years agocompiler: better error for unexpected digit
Ian Lance Taylor [Tue, 15 Dec 2020 05:26:33 +0000 (21:26 -0800)]
compiler: better error for unexpected digit

A digit character is not invalid in general, but it's not permitted
at the start of an identifier.  Report a better error message.
The test case is issue11359.go in the source repo.

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/278174

3 years agoFix dashism
Nathan Sidwell [Tue, 15 Dec 2020 19:37:52 +0000 (11:37 -0800)]
Fix dashism

I missed some other places that used +=

* config.m4: Avoid var+=...
* configure: Rebuilt

3 years agolibcody: Fix for dash
Nathan Sidwell [Tue, 15 Dec 2020 19:29:44 +0000 (11:29 -0800)]
libcody: Fix for dash

Apparently 'var+=...' is not a dash thing.  Fixed thusly.

* config.m4: Avoid non-dash idiom
* configure: Rebuilt.

3 years agolibstdc++: Remove init_priority attribute for Init object [PR 98108]
Jonathan Wakely [Tue, 15 Dec 2020 18:40:28 +0000 (18:40 +0000)]
libstdc++: Remove init_priority attribute for Init object [PR 98108]

This reverts commit cf4ed3b41594b6935a337fe0aaf8149eadf88751.

libstdc++-v3/ChangeLog:

    PR libstdc++/98108
    * include/std/iostream (__ioinit): Remove init_priority attribute.

3 years agolibstdc++: Support libc with stdio-only I/O in libstdc++
Keith Packard [Tue, 15 Dec 2020 17:39:24 +0000 (17:39 +0000)]
libstdc++: Support libc with stdio-only I/O in libstdc++

The current libstdc++ basic_file_stdio.cc code assumes a POSIX API
underneath the stdio implementation provided by the host libc. This
means that the host must provide a fairly broad POSIX file API,
including read, write, open, close, lseek and ioctl.

This patch changes basic_file_stdio.cc to only use basic ANSI-C stdio
functions, allowing it to be used with libc implementations like
picolibc which may not have a POSIX operating system underneath.

This is enabled by a new --enable-cstdio=stdio_pure configure option.

Aided-by: Jonathan Wakely <jwakely@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
libstdc++-v3/ChangeLog:

* acinclude.m4 (GLIBCXX_ENABLE_CSTDIO): Allow "stdio_pure"
option and define _GLIBCXX_USE_PURE_STDIO when it is used. Also
add "stdio_posix" option as an alias for "stdio".
* config/io/basic_file_stdio.cc [_GLIBCXX_USE_PURE_STDIO]: Only
use defined stdio entry points for all I/O operations, without
direct calls to underlying POSIX functions.
* config.h.in: Regenerate.
* configure: Regenerate.

3 years agoc++: Fix return type deduction during satisfaction
Patrick Palka [Tue, 15 Dec 2020 17:10:26 +0000 (12:10 -0500)]
c++: Fix return type deduction during satisfaction

During satisfaction that's entered through the three-parameter version
of satisfy_declaration_constraints, current_function_decl gets set to
the dependent DECL_TEMPLATE_RESULT for sake of access checking.  This
makes the predicate in_template_function return true during satisfaction
from this entrypoint, which in turn makes calls to mark_used exit early
before it does its full processing.  This leads to us accepting the
invalid testcase below due to mark_used never attempting to deduce the
return type of A::foo() and detecting failure thereof.

It seems wrong for in_template_function to be true during instantiation
or during satisfaction, so this patch makes in_template_function inspect
the less volatile cfun->decl instead of current_function_decl.

gcc/cp/ChangeLog:

* pt.c (in_template_function): Inspect cfun->decl instead of
current_function_decl.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/concepts-requires23.C: New test.

3 years agoc++: Add changelog files in c++tools/ and libcody/ directories
Jakub Jelinek [Tue, 15 Dec 2020 16:39:12 +0000 (17:39 +0100)]
c++: Add changelog files in c++tools/ and libcody/ directories

Add ChangeLog files, so that update_version_git can then fill those in.

3 years agoAdd the -fdebug-aux-vars flag to debug variables generated by Fortran.
Thomas Koenig [Tue, 15 Dec 2020 16:10:37 +0000 (17:10 +0100)]
Add the -fdebug-aux-vars flag to debug variables generated by Fortran.

gcc/fortran/ChangeLog:

PR fortran/90207
* invoke.texi: Document -fdebug-aux-vars.
* lang.opt: Add -fdebug-aux-vars.
* trans.c (MAX_PREFIX_LEN): New macro.
(create_var_debug_raw): New function.
(gfc_create_var_np): Call create_var_debug_raw if
flag_debug_aux_vars is set.

3 years agolibstdc++: Fix the test for rvalue stream extraction
Ville Voutilainen [Tue, 15 Dec 2020 10:05:51 +0000 (12:05 +0200)]
libstdc++: Fix the test for rvalue stream extraction

libstdc++-v3/ChangeLog:

* testsuite/27_io/rvalue_streams.cc: Run the extraction to a char*
for C++17 and lower only.

3 years agodoc: Document C++ 20 modules
Nathan Sidwell [Mon, 14 Dec 2020 21:15:17 +0000 (13:15 -0800)]
doc: Document C++ 20 modules

And here is the user-facing documentation.

gcc/
* doc/cppopts.texi: Document new cpp opt.
* doc/invoke.texi: Add C++20 module option & documentation.

3 years agoc++: Modules Is Landing
Nathan Sidwell [Mon, 14 Dec 2020 19:40:44 +0000 (11:40 -0800)]
c++: Modules Is Landing

This is the C++ modules implementation.  Dropping in the real
module.cc file into the module-shaped hole I carved out.  I include
some sanity tests for now.  I'll commit the remaining tests when the
initial round of failures seems abated.

gcc/cp/
* module.cc: Replace stubs with implementation.
gcc/testsuite/
* g++.dg/modules/mod-decl-0-2a.C: New.
* g++.dg/modules/mod-decl-0.C: New.
* g++.dg/modules/mod-decl-1.C: New.
* g++.dg/modules/mod-decl-2_a.C: New.
* g++.dg/modules/mod-decl-2_b.C: New.
* g++.dg/modules/mod-decl-2_c.C: New.
* g++.dg/modules/mod-decl-3.C: New.
* g++.dg/modules/mod-decl-5_a.C: New.
* g++.dg/modules/mod-decl-5_b.C: New.

3 years agoc++: module mapper
Nathan Sidwell [Mon, 14 Dec 2020 18:22:21 +0000 (10:22 -0800)]
c++: module mapper

To avoid always requiring an active mapper to connect to, we provide a
default in-process mapper with similar functionality to the sample
server.  This is that code.  Also included is the client-side
connection mechanism, which determines what server to use and how to
connect to it.

gcc/cp/
* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add mapper-client &
mapper-resolver.
* mapper-client.h: New.
* mapper-client.cc: New.
* mapper-resolver.cc: New.

3 years agoAdd C++tools
Nathan Sidwell [Tue, 15 Dec 2020 15:39:29 +0000 (07:39 -0800)]
Add C++tools

These are the toplevel directory changes to add c++tools

ChangeLog:

* Makefile.def
* Makefile.in
* Makefile.tpl
* configure
* configure.ac

3 years agoAdd c++tools
Nathan Sidwell [Mon, 14 Dec 2020 17:30:00 +0000 (09:30 -0800)]
Add c++tools

Part of our module implementation adds a sample mapper server, the
guts of which are used by the default in-process mapping of cc1plus.
Rather than add another executable to gcc/cp/, this creates a new
c++tools directory where this and any other c++ tools might live.
The toplevel changes are a subsequent commit, because ... git.

c++tools/ChangeLog:

* Makefile.in: New.
* config.h.in: New.
* configure: New.
* configure.ac: New.
* resolver.cc: New.
* resolver.h: New.
* server.cc: New.

3 years agolibstdc++: Increase timeout for tests in debug mode
Jonathan Wakely [Tue, 15 Dec 2020 15:39:58 +0000 (15:39 +0000)]
libstdc++: Increase timeout for tests in debug mode

These tests FAIL when testing debug mode with a small tool_timeout
value. Give them a longer relative timeout.

libstdc++-v3/ChangeLog:

* testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc:
Add dg-timeout-factor directive.
* testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc:
Increase timeout factor from 2.0 to 3.0.
* testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc:
Likewise.
* testsuite/lib/libstdc++.exp (check_effective_target_debug-mode):
Define "debug-mode" as an effective-target keyword.

3 years agolibstdc++: Do not define constexpr assertions for C++11
Jonathan Wakely [Tue, 15 Dec 2020 15:39:58 +0000 (15:39 +0000)]
libstdc++: Do not define constexpr assertions for C++11

There's no point even checking is_constant_evaluated() in C++11 mode,
because the 'if' statement used for the assertion wouldn't be valid in a
C++11 constexpr function anyway.

libstdc++-v3/ChangeLog:

* include/bits/c++config (__glibcxx_assert_1): Define as empty
for C++11.

3 years agoAdd libcody
Nathan Sidwell [Mon, 14 Dec 2020 16:10:27 +0000 (08:10 -0800)]
Add libcody

In order to separate compiler from build system, C++ Modules, as
implemented in GCC introduces a communication channel between those
two entities.  This is implemented by libcody.  It is anticipated that
other implementations will also implement this protocol, or use
libcody to provide it.

* Makefile.def: Add libcody.
* configure.ac: Add libcody.
* Makefile.in: Regenerated.
* configure: Regenerated.
gcc/
* Makefile.in (CODYINC, CODYLIB, CODYLIB_H): New. Use them.
libcody/
* configure.ac: New.
* CMakeLists.txt: New.
* CODING.md: New.
* CONTRIB.md: New.
* LICENSE: New.
* LICENSE.gcc: New.
* Makefile.in: New.
* Makesub.in: New.
* README.md: New.
* buffer.cc: New.
* build-aux/config.guess: New.
* build-aux/config.sub: New.
* build-aux/install-sh: New.
* client.cc: New.
* cmake/libcody-config-ix.cmake
* cody.hh: New.
* config.h.in: New.
* config.m4: New.
* configure: New.
* configure.ac: New.
* dox.cfg.in: New.
* fatal.cc: New.
* gdbinit.in: New.
* internal.hh: New.
* netclient.cc: New.
* netserver.cc: New.
* packet.cc: New.
* resolver.cc: New.
* server.cc: New.
* tests/01-serialize/connect.cc: New.
* tests/01-serialize/decoder.cc: New.
* tests/01-serialize/encoder.cc: New.
* tests/02-comms/client-1.cc: New.
* tests/02-comms/pivot-1.cc: New.
* tests/02-comms/server-1.cc: New.
* tests/Makesub.in: New.
* tests/jouster: New.

3 years agoAdd toplevel dirs
Nathan Sidwell [Tue, 15 Dec 2020 14:49:06 +0000 (09:49 -0500)]
Add toplevel dirs

contrib/
* gcc-changelog/git_commit.py (changelog_locations): Add
libcody, c++tools.

3 years agoc++: module-related tweak
Nathan Sidwell [Mon, 14 Dec 2020 19:44:12 +0000 (11:44 -0800)]
c++: module-related tweak

In manually applying a name-lookup patch, I managed to transpose two
calls.  That caused a test failure.  Fixed thusly.

gcc/cp/
* name-lookup.c (do_namespace_alias): Set originating module
before pushing.

3 years agolibstdc++: Fix required locales of a testcase
Marius Hillenbrand [Tue, 15 Dec 2020 11:40:07 +0000 (11:40 +0000)]
libstdc++: Fix required locales of a testcase

The testsuite for libstdc++ aims to skips test cases for which not all
required locales are installed. This patch adds missing directives about
required locales to one test case to avoid false positive test failures
on systems that have a partial set of locales installed.

Verified by test suite runs that this patch changes the test case from
FAIL to UNSUPPORTED when not all required locales are available and that
the test case will run and PASS when the necessary locales have been
added.

libstdc++-v3/ChangeLog:

* testsuite/22_locale/locale/cons/5.cc: Add missing directives
for required locales.

3 years agolibstdc++: Remove workaround for PR c++/78173
Jonathan Wakely [Tue, 15 Dec 2020 11:40:07 +0000 (11:40 +0000)]
libstdc++: Remove workaround for PR c++/78173

Now that the G++ bug is fixed we no longer need to protect this partial
specialization from complaining about subtracting void pointers.

libstdc++-v3/ChangeLog:

* include/bits/iterator_concepts.h (incrementable_traits<Tp>):
Remove workaround for PR c++/78173.

3 years agolibstdc++: Disabling AC_LIBTOOL_DLOPEN check if building with avr-libc
Vladimir Vishnevsky [Tue, 15 Dec 2020 11:40:07 +0000 (11:40 +0000)]
libstdc++: Disabling AC_LIBTOOL_DLOPEN check if building with avr-libc

The AC_LIBTOOL_DLOPEN checks were previously disabled for newlib targets.
The patch applies similar logic to avr-libc based builds.

libstdc++-v3/ChangeLog:

* configure.ac: Skip AC_LIBTOOL_DLOPEN check if avr-libc is used.
* configure: Regenerate.

3 years agolibstdc++: Use init_priority attribute for Init object [PR 98108]
Jonathan Wakely [Tue, 15 Dec 2020 11:40:06 +0000 (11:40 +0000)]
libstdc++: Use init_priority attribute for Init object [PR 98108]

This causes the global objects that run the <iostream> initialization
code to be constructed earlier, which avoids some bugs in user code due
to incorrectly relying on static initialization order.

libstdc++-v3/ChangeLog:

PR libstdc++/98108
* include/std/iostream (__ioinit): Add init_priority attribute.

3 years ago[Ada] Fix serial port baud rate setting on GNU/Linux
Pascal Obry [Sat, 7 Nov 2020 09:31:43 +0000 (10:31 +0100)]
[Ada] Fix serial port baud rate setting on GNU/Linux

gcc/ada/

* libgnat/g-sercom__linux.adb (Set): Use cfsetospeed and
cfsetispeed to set the baud rate. Clear non-blocking serial port
status when blocking is requested.

3 years ago[Ada] Small adjustment to System.Val_Real
Eric Botcazou [Thu, 26 Nov 2020 14:58:24 +0000 (15:58 +0100)]
[Ada] Small adjustment to System.Val_Real

gcc/ada/

* libgnat/s-valrea.adb (Integer_to_Real): Always use Extra.

3 years ago[Ada] Simplify check for extra parens
Piotr Trojanek [Thu, 26 Nov 2020 17:37:09 +0000 (18:37 +0100)]
[Ada] Simplify check for extra parens

gcc/ada/

* par-ch5.adb (P_Condition): Simplify condition for warning
about extra parens and make it easier to understand.

3 years ago[Ada] Refactor repeated complains about missing -gnat2005 switch
Piotr Trojanek [Wed, 25 Nov 2020 21:02:29 +0000 (22:02 +0100)]
[Ada] Refactor repeated complains about missing -gnat2005 switch

gcc/ada/

* errout.ads (Error_Msg_Ada_2005_Extension): New routine (spec).
* errout.adb (Error_Msg_Ada_2005_Extension): New routine (body).
* par-ch10.adb: Reuse new routine; correct casing for "LIMITED
WITH".
* par-ch11.adb: Likewise.
* par-ch12.adb: Likewise.
* par-ch3.adb: Likewise.
* par-ch4.adb: Likewise; replace "box" with "<>".
* par-ch6.adb: Likewise.
* par-ch9.adb: Likewise; correct casing for "THEN ABORT".

3 years ago[Ada] Small adjustment to parameterization of System.Value_R
Eric Botcazou [Wed, 25 Nov 2020 18:32:15 +0000 (19:32 +0100)]
[Ada] Small adjustment to parameterization of System.Value_R

gcc/ada/

* doc/gnat_ugn/gnat_and_program_execution.rst: Minor fix.
* gnat_ugn.texi: Regenerate.
* libgnat/s-valuer.ads (Precision_Limit): New formal parameter.
* libgnat/s-valuer.adb (Precision_Limit): Remove.
(Scan_Decimal_Digits): Robustify overflow check.
(Scan_Integral_Digits): Likewise.
* libgnat/s-valrea.adb: Add assertion on the size of the unsigned
type and instantiate System.Value_R with the mantissa limit.
(Integer_to_Real): Add Extra parameter and take it into account.
(Scan_Real): Pass Extra to Integer_to_Real.
(Value_Real): Likewise.
* libgnat/s-valued.adb: Add assertion on the size of the unsigned
type and instantiate System.Value_R with the mantissa limit.
* libgnat/s-valuef.adb: Likewise.

3 years ago[Ada] Postcondition checks performed before finalization
Justin Squirek [Mon, 16 Nov 2020 14:08:51 +0000 (09:08 -0500)]
[Ada] Postcondition checks performed before finalization

gcc/ada/

* contracts.adb, contracts.ads (Build_Postconditions_Procedure):
Add declarations for Postcond_Enabled,
Result_Object_For_Postcondition, and
Return_Success_For_Postcond, and place all postconditions within
an if statement to control their execution for interactions when
cleanup actions get generated.
(Get_Postcond_Enabled): Created to fetch object declared to
handle new expansion of postconditions.
(Get_Result_Object_For_Postcond): Created to fetch object
declared to handle new expansion of postconditions.
(Get_Return_Success_For_Postcond): Created to fetch object
declared to handle new expansion of postconditions.
* einfo.adb, einfo.ads: Modify flag Stores_Attribute_Old_Prefix
to apply to constants, variables, and types.
* exp_ch6.adb (Add_Return): Add assignment to
Return_Success_For_Postcond.
(Expand_Non_Function_Return): Add assignment to
Return_Success_For_Postcond
(Expand_Simple_Function_Return): Add assignment to
Result_Object_For_Postcond and Return_Success_For_Postcond.
* exp_ch7.adb (Build_Finalization_Master): Mark finalization
masters which finalize types created store 'Old objects as
storing 'Old objects.
(Build_Finalizer): Created to generated a unified and special
expansion for finalization when postconditions are present.
(Build_Finalizer_Helper): Renamed Build_Finalizer and added
parameter to facilitate the creation of separate finalization
routines for 'Old objects and general objects.
(Create_Finalizer): Add condition for the insertion of the
finalizer spec to avoid malformed trees.
(Expand_Cleanup_Actions): Move _postconditions and related
declarations to the new declarative section.  Fix the loop to
properly stop at the subprogram declaration for the
postconditions procedure and exclude its body from being moved
to the new list of declarations to avoid freezing issues.
* exp_prag.adb (Expand_Attributes): Mark temporary created to
store 'Old objects as storing a 'Old attribute.
* sem_ch6.adb (Find_What_Applies_To): Remove strange exception
to postconditions when traversing the scope stack.
* sem_prag.adb (Find_Related_Declaration_Or_Body): Use the newly
created Enclosing_HSS function to find the HSS for a potentially
nested statement.
* sem_util.adb, sem_util.ads (Declare_Indirect_Temp): Mark types
created to store 'Old objects as storing 'Old attributes.
(Enclosing_HSS): Created to find the enclosing handled sequence
of statements for a given statement.
* snames.ads-tmpl: Add multiple names to aid in the expansion of
finalization and to control the evaluation of postconditions.
Including _finalization_controller, a new routine to centralize
finalization actions and postcondition evaluation.

3 years ago[Ada] Complain about missing -gnat2020 switch on iterator_filter
Piotr Trojanek [Wed, 25 Nov 2020 11:05:47 +0000 (12:05 +0100)]
[Ada] Complain about missing -gnat2020 switch on iterator_filter

gcc/ada/

* par-ch5.adb (P_Loop_Parameter_Specification): Complain about
missing -gnat2020 switch.
(P_Iterator_Specification): Likewise.

3 years ago[Ada] Reuse Append_New in parsing aggregates
Piotr Trojanek [Wed, 25 Nov 2020 11:27:23 +0000 (12:27 +0100)]
[Ada] Reuse Append_New in parsing aggregates

gcc/ada/

* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify with
Append_New.

3 years ago[Ada] Implement tiered support for floating-point input operations
Eric Botcazou [Mon, 23 Nov 2020 14:42:08 +0000 (15:42 +0100)]
[Ada] Implement tiered support for floating-point input operations

gcc/ada/

* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Remove s-fatsfl$(objext)
and add s-valflt$(objext), s-vallfl$(objext), s-valllf$(objext).
* exp_attr.adb (Find_Fat_Info): Merge Short_Float and Float cases.
* exp_imgv.adb (Expand_Value_Attribute): Replace RE_Value_Real with
RE_Value_Long_Long_Float for fixed-point types and use appropriate
base type for floating-point types.
* rtsfind.ads (RTU_Id): Remove System_Fat_IEEE_Long_Float,
System_Fat_IEEE_Short_Float and System_Val_Real, add System_Val_Flt,
System_Val_LFlt and System_Val_LLF.
(RE_Id): Remove RE_Attr_IEEE_Long, RE_Fat_IEEE_Long,
RE_Attr_IEEE_Short, RE_Fat_IEEE_Short, RE_Attr_Short_Float, add
RE_Value_Float, RE_Value_Long_Float, RE_Value_Long_Long_Float,
(RE_Unit_Table): Likewise.
* libgnat/a-ticoau.ads: Add with clause for Float_Aux and make the
package generic.
(Get): Change parameter types to Num.
(Put): Likewise.
(Gets): Likewise.
(Puts): Likewise.
* libgnat/a-ticoau.adb: Remove clause and renaming for Float_Aux.
(Get): Change parameter types to Num.
(Gets): Likewise.
(Put): Likewise.
(Puts): Likewise.  Add conversion to Long_Long_Float.
* libgnat/a-ticoio.adb: Remove with clause for Ada.Text_IO, add with
clause for Float_Aux, add with and use clauses for System.Val_Flt,
System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux and
Complex_Aux on Float, Long_Float, and Long_Long_Float.
(OK_Float): New boolean constant.
(OK_Long_Float): Likewise.
(Get): Call appropriate Get routine from auxiliary package.
(Get): Call appropriate Gets routine from auxiliary package.
(Put): Call appropriate Put routine from auxiliary package.
(Put): Call appropriate Puts routine from auxiliary package.
* libgnat/a-tideau.adb: Remove with and use clause for Float_Aux.
* libgnat/a-tifiau.adb: Likewise.
* libgnat/a-tifiio.adb: Add with and use clause for System.Val_LLF.
Instantiate Float_Aux on Long_Long_Float.
(Get): Adjust call to Get routine from auxiliary package.
(Get): Adjust call to Gets routine from auxiliary package.
(Put): Adjust call to Put routine from auxiliary package.
(Put): Adjust call to Puts routine from auxiliary package.
* libgnat/a-tifiio__128.adb: Likewise.
(Get): Likewise.
(Get): Likewise.
(Put): Likewise.
(Put): Likewise.
* libgnat/a-tiflau.ads: Make the package generic.
(Get): Change parameter type to Num.
(Put): Likewise.
(Gets): Likewise.
(Puts): Likewise.
* libgnat/a-tiflau.adb: Remove clauses for System.Val_Real.
(Get): Change parameter type to Num and call Scan routine.
(Gets): Likewise.
(Load_Real): Move to...
(Put): Change parameter type and add conversion to Long_Long_Float.
(Puts): Likewise.
* libgnat/a-tiflio.adb: Add with and use clauses for System.Val_Flt,
System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
Long_Float and Long_Long_Float.
(OK_Float): New boolean constant.
(OK_Long_Float): Likewise.
(Get): Call appropriate Get routine from auxiliary package.
(Get): Call previous variant.
(Get): Call appropriate Gets routine from auxiliary package.
(Put): Call appropriate Put routine from auxiliary package.
(Put): Call previous variant.
(Put): Call appropriate Puts routine from auxiliary package.
* libgnat/a-tigeau.ads (Load_Real): New procedure.
* libgnat/a-tigeau.adb (Load_Real): ...here.
* libgnat/a-wtcoau.ads: Add with clause for Float_Aux and make the
package generic.
(Get): Change parameter types to Num.
(Put): Likewise.
(Gets): Likewise.
(Puts): Likewise.
* libgnat/a-wtcoau.adb: Remove clause and renaming for Float_Aux.
(Get): Change parameter types to Num.
(Gets): Likewise.
(Put): Likewise.
(Puts): Likewise.  Add conversion to Long_Long_Float.
* libgnat/a-wtcoio.ads: Remove use clause for Complex_Types and use
qualified names throughout accordingly.
* libgnat/a-wtcoio.adb: Remove clause for Ada.Unchecked_Conversion,
add with clause for Float_Aux, add clauses for System.Val_Flt,
System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
Long_Long_Float.  Remove LLF subtype and TFT instantiation.
(OK_Float): New boolean constant.
(OK_Long_Float): Likewise.
(Get): Call appropriate Get routine from auxiliary package.
(Get): Call appropriate Gets routine from auxiliary package.
(Put): Call appropriate Put routine from auxiliary package.
(Put): Call appropriate Puts routine from auxiliary package.
* libgnat/a-wtdeau.adb: Remove with and use clause for Float_Aux.
* libgnat/a-wtfiau.adb: Likewise.
* libgnat/a-wtfiio.adb: Add with and use clause for System.Val_LLF.
Instantiate Float_Aux on Long_Long_Float.
(Get): Adjust call to Get routine from auxiliary package.
(Get): Adjust call to Gets routine from auxiliary package.
(Put): Adjust call to Put routine from auxiliary package.
(Put): Adjust call to Puts routine from auxiliary package.
* libgnat/a-wtfiio__128.adb: Likewise.
(Get): Likewise.
(Get): Likewise.
(Put): Likewise.
(Put): Likewise.
* libgnat/a-wtflau.ads: Make the package generic.
(Get): Change parameter type to Num.
(Put): Likewise.
(Gets): Likewise.
(Puts): Likewise.
* libgnat/a-wtflau.adb: Remove clauses for System.Val_Real.
(Get): Change parameter type to Num and call Scan routine. Set
Ptr parameter lazily.
(Gets): Likewise.
(Load_Real): Move to...
(Put): Change parameter type and add conversion to Long_Long_Float.
Bump buffer length to Max_Real_Image_Length.
(Puts): Likewise.
* libgnat/a-wtflio.adb: Add with and use clauses for System.Val_Flt,
System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
Long_Float and Long_Long_Float.
(OK_Float): New boolean constant.
(OK_Long_Float): Likewise.
(Get): Call appropriate Get routine from auxiliary package.  Add
pragma Unsuppress (Range_Check) and manual validity check.
(Get): Call appropriate Gets routine from auxiliary package. Add
pragma Unsuppress (Range_Check) and manual validity check.
(Put): Call appropriate Put routine from auxiliary package.
(Put): Call appropriate Puts routine from auxiliary package.
* libgnat/a-wtgeau.ads (Load_Real): New procedure.
* libgnat/a-wtgeau.adb (Load_Real): ...here.
* libgnat/a-ztcoau.ads: Add with clause for Float_Aux and make the
package generic.
(Get): Change parameter types to Num.
(Put): Likewise.
(Gets): Likewise.
(Puts): Likewise.
* libgnat/a-ztcoau.adb: Remove clause and renaming for Float_Aux.
(Get): Change parameter types to Num.
(Gets): Likewise.
(Put): Likewise.
(Puts): Likewise.  Add conversion to Long_Long_Float.
* libgnat/a-ztcoio.ads: Remove use clause for Complex_Types and use
qualified names throughout accordingly.
* libgnat/a-ztcoio.adb: Remove clause for Ada.Unchecked_Conversion,
add with clause for Float_Aux, add clauses for System.Val_Flt,
System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
Long_Long_Float. Remove LLF subtype and TFT instantiation.
(OK_Float): New boolean constant.
(OK_Long_Float): Likewise.
(Get): Call appropriate Get routine from auxiliary package.
(Get): Call appropriate Gets routine from auxiliary package.
(Put): Call appropriate Put routine from auxiliary package.
(Put): Call appropriate Puts routine from auxiliary package.
* libgnat/a-ztdeau.adb: Remove with and use clause for Float_Aux.
* libgnat/a-ztfiau.adb: Likewise.
* libgnat/a-ztfiio.adb: Add with and use clause for System.Val_LLF.
Instantiate Float_Aux on Long_Long_Float.
(Get): Adjust call to Get routine from auxiliary package.
(Get): Adjust call to Gets routine from auxiliary package.
(Put): Adjust call to Put routine from auxiliary package.
(Put): Adjust call to Puts routine from auxiliary package.
* libgnat/a-ztfiio__128.adb: Likewise.
(Get): Likewise.
(Get): Likewise.
(Put): Likewise.
(Put): Likewise.
* libgnat/a-ztflau.ads: Make the package generic.
(Get): Change parameter type to Num.
(Put): Likewise.
(Gets): Likewise.
(Puts): Likewise.
* libgnat/a-ztflau.adb: Remove clauses for System.Val_Real.
(Get): Change parameter type to Num and call Scan routine. Set
Ptr parameter lazily.
(Gets): Likewise.
(Load_Real): Move to...
(Put): Change parameter type and add conversion to Long_Long_Float.
Bump buffer length to Max_Real_Image_Length.
(Puts): Likewise.
* libgnat/a-ztflio.adb: Add with and use clauses for System.Val_Flt,
System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
Long_Float and Long_Long_Float.
(OK_Float): New boolean constant.
(OK_Long_Float): Likewise.
(Get): Call appropriate Get routine from auxiliary package.  Add
pragma Unsuppress (Range_Check) and manual validity check.
(Get): Call appropriate Gets routine from auxiliary package. Add
pragma Unsuppress (Range_Check) and manual validity check.
(Put): Call appropriate Put routine from auxiliary package.
(Put): Call appropriate Puts routine from auxiliary package.
* libgnat/a-ztgeau.ads (Load_Real): New procedure.
* libgnat/a-ztgeau.adb (Load_Real): ...here.
* libgnat/s-fatsfl.ads: Delete.
* libgnat/s-valflt.ads: New package.
* libgnat/s-vallfl.ads: Likewise.
* libgnat/s-valllf.ads: Likewise.
* libgnat/s-valrea.ads: Make generic. Add assertions, defensive
code and clarify intent.
(Scan_Real): Change parameter type to Num.
(Value_Real): Likewise.
* libgnat/s-valrea.adb: Instantiate Value_R on Uns.
(Integer_to_Real): Change parameter and result to Num.
Call Float_Control.Reset only if the mantissa is 64 bits.  Use
a divide to compute the final value if the scale is negative.
(Scan_Real): Change result to Num.
(Value_Real): Likewise.
* libgnat/s-valuer.adb: Add assertions, defensive code and
clarify intent.
(F_Limit): Delete.
(I_Limit): Likewise.
(Precision_Limit): Always use the integer limit.
* libgnat/s-fatgen.adb: Add pragma Annotate.

3 years ago[Ada] Mark generic body outside of SPARK
Yannick Moy [Wed, 25 Nov 2020 09:33:54 +0000 (10:33 +0100)]
[Ada] Mark generic body outside of SPARK

gcc/ada/

* libgnat/a-tiflio.adb: Mark body not in SPARK.
* libgnat/a-tiflio.ads: Mark spec in SPARK.

3 years ago[Ada] Transform_Function_Array issues
Arnaud Charlet [Mon, 16 Nov 2020 17:10:25 +0000 (18:10 +0100)]
[Ada] Transform_Function_Array issues

gcc/ada/

* exp_ch6.adb (Build_Procedure_Body_Form): Adjust, the
declaration of the procedure form is now insert before the
original function body rather than after.
(Expand_N_Subprogram_Declaration): Deal with private types whose
full views are arrays.
* exp_unst.adb (Unnest_Subprogram): Deal with private types.
(Needs_Fat_Pointer): Code cleanup.
* freeze.adb (Freeze_Subprogram): Ditto.
* exp_util.adb (Build_Procedure_Form): Insert the procedure form
decl before and not after.
* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Build missing
spec when needed for Transform_Function_Array.
* sem_util.adb (Get_Fullest_View): Deal with null entity.

3 years ago[Ada] Simplify discarding nodes when processing aspect/pragma Priority
Piotr Trojanek [Tue, 24 Nov 2020 21:56:40 +0000 (22:56 +0100)]
[Ada] Simplify discarding nodes when processing aspect/pragma Priority

gcc/ada/

* sem_ch13.adb (Analyze_Aspect_Specifications): Simplify code
for aspect Priority.
* sem_prag.adb (Analyze_Pragma): Simplify code for pragma
Priority.

3 years ago[Ada] Crash on unnesting unnamed blocks
Arnaud Charlet [Tue, 24 Nov 2020 16:53:28 +0000 (17:53 +0100)]
[Ada] Crash on unnesting unnamed blocks

gcc/ada/

* exp_ch7.adb (Reset_Scopes_To_Block_Elab_Proc): Do not crash on
a block with no Identifier. Code cleanups.

3 years ago[Ada] Refactor repeated code for Value attributes
Piotr Trojanek [Tue, 24 Nov 2020 15:01:52 +0000 (16:01 +0100)]
[Ada] Refactor repeated code for Value attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Reuse existing code for
attribute Value when analyzing attributes Wide_Value and
Wide_Wide_Value.

3 years ago[Ada] Fix possible infinite recursion in directory iterator
Pascal Obry [Fri, 20 Nov 2020 16:28:50 +0000 (17:28 +0100)]
[Ada] Fix possible infinite recursion in directory iterator

gcc/ada/

* libgnat/g-diopit.adb (Find): Fix possible infinite recursion
in Find iterator.
* libgnat/g-diopit.ads (Find): Update comments accordingly.

3 years ago[Ada] Refactor repeated code for Callable and Terminated attributes
Piotr Trojanek [Mon, 23 Nov 2020 23:31:49 +0000 (00:31 +0100)]
[Ada] Refactor repeated code for Callable and Terminated attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Callable and Terminated attributes; refactor calls to Set_Etype
occurring in both THEN and ELSE branches of an IF statement for
attribute Storage_Size.

3 years ago[Ada] Refactor repeated code for Width attributes
Piotr Trojanek [Mon, 23 Nov 2020 23:18:47 +0000 (00:18 +0100)]
[Ada] Refactor repeated code for Width attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Wide_Wide_Width, Wide_Width and Width attributes.

3 years ago[Ada] Refactor repeated code for Pred and Succ attributes
Piotr Trojanek [Mon, 23 Nov 2020 23:17:02 +0000 (00:17 +0100)]
[Ada] Refactor repeated code for Pred and Succ attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Pred and Succ attributes.

3 years ago[Ada] Refactor repeated code for size attributes
Piotr Trojanek [Mon, 23 Nov 2020 23:05:44 +0000 (00:05 +0100)]
[Ada] Refactor repeated code for size attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Size, Object_Size and Value_Size attributes.

3 years ago[Ada] Refactor repeated code for fixed point attributes
Piotr Trojanek [Mon, 23 Nov 2020 23:00:17 +0000 (00:00 +0100)]
[Ada] Refactor repeated code for fixed point attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Consistently call
Check_Fixed_Point_Type before checking the number of attribute
expressions (like it is done for floating point types); reuse
Check_Fixed_Point_Type_0.

3 years ago[Ada] Remove redundant calls to UI_To_Int in relational operands
Piotr Trojanek [Mon, 23 Nov 2020 22:52:59 +0000 (23:52 +0100)]
[Ada] Remove redundant calls to UI_To_Int in relational operands

gcc/ada/

* exp_disp.adb (Make_Tags): Remove call to UI_To_Int.
* sem_attr.adb (Check_Array_Type): Likewise; also, refine type
of a local variable.
(Analyze_Attribute): Likewise.
(Get_Enclosing_Object): Likewise.
* sem_util.adb (Get_Enum_Lit_From_Pos): Likewise.

3 years ago[Ada] Refactor repeated code for component attributes
Piotr Trojanek [Mon, 23 Nov 2020 22:44:06 +0000 (23:44 +0100)]
[Ada] Refactor repeated code for component attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
First_Bit/Last_Bit and Position attributes.

3 years ago[Ada] Refactor repeated code for real type attributes returning integers
Piotr Trojanek [Mon, 23 Nov 2020 22:30:32 +0000 (23:30 +0100)]
[Ada] Refactor repeated code for real type attributes returning integers

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Machine_Radix and Mantissa attributes.

3 years ago[Ada] Refactor repeated code for real type attributes returning booleans
Piotr Trojanek [Mon, 23 Nov 2020 22:28:46 +0000 (23:28 +0100)]
[Ada] Refactor repeated code for real type attributes returning booleans

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Machine_Overflows and Machine_Rounds attributes.

3 years ago[Ada] Refactor repeated code for real type attributes returning reals
Piotr Trojanek [Mon, 23 Nov 2020 22:27:21 +0000 (23:27 +0100)]
[Ada] Refactor repeated code for real type attributes returning reals

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Large, Small, Safe_Large and Safe_Small attributes.

3 years ago[Ada] Refactor repeated code for floating point attributes returning reals
Piotr Trojanek [Mon, 23 Nov 2020 22:21:19 +0000 (23:21 +0100)]
[Ada] Refactor repeated code for floating point attributes returning reals

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Epsilon, Model_Epsilon, Model_Small, Safe_First and Safe_Las
attributes.

3 years ago[Ada] Refactor repeated code for floating point attributes returning ints
Piotr Trojanek [Mon, 23 Nov 2020 15:54:58 +0000 (16:54 +0100)]
[Ada] Refactor repeated code for floating point attributes returning ints

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Emax, Machine_Emax, Machine_Emin, Machine_Mantissa, Model_Emin,
Model_Mantissa and Safe_Emax attributes.

3 years ago[Ada] Refactor duplicated code for Denorm and Signed_Zeros attributes
Piotr Trojanek [Mon, 23 Nov 2020 15:50:17 +0000 (16:50 +0100)]
[Ada] Refactor duplicated code for Denorm and Signed_Zeros attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Denorm and Signed_Zeros attributes.

3 years ago[Ada] Refactor duplicated code for Adjacent, Copy_Sign and Remainder
Piotr Trojanek [Mon, 23 Nov 2020 15:40:06 +0000 (16:40 +0100)]
[Ada] Refactor duplicated code for Adjacent, Copy_Sign and Remainder

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Adjacent, Copy_Sign and Remainder attributes.
(Check_Floating_Point_Type_2): Fix style in comment.

3 years ago[Ada] Refactor duplicated code for Compose, Leading_Part and Scaling
Piotr Trojanek [Mon, 23 Nov 2020 14:39:32 +0000 (15:39 +0100)]
[Ada] Refactor duplicated code for Compose, Leading_Part and Scaling

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Compose, Leading_Part and Scaling attributes.

3 years agoi386: Fix up -march=x86-64-v[234] vs. target attribute [PR98274]
Jakub Jelinek [Tue, 15 Dec 2020 09:16:08 +0000 (10:16 +0100)]
i386: Fix up -march=x86-64-v[234] vs. target attribute [PR98274]

The following testcase fails to compile.  The problem is that
when ix86_option_override_internal is called the first time for command
line, it sees -mtune= wasn't present on the command line and so as fallback
sets ix86_tune_string to ix86_arch_string value ("x86-64-v2"), but
ix86_tune_specified is false, so we don't find the tuning in the table
but don't error on it.
When processing the target attribute, ix86_tune_string is what
it was earlier left with, but this time ix86_tune_specified is true and
so we error on it.

The following patch does what is done already e.g. for "x86-64" march,
in particular default the tuning to "generic".

2020-12-15  Jakub Jelinek  <jakub@redhat.com>

PR target/98274
* config/i386/i386-options.c (ix86_option_override_internal): Set
ix86_tune_string to "generic" even when it wasn't specified and
ix86_arch_string is "x86-64-v2", "x86-64-v3" or "x86-64-v4".
Remove useless {}s around a single statement.

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

3 years agolto: set nthreads_var to 1 if it is zero
Martin Liska [Tue, 15 Dec 2020 08:59:04 +0000 (09:59 +0100)]
lto: set nthreads_var to 1 if it is zero

gcc/ChangeLog:

PR lto/98275
* lto-wrapper.c: Do not use -j0 when we are unable to detect
number of cores.

3 years agoi386: Make -march=x86-64-v[234] behave more like other -march= options
Jakub Jelinek [Tue, 15 Dec 2020 08:51:28 +0000 (09:51 +0100)]
i386: Make -march=x86-64-v[234] behave more like other -march= options

If somebody has -march=x86-64-v2 (or -v3 or -v4) in $CFLAGS, $CXXFLAGS etc.,
then -m32 or -mabi=ms stops working.
What is worse, if one configures gcc --with-arch-64=x86-64-v2 (or -v3 or -v4),
then -mabi=ms stops working.

I think that is a nightmare user experience.  It is ok that x86-64-v[234]
behave slightly different from other -march= options (in that they imply
unless overridden -mtune=generic rather then -mtune= equal to the -march
argument), but the error when one mixes it with -mabi=ms, or -m32 doesn't
improve anything.
It is true that the exact option set is only defined in the x86-64 psABI
(IMHO that is a mistake too, we should copy that into the GCC documentation
like we document it for any other -march= option), but there is no reason
why that exact set of CPU features can't be used for other ABIs, it is just
a set of CPU features.  If we add micro-architecture levels to the 32-bit
ABI (I doubt anyone wants to do that, but just hypothetically), then those
micro-architecture levels wouldn't certainly be called x86-64-v* but perhaps
i386-v*.
In the tests, __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 can't be expected on -m32
not because the CPU feature wouldn't be set, but because the instruction
is 64-bit only and 32-bit code doesn't have __int128 etc. support.

2020-12-15  Jakub Jelinek  <jakub@redhat.com>

* config/i386/i386-options.c (ix86_option_override_internal): Don't
error on -march=x86-64-v[234] with -m32 or -mabi=ms.
* config.gcc: Don't reject --with-arch=x86-64-v[234] or
--with-arch_32=x86-64-v[234].
* doc/invoke.texi (-march=x86-64-v[234]): Document what the option
does for other ABIs.

* gcc.target/i386/x86-64-v2.c: Don't expect
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32.
* gcc.target/i386/x86-64-v2-other.c: New test.
* gcc.target/i386/x86-64-v2-msabi.c: New test.
* gcc.target/i386/x86-64-v3.c: Fix a comment pasto.  Don't expect
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32.
* gcc.target/i386/x86-64-v3-other.c: New test.
* gcc.target/i386/x86-64-v3-msabi.c: New test.
* gcc.target/i386/x86-64-v4.c:Don't expect
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 to be defined with -m32.
* gcc.target/i386/x86-64-v4-other.c: New test.
* gcc.target/i386/x86-64-v4-msabi.c: New test.

3 years agogcov: fix line output for nested functions in JSON format
Martin Liska [Mon, 14 Dec 2020 13:00:08 +0000 (14:00 +0100)]
gcov: fix line output for nested functions in JSON format

gcc/ChangeLog:

PR gcov-profile/98273
* gcov.c (output_json_intermediate_file): Use stack of nested
functions for lines in a source file.  Pop when a function ends.

3 years agolibstdc++: Update link to Unicode-HOWTO
Gerald Pfeifer [Tue, 15 Dec 2020 08:33:18 +0000 (09:33 +0100)]
libstdc++: Update link to Unicode-HOWTO

libstdc++-v3/ChangeLog:

2020-12-15  Gerald Pfeifer  <gerald@pfeifer.com>

* doc/xml/manual/codecvt.xml: Update link to Unicode-HOWTO.
* doc/html/manual/facets.html: Regenerate.

3 years agodoc: Update link to KernelAddressSanitizer
Gerald Pfeifer [Tue, 15 Dec 2020 07:26:50 +0000 (08:26 +0100)]
doc: Update link to KernelAddressSanitizer

gcc/ChangeLog:

2020-12-15  Gerald Pfeifer  <gerald@pfeifer.com>

* doc/invoke.texi (Instrumentation Options): Update link to
KernelAddressSanitizer.

3 years agogcc: xtensa: fix PR target/98285
Max Filippov [Sat, 12 Dec 2020 20:14:40 +0000 (12:14 -0800)]
gcc: xtensa: fix PR target/98285

2020-12-14  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/predicates.md (addsubx_operand): Change accepted
values from 2/4/8 to 1..3.
* config/xtensa/xtensa.md (*addx, *subx): Change RTL pattern
to use 'ashift' instead of 'mult'. Update operands[3] value.

gcc/testsuite/
* gcc.target/xtensa/pr98285.c: New test.

3 years agogo-test.exp: retain any characters at end of ERROR line
Ian Lance Taylor [Tue, 15 Dec 2020 04:39:53 +0000 (20:39 -0800)]
go-test.exp: retain any characters at end of ERROR line

* go.test/go-test.exp (errchk): Retain any characters at the end
of the comment.

3 years agoFix up testcase.
liuhongt [Wed, 9 Dec 2020 09:58:22 +0000 (17:58 +0800)]
Fix up testcase.

gcc/testsuite

* gcc.target/i386/pr78102.c: Adjust testcase.

3 years agoDaily bump.
GCC Administrator [Tue, 15 Dec 2020 00:16:35 +0000 (00:16 +0000)]
Daily bump.

3 years agors6000: Update the processor defaults for FreeBSD
Gerald Pfeifer [Sun, 13 Dec 2020 00:00:36 +0000 (01:00 +0100)]
rs6000: Update the processor defaults for FreeBSD

gcc/ChangeLog:

2020-12-13  Piotr Kubaj  <pkubaj@FreeBSD.org>
    Gerald Pfeifer  <gerald@pfeifer.com>

* config/rs6000/freebsd64.h (PROCESSOR_DEFAULT): Update
to PROCESSOR_PPC7450.
(PROCESSOR_DEFAULT64): Update to PROCESSOR_POWER8.

3 years agolibstdc++: Make tests with Undefined Behavior in C++11 UNSUPPORTED
François Dumont [Mon, 14 Dec 2020 21:21:47 +0000 (22:21 +0100)]
libstdc++: Make tests with Undefined Behavior in C++11 UNSUPPORTED

libstdc++-v3/ChangeLog:

* testsuite/23_containers/array/debug/back1_neg.cc: Target c++14 because assertion
is disabled in C++11.
* testsuite/23_containers/array/debug/front1_neg.cc: Likewise.
* testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc: Likewise.

3 years agoaix: Fixinclude updates [PR98208]
Ilya Leoshkevich [Thu, 10 Dec 2020 23:54:49 +0000 (00:54 +0100)]
aix: Fixinclude updates [PR98208]

After 92648faa1cb2 ("aix: Fixinclude") make check-fixincludes began to
fail (at least on gcc121 machine).  Fix by updating fixincludes/tests
and rerunning genfixes.

Co-developed-by: Nathan Sidwell <nathan@acm.org>
fixincludes/ChangeLog:

2020-12-11  Ilya Leoshkevich  <iii@linux.ibm.com>

* fixincl.x: Rerun genfixes.
* inclhack.def(aix_physadr_t): Change test_text to something
that needs to be replaced.
* tests/base/sys/types.h(aix_physadr_t): Add expectation.

3 years agoCorrect/improve maybe_emit_free_warning (PR middle-end/98166, PR c++/57111, PR middle...
Martin Sebor [Mon, 14 Dec 2020 20:30:00 +0000 (13:30 -0700)]
Correct/improve maybe_emit_free_warning (PR middle-end/98166, PR c++/57111, PR middle-end/98160).

Resolves:
PR middle-end/98166 - bogus -Wmismatched-dealloc on user-defined allocator and inlining
PR c++/57111 - 57111 - Generalize -Wfree-nonheap-object to delete
PR middle-end/98160 - ICE in default_tree_printer at gcc/tree-diagnostic.c:270

gcc/ChangeLog:

PR middle-end/98166
PR c++/57111
PR middle-end/98160
* builtins.c (check_access): Call tree_inlined_location
fndecl_alloc_p): Handle BUILT_IN_ALIGNED_ALLOC and
BUILT_IN_GOMP_ALLOC.
call_dealloc_p): Remove unused function.
(new_delete_mismatch_p): Call valid_new_delete_pair_p and rework.
(matching_alloc_calls_p): Handle built-in deallocation functions.
(warn_dealloc_offset): Corrct the handling of user-defined operators
delete.
(maybe_emit_free_warning): Avoid assuming expression is a decl.
Simplify.
* doc/extend.texi (attribute malloc): Update.
* tree-ssa-dce.c (valid_new_delete_pair_p): Factor code out into
valid_new_delete_pair_p in tree.c.
* tree.c (tree_inlined_location): Define new function.
(valid_new_delete_pair_p): Define.
* tree.h (tree_inlined_location): Declare.
(valid_new_delete_pair_p): Declare.

gcc/c-family/ChangeLog:

PR middle-end/98166
PR c++/57111
PR middle-end/98160
* c-attribs.c (maybe_add_noinline): New function.
(handle_malloc_attribute): Call it.  Use ATTR_FLAG_INTERNAL.
Implicitly add attribute noinline to functions not declared inline
and warn on those.

libstdc++-v3/ChangeLog:
* testsuite/ext/vstring/requirements/exception/basic.cc: Suppress
a false positive warning.
* testsuite/ext/vstring/requirements/exception/propagation_consistent.cc:
  Same.

gcc/testsuite/ChangeLog:

PR middle-end/98166
PR c++/57111
PR middle-end/98160
* g++.dg/warn/Wmismatched-dealloc-2.C: Adjust test of expected warning.
* g++.dg/warn/Wmismatched-new-delete.C: Same.
* gcc.dg/Wmismatched-dealloc.c: Same.
* c-c++-common/Wfree-nonheap-object-2.c: New test.
* c-c++-common/Wfree-nonheap-object-3.c: New test.
* c-c++-common/Wfree-nonheap-object.c: New test.
* c-c++-common/Wmismatched-dealloc.c: New test.
* g++.dg/warn/Wfree-nonheap-object-3.C: New test.
* g++.dg/warn/Wfree-nonheap-object-4.C: New test.
* g++.dg/warn/Wmismatched-dealloc-2.C: New test.
* g++.dg/warn/Wmismatched-new-delete-2.C: New test.
* g++.dg/warn/Wmismatched-new-delete.C: New test.
* gcc.dg/Wmismatched-dealloc-2.c: New test.
* gcc.dg/Wmismatched-dealloc-3.c: New test.
* gcc.dg/Wmismatched-dealloc.c: New test.

3 years agodisable --with-{cpu,arch,tune}-32
Sebastian Pop [Thu, 3 Dec 2020 17:35:18 +0000 (17:35 +0000)]
disable --with-{cpu,arch,tune}-32

gcc/
* config.gcc (aarch64*-*-*): Remove --with-{cpu,arch,tune}-32 flags.

3 years agoAArch64: Add support for --with-tune
Wilco Dijkstra [Thu, 3 Dec 2020 18:40:34 +0000 (18:40 +0000)]
AArch64: Add support for --with-tune

Add support for --with-tune. Like --with-cpu and --with-arch, the argument is
validated and transformed into a -mtune option to be processed like any other
command-line option.  --with-tune has no effect if a -mcpu or -mtune option
is used. The validating code didn't allow --with-cpu=native, so explicitly
allow that.

Co-authored-by: Delia Burduv <delia.burduv@arm.com>
Bootstrap OK, regress pass, OK to commit?

2020-09-03  Wilco Dijkstra  <wdijkstr@arm.com>

gcc/
* config.gcc (aarch64*-*-*): Add --with-tune. Support --with-cpu=native.
* config/aarch64/aarch64.h (OPTION_DEFAULT_SPECS): Add --with-tune.

gcc/testsuite/
* lib/target-supports.exp (check_effective_target_tune_cortex_a76): New
effective target test.
* gcc.target/aarch64/with-tune-config.c: New test.
* gcc.target/aarch64/with-tune-march.c: Likewise.
* gcc.target/aarch64/with-tune-mcpu.c: Likewise.
* gcc.target/aarch64/with-tune-mtune.c: Likewise.

3 years agogcov: Update comments.
Martin Liska [Mon, 14 Dec 2020 12:07:14 +0000 (13:07 +0100)]
gcov: Update comments.

gcc/ChangeLog:

* gcov.c (output_json_intermediate_file): Update comments.

3 years ago[Ada] Analyze second parameter of attribute Scaling
Piotr Trojanek [Mon, 23 Nov 2020 14:30:06 +0000 (15:30 +0100)]
[Ada] Analyze second parameter of attribute Scaling

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Resolve second parameter of
attribute Scaling just like it is resolved for a similar
attribute Compose.

3 years ago[Ada] Refactor duplicated code for First and Last attributes
Piotr Trojanek [Mon, 23 Nov 2020 13:38:45 +0000 (14:38 +0100)]
[Ada] Refactor duplicated code for First and Last attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
First/Last, First_Bit/Last_Bit and First_Valid/Last_Valid
attributes.

3 years ago[Ada] Process Truncation just like other floating point attributes
Piotr Trojanek [Mon, 23 Nov 2020 13:24:50 +0000 (14:24 +0100)]
[Ada] Process Truncation just like other floating point attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge similar code for
Truncation and other floating point attributes.

3 years ago[Ada] Refactor duplicated code for floating point attributes
Piotr Trojanek [Mon, 23 Nov 2020 12:47:39 +0000 (13:47 +0100)]
[Ada] Refactor duplicated code for floating point attributes

gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Ceiling, Floor, Fraction, Machine, Machine_Rounding, Model,
Rounding and Unbiased_Rounding.

3 years ago[Ada] Small adjustments to fixed-point I/O units
Eric Botcazou [Mon, 23 Nov 2020 10:39:05 +0000 (11:39 +0100)]
[Ada] Small adjustments to fixed-point I/O units

gcc/ada/

* libgnat/a-tifiio.adb: Adjust documentation.
(OK_Get_32): Compare the object size of the base type.
(OK_Put_32): Likewise.
(OK_Get_64): Likewise.
(OK_Put_64): Likewise.
* libgnat/a-tifiio__128.adb: Adjust documentation.
(OK_Get_32): Compare the object size of the base type.
(OK_Put_32): Likewise.
(OK_Get_64): Likewise.
(OK_Put_64): Likewise.
(OK_Get_128): Likewise.
(OK_Put_128): Likewise.
* libgnat/a-wtfiio.adb (OK_Get_32): Likewise.
(OK_Put_32): Likewise.
(OK_Get_64): Likewise.
(OK_Put_64): Likewise
* libgnat/a-wtfiio__128.adb (OK_Get_32): Likewise.
(OK_Put_32): Likewise.
(OK_Get_64): Likewise.
(OK_Put_64): Likewise.
(OK_Get_128): Likewise.
(OK_Put_128): Likewise.
* libgnat/a-ztfiio.adb (OK_Get_32): Likewise.
(OK_Put_32): Likewise.
(OK_Get_64): Likewise.
(OK_Put_64): Likewise
* libgnat/a-ztfiio__128.adb (OK_Get_32): Likewise.
(OK_Put_32): Likewise.
(OK_Get_64): Likewise.
(OK_Put_64): Likewise.
(OK_Get_128): Likewise.
(OK_Put_128): Likewise.

3 years ago[Ada] Small cleanup in the Ada.Text_IO hierarchy
Eric Botcazou [Mon, 23 Nov 2020 07:50:10 +0000 (08:50 +0100)]
[Ada] Small cleanup in the Ada.Text_IO hierarchy

gcc/ada/

* libgnat/a-tifiio.adb (Get): Replace Current_Input with Current_In.
* libgnat/a-tifiio__128.adb: (Get): Likewise.
* libgnat/a-wtcoio.adb (Get): Likewise.
(Put): Replace Current_Output with Current_Out.
* libgnat/a-wtdeio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtdeio__128.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtenio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtfiio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtfiio__128.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtflio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtinio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtinio__128.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtmoio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-wtmoio__128.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztcoio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztdeio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztdeio__128.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztenio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztfiio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztfiio__128.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztflio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztinio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztinio__128.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztmoio.adb (Get): Likewise.
(Put): Likewise.
* libgnat/a-ztmoio__128.adb (Get): Likewise.
(Put): Likewise.

3 years ago[Ada] Incorrect accessibility level on type in formal package
Justin Squirek [Fri, 20 Nov 2020 13:11:12 +0000 (08:11 -0500)]
[Ada] Incorrect accessibility level on type in formal package

gcc/ada/

* sem_util.adb, sem_util.ads (In_Generic_Formal_Package):
Created to identify type declarations occurring within generic
formal packages.
* sem_res.adb (Resolve_Allocator): Add condition to avoid
emitting an error for allocators when the type being allocated
is class-wide and from a generic formal package.

3 years ago[Ada] Fix alignment warning in System.Fat_Gen unit
Eric Botcazou [Sun, 22 Nov 2020 11:00:02 +0000 (12:00 +0100)]
[Ada] Fix alignment warning in System.Fat_Gen unit

gcc/ada/

* libgnat/s-fatgen.adb (Tiny80): Add alignment clause.

3 years ago[Ada] Add annotation after recent compiler changes
Arnaud Charlet [Sun, 22 Nov 2020 10:34:54 +0000 (05:34 -0500)]
[Ada] Add annotation after recent compiler changes

gcc/ada/

* exp_util.adb (Process_Current_Value_Condition): Add assertion.
* libgnat/s-fatgen.adb (Scaling): Add annotation.

3 years ago[Ada] Fix compile time evaluation of shift intrinsics
Arnaud Charlet [Fri, 20 Nov 2020 15:18:22 +0000 (10:18 -0500)]
[Ada] Fix compile time evaluation of shift intrinsics

gcc/ada/

* sem_eval.adb (Fold_Shift): Compute values using the base type.

3 years ago[Ada] Adjust again previous change to System.Fat_Gen
Eric Botcazou [Sat, 21 Nov 2020 23:54:18 +0000 (00:54 +0100)]
[Ada] Adjust again previous change to System.Fat_Gen

gcc/ada/

* libgnat/s-fatgen.adb: Add with clause for Interfaces and use
type clause for Interfaces.Unsigned_64.
(Small): Comment out.
(Tiny): Likewise.
(Tiny16): New integer constant.
(Tiny32): Likewise.
(Tiny64): Likewise.
(Tiny80): New integer array constant.
(Pred): Declare a local overlay for Tiny.
(Succ): Likewise.

3 years ago[Ada] Fix internal error on bit-packed array in Volatile_Full_Access record
Eric Botcazou [Fri, 20 Nov 2020 20:29:13 +0000 (21:29 +0100)]
[Ada] Fix internal error on bit-packed array in Volatile_Full_Access record

gcc/ada/

* exp_pakd.adb (Expand_Bit_Packed_Element_Set): Fix again packed
array type in complex cases where array is Volatile.
* exp_util.adb (Remove_Side_Effects): Do not force a renaming to
be handled by the back-end.

3 years ago[Ada] Adjust previous change to System.Fat_Gen
Eric Botcazou [Fri, 20 Nov 2020 18:33:21 +0000 (19:33 +0100)]
[Ada] Adjust previous change to System.Fat_Gen

gcc/ada/

* libgnat/s-fatgen.adb: Remove use clause for
System.Unsigned_Types.
(Scaling): Add renaming of System.Unsigned_Types and use type
clause for Long_Long_Unsigned.

3 years ago[Ada] Implement part of System.Fat_Gen more efficiently
Eric Botcazou [Thu, 19 Nov 2020 14:35:35 +0000 (15:35 +0100)]
[Ada] Implement part of System.Fat_Gen more efficiently

gcc/ada/

* libgnat/s-fatgen.ads (Compose): Add pragma Inline.
(Copy_Sign): Likewise.
(Exponent): Likewise.
(Fraction): Likewise.
* libgnat/s-fatgen.adb: Remove with clause for System, add
with and use clauses for System.Unsigned_Types.
Add pragma Warnings (Off) for non-static constants.
Remove precomputed tables of powers of radix and add a few
constants describing the floating-point format.
(Gradual_Scaling): Delete.
(Copy_Sign): Reimplement directly.
(Decompose): Likewise.
(Scaling): Likewise.
(Pred): Speed up.
(Succ): Likewise.
(Truncation): Tidy up.
(Valid): Move constants to library level.

3 years ago[Ada] Remove double initialization of the known value cache
Piotr Trojanek [Fri, 6 Nov 2020 11:01:52 +0000 (12:01 +0100)]
[Ada] Remove double initialization of the known value cache

gcc/ada/

* sem_eval.adb (CV_Cache): Remove initialization at elaboration.

3 years ago[Ada] Fix documentation of -gnatw.K switch (activates => disables)
Gary Dismukes [Thu, 19 Nov 2020 20:18:39 +0000 (15:18 -0500)]
[Ada] Fix documentation of -gnatw.K switch (activates => disables)

gcc/ada/

* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
Correct documentation of the -gnatw.K switch to say that it
disables rather than activates the warning.
* gnat_ugn.texi: Regenerate.

3 years ago[Ada] armhf-linux: symbolic tracebacks
Doug Rupp [Thu, 19 Nov 2020 16:35:47 +0000 (08:35 -0800)]
[Ada] armhf-linux: symbolic tracebacks

gcc/ada/

* tracebak.c: Add a section for ARM Linux.

3 years ago[Ada] Implement AI12-0398-1/03
Ghjuvan Lacambre [Wed, 18 Nov 2020 10:23:05 +0000 (11:23 +0100)]
[Ada] Implement AI12-0398-1/03

gcc/ada/

* par-ch3.adb (P_Discriminant_Part_Opt): Parse aspects, update
documentation.
* par-ch6.adb (P_Return_Statement): Likewise.
* par-ch9.adb (P_Entry_Index_Specification): Likewise.

3 years ago[Ada] Additional fixes for Default_Initial_Condition
Gary Dismukes [Wed, 18 Nov 2020 23:06:14 +0000 (18:06 -0500)]
[Ada] Additional fixes for Default_Initial_Condition

gcc/ada/

* exp_aggr.adb (Build_Array_Aggr_Code.Gen_Assign): Move
generation of the call for DIC check past the optional
generation of calls to controlled Initialize procedures.
* exp_ch3.adb
(Build_Array_Init_Proc.Init_One_Dimension.Possible_DIC_Call):
Suppress generation of a DIC call when the array component type
is controlled.  The call will now be generated later inside the
array's DI (Deep_Initialize) procedure.
* exp_ch7.adb
(Make_Deep_Array_Body.Build_Initialize_Statements): Generate a
DIC call (when needed by the array component type) after any
call to the component type's controlled Initialize procedure, or
generate the DIC call by itself if there's no Initialize to
call.
* sem_aggr.adb (Resolve_Record_Aggregate.Add_Association):
Simplify condition to only test Is_Box_Init_By_Default (previous
condition was overkill, as well as incorrect in some cases).
* sem_elab.adb (Active_Scenarios.Output_Call): For
Default_Initial_Condition, suppress call to
Output_Verification_Call when the subprogram is a partial DIC
procedure.