[committed] libstdc++: Move unix.org reference to https

2021-05-02 Thread Gerald Pfeifer
commit f58541b2a42002c23267ce872b63d71e275e545d
Author: Gerald Pfeifer 
Date:   Mon May 3 02:00:07 2021 +0200

libstdc++: Move unix.org reference to https

libstdc++-v3/ChangeLog:

* doc/xml/manual/ctype.xml: Move unix.org reference to https.
* doc/html/manual/facets.html: Regenerate.

diff --git a/libstdc++-v3/doc/html/manual/facets.html 
b/libstdc++-v3/doc/html/manual/facets.html
index 828b52f49bb..90f2e26e990 100644
--- a/libstdc++-v3/doc/html/manual/facets.html
+++ b/libstdc++-v3/doc/html/manual/facets.html
@@ -62,7 +62,7 @@ characters.
 . Copyright ?? 1998 ISO. 

   ISO/IEC 9899:1999 Programming languages - C
 . Copyright ?? 1999 ISO. 

-   http://www.unix.org/version3/ieee_std.html; 
target="_top">
+   https://www.unix.org/version3/ieee_std.html; 
target="_top">
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)

   . Copyright ?? 1999 
@@ -748,4 +748,4 @@ java.util.Locale, java.util.ResourceBundle
 ??Home??Chapter??9.??
   Containers
   
-
\ No newline at end of file
+
diff --git a/libstdc++-v3/doc/xml/manual/ctype.xml 
b/libstdc++-v3/doc/xml/manual/ctype.xml
index 55930c1751f..a1c580f94ad 100644
--- a/libstdc++-v3/doc/xml/manual/ctype.xml
+++ b/libstdc++-v3/doc/xml/manual/ctype.xml
@@ -168,7 +168,7 @@ characters.
   
   
http://www.w3.org/1999/xlink;
- xlink:href="http://www.unix.org/version3/ieee_std.html;>
+ xlink:href="https://www.unix.org/version3/ieee_std.html;>
The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)

   


[committed] wwwdocs: Remove link to Intel AVX-512{VL, BW, DQ} Programming Reference

2021-05-02 Thread Gerald Pfeifer
Links like this to intel.com keep breaking or redirecting to generic
pages, so simply remove this now.

Pushed.

Gerald
---
 htdocs/git.html | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/htdocs/git.html b/htdocs/git.html
index 50fdd56a..8edde126 100644
--- a/htdocs/git.html
+++ b/htdocs/git.html
@@ -326,8 +326,7 @@ in Git.
 
   avx-512vlbwdq
   The goal of this branch is to implement the Intel AVX-512{VL,BW,DQ}
-  Programming Reference
-  (https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf;>link).
+  Programming Reference.
   The branch is maintained by Yukhin Kirill mailto:kirill.yuk...@intel.com;>kirill.yuk...@intel.com.
   Patches should be marked with the tag [AVX512] wwwdocs: in the 
subject
-- 
2.31.1


[committed] wwwdocs: Update link to Fedora rebuild gcc-4.3.0

2021-05-02 Thread Gerald Pfeifer
This moved from www.redhat.com to listman.redhat.com.

Pushed.

Gerald
---
 htdocs/gcc-4.3/porting_to.html | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/htdocs/gcc-4.3/porting_to.html b/htdocs/gcc-4.3/porting_to.html
index 5777519a..630290ce 100644
--- a/htdocs/gcc-4.3/porting_to.html
+++ b/htdocs/gcc-4.3/porting_to.html
@@ -526,7 +526,9 @@ svn diff -r529854:529855 
http://svn.apache.org/repos/asf/ant/core/trunk/src/main
 Links
 
 
-Jakub Jelinek, https://www.redhat.com/archives/fedora-devel-list/2008-January/msg00128.html;>Mass
 rebuild status with gcc-4.3.0-0.4 of rawhide-20071220
+Jakub Jelinek,
+https://listman.redhat.com/archives/fedora-devel-list/2008-January/msg00128.html;>
+Mass rebuild status with gcc-4.3.0-0.4 of rawhide-20071220
 
 
 
-- 
2.31.1


gcc-12-20210502 is now available

2021-05-02 Thread GCC Administrator via Gcc
Snapshot gcc-12-20210502 is now available on
  https://gcc.gnu.org/pub/gcc/snapshots/12-20210502/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 12 git branch
with the following options: git://gcc.gnu.org/git/gcc.git branch master 
revision 92f59e47f5a468b96b12b15233a6729904b1a1ee

You'll find:

 gcc-12-20210502.tar.xz   Complete GCC

  SHA256=9c420a8c79049796d6bc600bdae8a3bcc06793cac1413fb832b6219dec80356b
  SHA1=40dc29baaee85b669f8ed029a41d8ea1f5a41441

Diffs from 12-20210426 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-12
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


[Bug go/100389] New: "invalid type conversion" error for string-based error type

2021-05-02 Thread ben.hutchings at essensium dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100389

Bug ID: 100389
   Summary: "invalid type conversion" error for string-based error
type
   Product: gcc
   Version: 10.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: go
  Assignee: ian at airs dot com
  Reporter: ben.hutchings at essensium dot com
CC: cmang at google dot com
  Target Milestone: ---

Given the following source files:

$ cat main.go
package main

import (
"foo"
"os"
)

func main() {
if !foo.IsInUse(foo.Remove()) {
os.Exit(1)
}
}
$ cat src/foo/foo.go
package foo

const (
errVolumeInUse conflictError = "volume is in use"
)

type conflictError string

func (e conflictError) Error() string {
return string(e)
}

func IsInUse(err error) bool {
return isErr(err, errVolumeInUse)
}

func isErr(err error, expected error) bool {
return err == expected
}

func Remove() error {
return errVolumeInUse
}

gccgo (from Debian package version 10.2.1-6) reports:

$ GOPATH=$PWD go build .
# _/home/bwh/tmp/gotest
 ./src/foo/foo.go:22: error: invalid type conversion (type has no methods)
 ./src/foo/foo.go:14: error: invalid type conversion (type has no methods)

Whereas gc (from Debian package version 1.15.9-1) builds these successfully.

[Bug target/92729] [avr] Convert the backend to MODE_CC so it can be kept in future releases

2021-05-02 Thread abebeos at lazaridis dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92729

--- Comment #57 from abebeos at lazaridis dot com ---
Just fascinating!

Bountysource violated its own processes, and payed out the bounty without
waiting for the votes.

See, even without a dispute, there is a 2 week voting period ("The bounty will
be paid out if all backers accept your claim or if no backers reject your claim
by May 15, 2021 4:41 PM (GMT)")

But it looks like some "manual intervention" just skipped the process, without
waiting for the votes of the main backers:

Microchip   $5,000  
nseidle $500
per1234 $300

And i was mostly interested in what those 3 had to say.

GCC, Bountysource, just be aware that there is one word for this:

Cheating.

Please fix this, if its just one of the bountysource-bugs.

The voice of the major backers needs to count.

[Bug go/100388] New: import seems to define identifiers in package block not file block

2021-05-02 Thread ben.hutchings at essensium dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100388

Bug ID: 100388
   Summary: import seems to define identifiers in package block
not file block
   Product: gcc
   Version: 10.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: go
  Assignee: ian at airs dot com
  Reporter: ben.hutchings at essensium dot com
CC: cmang at google dot com
  Target Milestone: ---

Given a package made of these two files:

$ cat a.go
package main

import (
copy "golang.org/x/sys/unix"
)

func Getuid() int {
return copy.Getuid()
}
$ cat b.go
package main

func main() {
foo := make([]string, 1)
bar := make([]string, 1)
copy(bar, foo)
}

gccgo seems to treat the imported "copy" as defined at package scope, shadowing
the global "copy":

$ go build .
# _/home/bwh/tmp/gotest
./b.go:6:2: error: ‘copy’ defined as both imported name and global name
6 |  copy(bar, foo)
  |  ^
./a.go:4:2: note: ‘copy’ imported here
4 |  copy "golang.org/x/sys/unix"
  |  ^

I'm seeing this with the Debian package of gccgo, version 10.2.1-6.

gc (again from a Debian package, version 1.15.9-1) does not report an error.

The Go Programming Language spec says that import declares names in the "file
block" which seems to mean it should not affect any other source file. But I am
a Go novice, so I might be misinterpreting this.

[Bug testsuite/100169] Test gcc.dg/sms-10.c fails on power10

2021-05-02 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100169

--- Comment #1 from Segher Boessenkool  ---
The SMS pass is notorious for slight changes making its cost model decide
too do things the other way around.  Is that what is happening here?  Was
SMS' decision a good decision (or at least reasonable)?  If so, we just
should disable the test for p10.

[Bug c++/100386] Not all constant brace-init-lists receive symbols

2021-05-02 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100386

Andrew Pinski  changed:

   What|Removed |Added

 Resolution|--- |INVALID
 Status|UNCONFIRMED |RESOLVED

--- Comment #1 from Andrew Pinski  ---
Local labels in assembly code does not get exported to object files.

There is no reason for all constants/labels to have an entry in the object
file.
Yes there is a consistency issue here but it depends on which pass which makes
the constant object.

[Bug tree-optimization/100382] [12 Regression] go.test/test/fixedbugs/issue16095.go hang since r12-248

2021-05-02 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100382

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jakub at gcc dot gnu.org
 Ever confirmed|0   |1
   Last reconfirmed||2021-05-02

--- Comment #1 from Jakub Jelinek  ---
Created attachment 50736
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50736=edit
gcc12-pr100382.patch

So perhaps this untested fix?

[Bug libstdc++/100387] ranges::minmax compares moved-out value

2021-05-02 Thread hewillk at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100387

--- Comment #1 from 康桓瑋  ---
Also, in std::shift_right:

std::move(std::move(__first), std::move(__dest_head),
  std::move(__result));
return __result;

we return the moved-out __result.

[Bug fortran/99819] [9/10/11/12 Regression] ICE in gfc_defer_symbol_init, at fortran/trans-decl.c:841

2021-05-02 Thread pault at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99819

Paul Thomas  changed:

   What|Removed |Added

 CC||pault at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |pault at gcc dot gnu.org

--- Comment #2 from Paul Thomas  ---
Created attachment 50735
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50735=edit
Experimenta "fix" for the PR

The problem lies in class.c(gfc_build_class_symbol).

The attachment contains two different experiments to test the hypothesis that
the array_spec for 'y' is applied to the _data field of the derived type, which
is then promoted to the main namespace. Subsequently, it is picked up in the
declaration of 'z', which cause the problem.

The first chunk, used by itself, turns the array_spec into a deferred array.
The extent information is lost but the testcase now compiles and runs
(incorrectly!). The second chunk, again by itself, puts the derived type
representation in the function namespace. This now runs the testcase correctly
and does the right thing. However, it can only encompass one such dummy.

I'm onto it:-)

Paul

program p
   type t
  integer :: i
   end type
   class(t), allocatable :: dum1(:), dum2(:)
   allocate (t :: dum1(3), dum2(10))
   dum2%i = [1,2,3,4,5,6,7,8,9,10]
   print *, f(dum1, dum2), g(dum1)
contains
   function g(z)
  class(*) :: z(:)
  type(t) :: u(size(z))
  g = 0
   end
   function f(x, y)
  class(t) :: x(:)
  class(*) :: y(size(x))
  print *, size(y)
  select type (y)
type is (t)
  f = 1
  if (any (y%i .ne. [1,2,3])) print *, size(y%i)
class default
  f = 0
  end select
   end
end

[Bug libstdc++/100387] New: ranges::minmax compares moved-out value

2021-05-02 Thread hewillk at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100387

Bug ID: 100387
   Summary: ranges::minmax compares moved-out value
   Product: gcc
   Version: 12.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hewillk at gmail dot com
  Target Milestone: ---

In ranges_algo.h#L3301:

  if (std::__invoke(__comp,
std::__invoke(__proj, __tmp),
std::__invoke(__proj, __result.min)))
__result.min = std::move(__tmp);
  if (!(bool)std::__invoke(__comp,
   std::__invoke(__proj, __tmp),
   std::__invoke(__proj, __result.max)))
__result.max = std::move(__tmp);

we compare the moved-out __tmp in the second if statement.
test: https://godbolt.org/z/W6WTG6sdG

[Bug c++/100386] New: Not all constant brace-init-lists receive symbols

2021-05-02 Thread jengelh at inai dot de via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100386

Bug ID: 100386
   Summary: Not all constant brace-init-lists receive symbols
   Product: gcc
   Version: 10.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jengelh at inai dot de
  Target Milestone: ---

Input:

```
#include 
#include 
void f(int x) { printf("%d", x); }
void foo(const std::initializer_list ) { for (auto y : x) f(y); }
int main()
{
for (auto x : {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15})
f(x);
foo({
1,2,3,4,5,6,7,8,9,2,1,3,4,5,6,7,8,9,3,2,1,4,5,6,7,8,9,5,4,3,
1,2,3,4,5,6,7,8,9,2,1,3,4,5,6,7,8,9,3,2,1,4,5,6,7,8,9,5,4,3,
1,2,3,4,5,6,7,8,9,2,1,3,4,5,6,7,8,9,3,2,1,4,5,6,7,8,9,5,4,3,
});
}
```

Build and objdump:

```
$ gcc -v -O2 -g x.cpp
Target: x86_64-suse-linux
…
gcc version 10.3.0 (SUSE Linux/Tumbleweed)

$ objdump -d a.out
…
00401040 :
  401040:   53  push   rbx
  401041:   be 01 00 00 00  movesi,0x1
  401046:   bb a0 21 40 00  movebx,0x4021a0
  40104b:   48 81 ec 80 01 00 00subrsp,0x180
  401052:   eb 06   jmp40105a 
  401054:   0f 1f 40 00 nopDWORD PTR [rax+0x0]
  401058:   8b 33   movesi,DWORD PTR [rbx]
  40105a:   bf 04 20 40 00  movedi,0x402004
  40105f:   31 c0   xoreax,eax
  401061:   48 83 c3 04 addrbx,0x4
  401065:   e8 c6 ff ff ff  call   401030 
  40106a:   48 81 fb dc 21 40 00cmprbx,0x4021dc
  401071:   75 e5   jne401058 
  401073:   48 8d 44 24 10  learax,[rsp+0x10]
  401078:   48 8d 7c 24 10  leardi,[rsp+0x10]
  40107d:   be 20 20 40 00  movesi,0x402020
  401082:   b9 2d 00 00 00  movecx,0x2d
  401087:   f3 48 a5rep movs QWORD PTR es:[rdi],QWORD PTR
ds:[rsi]
…
```

Observed output:

```
$ nm a.out | sort
…
00402000 R _IO_stdin_used
004021a0 r C.0.0
…
```

Expected output:

```
$ nm a.out
…
00402000 R _IO_stdin_used
00402020 r C.something.something
004021a0 r C.0.0
…
```

[Bug c++/100385] New: overload resolution for function call expression on object selects `operator auto` conversion candidate.

2021-05-02 Thread mizvekov at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100385

Bug ID: 100385
   Summary: overload resolution for function call expression on
object selects `operator auto` conversion candidate.
   Product: gcc
   Version: 12.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mizvekov at gmail dot com
  Target Milestone: ---

The following program compiles successfully, but should be rejected:
```
template struct constant {
constexpr operator auto () const noexcept { return V; }
};

void myfree(void*);

void test() {
constant{}(nullptr);
}
```
According to `[over.call.object]/2`:
```
..., and where conversion-type-id denotes the type “pointer to function of
(P1,…,Pn) returning R”, or the type “reference to pointer to function of
(P1,…,Pn) returning R”, or the type “reference to function of (P1,…,Pn)
returning R”, a surrogate call function with the unique name call-function and
having the form
R call-function ( conversion-type-id  F, P1 a1, …, Pn an) { return F (a1, …,
an); }
is also considered as a candidate function.
...
```
But here `auto` is neither pointer, reference, nor reference to pointer to
function. So I think the GCC behavior here is non-conformant, though it does
look useful to accept it.

Here is a workspace showing that Clang and MSVC reject this:
https://godbolt.org/z/aT6TrPz1h

The above workspace also is a double whammy in that it shows that libstdc++'s
unique_ptr implementation somehow hides this problem from Clang.

[Bug libgomp/100352] [11/12 Regression] libgomp.fortran/async_io_1.f90 -O0 execution test

2021-05-02 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100352

--- Comment #7 from CVS Commits  ---
The master branch has been updated by Tobias Burnus :

https://gcc.gnu.org/g:a13a50047ef1814a7bda2392f728bf28f81b17ce

commit r12-344-ga13a50047ef1814a7bda2392f728bf28f81b17ce
Author: Tobias Burnus 
Date:   Sun May 2 18:16:17 2021 +0200

Fortran: Async I/O - avoid unlocked unlocking [PR100352]

Follow up to PR100352, which moved unit unlocking to st_*_done_worker to
avoid lock order reversal; however, as async_io uses a different lock,
the (unlocked locked) unit lock shall not be unlocked there.

libgfortran/ChangeLog:

PR libgomp/100352
* io/transfer.c (st_read_done_worker, st_write_done_worker): Add
new
arg whether to unlock unit.
(st_read_done, st_write_done): Call it with true.
* io/async.c (async_io): Call it with false.
* io/io.h (st_write_done_worker, st_read_done_worker): Update
prototype.

[Bug c++/100384] Compiling in c++17 mode breaks compilation of functions named visit()

2021-05-02 Thread aacid at kde dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100384

--- Comment #1 from Albert Astals Cid  ---
Created attachment 50734
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50734=edit
error log

[Bug c++/100384] New: Compiling in c++17 mode breaks compilation of functions named visit()

2021-05-02 Thread aacid at kde dot org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100384

Bug ID: 100384
   Summary: Compiling in c++17 mode breaks compilation of
functions named visit()
   Product: gcc
   Version: 10.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: aacid at kde dot org
  Target Milestone: ---

Created attachment 50733
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50733=edit
main.cpp

The attached code fails to compile with 

g++ --std=c++17 main.cpp 

I've tried with gcc 11.1 too and it fails too.

To me it seems a bug in the implementation in which std::visit is leaking into
the non std:: namespace, but maybe it's a bug in C++ specification?

[Bug target/100152] [10/11/12 Regression] used caller-saved register not preserved across a call.

2021-05-02 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100152

--- Comment #45 from Iain Sandoe  ---
the i386 backend code already sets : 

TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS to  true unconditionally.

So, it seems that it might be necessary to find some way to adjust
CALL_INSN_FUNCTION_USAGE.

because...

===

Simply setting an override to PIC or (PIC && !PIE) results
  * in a large number of testsuite regressions
  * and doesn't seem to match the behaviour of the system compiler (a.k.a.
clang).

Noting that x86_64 Darwin is _always_ PIC.

clang does not discriminate between PIC and PIE code in the compiler, the
driver maps both to -mrelocation-model pic 2 (and that's the default anyway).

The static linker does act upon PIE - to the extent that it defaults to PIE for
executables, although that can be overridden with -Wl,-no_pie (which we use to
allow PCH to work in GCC).



it seems [from looking at clang's output ] that we want this to be the
behaviour in a dylib:

.. foo () { ... }

.. bar () { ... foo () ... }

When we have a sufficient optimisation level to allow inlining - then we want
foo to be inlined into bar (for the default case of PIC).

When the static linker acts - it will make both foo and bar available publicly
- and an external caller to those will use lazy symbol resolution.

If foo is not suitable for inlining then the call to it from bar() will be
indirected through the lazy symbol binder if the dylib is built with
-flat_namespace, (which was the case in the gambit scenario here, I think).



I suppose the argument is that if we call a specific implementation of bar(),
we expect the complete implementation (including *that* library's version of
foo() and not some mixture of that and some interposed one) and therefore it's
logical to allow the inlining.

If one wants to guarantee that foo can be interposed [including in any case
like bar()], then either one needs to build -fno-inline or mark foo as
__attribute__((__noinline__)) [or weak]

TBH this seems quite fragile to me - but OTOH people interposing libraries
better know what they are doing - going to ask the Apple ABI folks to confirm
my hypothesis.

=

Anyway .. we can't fix the problem quickly by applying PIC && !PIE - because
that is too big a hammer for Darwin.

I think what will be needed is to append r10 and r11 to the Call clobbered
registers .. but I've not figured out exactly where to do this yet.  [ setting
CALL_INSN_FUNCTION_USAGE somewhere, or so ]

It doesn't seem that i386 has this problem (but needs double-checking).

[Bug bootstrap/100373] [12 Regression] Darwin, Compare-debug fail after r12-248-gb58dc0b803057

2021-05-02 Thread iains at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100373

--- Comment #1 from Iain Sandoe  ---
this happens with mpfr-4.x sources and not with mpfr-3.1.6.

[Bug debug/100383] New: cfi sections directive detection fails with binutils 2.36

2021-05-02 Thread ssbssa at yahoo dot de via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100383

Bug ID: 100383
   Summary: cfi sections directive detection fails with binutils
2.36
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ssbssa at yahoo dot de
  Target Milestone: ---

Since binutils 2.36 [1], the objdump output [2] of the cfi sections directive
detection command (objdump -j .debug_frame -r conftest.o) changed from:

conftest.o: file format pe-x86-64

RELOCATION RECORDS FOR [.debug_frame]:
OFFSET   TYPE  VALUE
001c secrel32  .debug_frame
0020 R_X86_64_64   .text

to:

conftest.o: file format pe-x86-64

RELOCATION RECORDS FOR [.debug_frame]:
OFFSET   TYPE  VALUE
001c IMAGE_REL_AMD64_SECREL  .debug_frame
0020 IMAGE_REL_AMD64_ADDR64  .text

So because it's now uppercase SECREL, the `grep secrel` fails.

I haven't finished my build yet, but it should work like this:

--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3115,7 +3115,7 @@ gcc_GAS_CHECK_FEATURE([cfi sections directive],
 gcc_cv_as_cfi_sections_directive=no
 if test "x$gcc_cv_objdump" != x; then
  if $gcc_cv_objdump -j .debug_frame -r conftest.o 2>/dev/null | \
-   grep secrel > /dev/null; then
+   grep -i secrel > /dev/null; then
   gcc_cv_as_cfi_sections_directive=yes
  fi
 fi



[1]
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ec6653d824fef41298fdb384ba74bcbc7be0dc22
[2]
https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/configure.ac;h=84dceb8074ab4615316e09f1f339ed93eca6d6e9;hb=refs/heads/releases/gcc-10#l3117

[Bug tree-optimization/100382] [12 Regression] go.test/test/fixedbugs/issue16095.go hang since r12-248

2021-05-02 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100382

Jakub Jelinek  changed:

   What|Removed |Added

 CC||ian at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org
   Target Milestone|--- |12.0

[Bug tree-optimization/100382] New: [12 Regression] go.test/test/fixedbugs/issue16095.go hang since r12-248

2021-05-02 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100382

Bug ID: 100382
   Summary: [12 Regression] go.test/test/fixedbugs/issue16095.go
hang since r12-248
   Product: gcc
   Version: 12.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

Since r12-248-gb58dc0b803057c0e6032e0d9bd92cd834f72c75c the
go.test/test/fixedbugs/issue16095.go
test hangs.
To reproduce e.g.:
../configure --enable-languages=c,c++,go --disable-bootstrap
make -j32
cd gcc
make -j32 check-go
The first difference (good to bad) is in the dse2 dump:
@@ -889,7 +889,6 @@ void main.main ()
   uint8[20] * _69;
   uint32 _72;
   uint64 GOTMP.131_73;
-  int _74;
   bool GOTMP.132_75;
   bool GOTMP.132_77;
   int GOTMP.16_155;
@@ -1190,7 +1189,6 @@ void main.main ()
   goto ; [100.00%]

[count: 0]:
-  _74 = MEM[(int *)0B];
   goto ; [100.00%]

[count: 0]:
@@ -1217,7 +1215,7 @@ void main.main ()
   goto ; [100.00%]

[count: 0]:
-  # x_76 = PHI 
+  # x_76 = PHI 
 :
   # DEBUG x => x_76
   runtime.checkdefer ();

[Bug c++/100381] New: new static_assert((std::__is_complete_or_unbounded(...)) failure from g++ 11.1.0

2021-05-02 Thread gilles.gouaillardet at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100381

Bug ID: 100381
   Summary: new
static_assert((std::__is_complete_or_unbounded(...))
failure from g++ 11.1.0
   Product: gcc
   Version: 11.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gilles.gouaillardet at gmail dot com
  Target Milestone: ---

Created attachment 50732
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50732=edit
a reproducer that fails from g++ 11.1.0

g++ 11.1.0 is no more able to compile GROMACS, as reported at
https://gitlab.com/gromacs/gromacs/-/issues/4039

I trimmed the offending code into the attached and self-contained reproducer,
that fails to build with the following error:

$ g++ -c reproducer.cpp
In file included from
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/move.h:57,
 from
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/stl_function.h:60,
 from
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/functional:49,
 from reproducer.cpp:1:
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits: In
instantiation of 'struct std::is_invocable_r&, IndexGroupsAndNames>':
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits:3011:46:  
required from 'constexpr const bool std::is_invocable_r_v&, IndexGroupsAndNames>'
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/invoke.h:103:27:  
required by substitution of 'template constexpr std::enable_if_t,
_Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable =
{anonymous}::DensityFitting::subscribeToPreProcessingNotifications(MdModulesNotifier*)::&; _Args = {IndexGroupsAndNames}]'
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/std_function.h:291:30:
  required from 'static _Res std::_Function_handler<_Res(_ArgTypes ...),
_Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void;
_Functor =
{anonymous}::DensityFitting::subscribeToPreProcessingNotifications(MdModulesNotifier*)::; _ArgTypes = {IndexGroupsAndNames}]'
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/std_function.h:422:21:
  required from 'std::function<_Res(_ArgTypes ...)>::function(_Functor) [with
_Functor =
{anonymous}::DensityFitting::subscribeToPreProcessingNotifications(MdModulesNotifier*)::;  = void;
 = void; _Res = void; _ArgTypes =
{IndexGroupsAndNames}]'
reproducer.cpp:55:56:   required from here
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits:2954:7:
error: static assertion failed: each argument type must be a complete class or
an unbounded array
 2954 |   static_assert((std::__is_complete_or_unbounded(
  |   ^
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits:2954:7:
note:
'std::__is_complete_or_unbounded
>((std::__type_identity{},
std::__type_identity()))' evaluates to false
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits: In
instantiation of 'struct std::is_nothrow_invocable_r&, IndexGroupsAndNames>':
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits:3016:54:  
required from 'constexpr const bool std::is_nothrow_invocable_r_v&, IndexGroupsAndNames>'
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/invoke.h:105:14:  
required from 'constexpr std::enable_if_t, _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void;
_Callable =
{anonymous}::DensityFitting::subscribeToPreProcessingNotifications(MdModulesNotifier*)::&; _Args = {IndexGroupsAndNames};
std::enable_if_t, _Res> = void]'
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/std_function.h:291:30:
  required from 'static _Res std::_Function_handler<_Res(_ArgTypes ...),
_Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = void;
_Functor =
{anonymous}::DensityFitting::subscribeToPreProcessingNotifications(MdModulesNotifier*)::; _ArgTypes = {IndexGroupsAndNames}]'
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/bits/std_function.h:422:21:
  required from 'std::function<_Res(_ArgTypes ...)>::function(_Functor) [with
_Functor =
{anonymous}::DensityFitting::subscribeToPreProcessingNotifications(MdModulesNotifier*)::;  = void;
 = void; _Res = void; _ArgTypes =
{IndexGroupsAndNames}]'
reproducer.cpp:55:56:   required from here
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits:2992:7:
error: static assertion failed: each argument type must be a complete class or
an unbounded array
 2992 |   static_assert((std::__is_complete_or_unbounded(
  |   ^
/home/users/gilles/local/gcc-11.1.0/include/c++/11.1.0/type_traits:2992:7:
note:
'std::__is_complete_or_unbounded
>((std::__type_identity{},
std::__type_identity()))' evaluates to false


The same code can be compiled with previous g++ versions 

[Bug rtl-optimization/100377] needless stack adjustment when passing struct in register

2021-05-02 Thread luc.vanoostenryck at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100377

--- Comment #3 from Luc Van Oostenryck  ---
> I thought there was one which I filed which is much older than those but I
> can't find it.

Probably also related to PR36409 and PR49157

PING^1 [PATCH 1/2] GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs

2021-05-02 Thread H.J. Lu via Gcc-patches
On Tue, Mar 23, 2021 at 3:39 PM H.J. Lu  wrote:
>
> Check if host supports multi-byte NOPs before enabling CET on host.
>
> config/
>
> PR binutils/27397
> * cet.m4 (GCC_CET_HOST_FLAGS): Check if host supports multi-byte
> NOPs.
>
> libiberty/
>
> PR binutils/27397
> * configure: Regenerated.
> ---
>  config/cet.m4   | 19 ---
>  libiberty/configure | 29 +
>  2 files changed, 45 insertions(+), 3 deletions(-)
>
> diff --git a/config/cet.m4 b/config/cet.m4
> index c67fb4f35b6..7718be1afe8 100644
> --- a/config/cet.m4
> +++ b/config/cet.m4
> @@ -130,6 +130,18 @@ fi
>  if test x$may_have_cet = xyes; then
>if test x$cross_compiling = xno; then
>  AC_TRY_RUN([
> +int
> +main ()
> +{
> +  asm ("endbr32");
> +  return 0;
> +}
> +],
> +[have_multi_byte_nop=yes],
> +[have_multi_byte_nop=no])
> +have_cet=no
> +if test x$have_multi_byte_nop = xyes; then
> +  AC_TRY_RUN([
>  static void
>  foo (void)
>  {
> @@ -155,9 +167,10 @@ main ()
>bar ();
>return 0;
>  }
> -],
> -[have_cet=no],
> -[have_cet=yes])
> +  ],
> +  [have_cet=no],
> +  [have_cet=yes])
> +fi
>  if test x$enable_cet = xno -a x$have_cet = xyes; then
>AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
>  fi
> diff --git a/libiberty/configure b/libiberty/configure
> index 2ea7c119809..fc0c953dd1a 100755
> --- a/libiberty/configure
> +++ b/libiberty/configure
> @@ -5396,6 +5396,34 @@ else
>cat confdefs.h - <<_ACEOF >conftest.$ac_ext
>  /* end confdefs.h.  */
>
> +int
> +main ()
> +{
> +  asm ("endbr32");
> +  return 0;
> +}
> +
> +_ACEOF
> +if ac_fn_c_try_run "$LINENO"; then :
> +  have_multi_byte_nop=yes
> +else
> +  have_multi_byte_nop=no
> +fi
> +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
> +  conftest.$ac_objext conftest.beam conftest.$ac_ext
> +fi
> +
> +have_cet=no
> +if test x$have_multi_byte_nop = xyes; then
> +  if test "$cross_compiling" = yes; then :
> +  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> +as_fn_error $? "cannot run test program while cross compiling
> +See \`config.log' for more details" "$LINENO" 5; }
> +else
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +
>  static void
>  foo (void)
>  {
> @@ -5432,6 +5460,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out 
> conftest$ac_exeext \
>conftest.$ac_objext conftest.beam conftest.$ac_ext
>  fi
>
> +fi
>  if test x$enable_cet = xno -a x$have_cet = xyes; then
>as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" 
> "$LINENO" 5
>  fi
> --
> 2.30.2
>

This patch has been checked into binutils, which also fixes:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99703

Any objections to sync cet.m4 with binutils next week?

-- 
H.J.


[Bug target/100375] [12 Regression] trunk 20210501 ftbfs for nvptx-none

2021-05-02 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100375

--- Comment #5 from CVS Commits  ---
The master branch has been updated by Jakub Jelinek :

https://gcc.gnu.org/g:7911a905276781c20f704f5a91b5125e0184d072

commit r12-343-g7911a905276781c20f704f5a91b5125e0184d072
Author: Jakub Jelinek 
Date:   Sun May 2 14:17:23 2021 +0200

nvptx: Fix up nvptx build against latest libstdc++ [PR100375]

The r12-220-gd96db15967e78d7cecea3b1cf3169ceb924678ac change
deprecated some non-standard std::pair constructors and that apparently
broke nvptx.c build, where pseudo_node_t is std::pair
and so nullptr (or NULL) needs to be used for the first argument of the
ctors instead of 0.

2021-05-02  Jakub Jelinek  

PR target/100375
* config/nvptx/nvptx.c (nvptx_sese_pseudo): Use nullptr instead of
0
as first argument of pseudo_node_t constructors.

C language extension - Automatically cast

2021-05-02 Thread Sławomir Lach
In desperation made by programming in GTK+ I realized, some of object 
languages could been implemented in C, but only these not require to made 
changes in programs in runtime (compiler output).

One of items is automatically cast. For example I declared variable called 
Button of GtkButton and pass it to function requires GtkWidget. Why do not 
automatically cast to GtkWidget (like in class hierarchy or conversion 
operator in C++ or some extra constructors)? But .. it's rather conversion 
operator.

It could looks like:
__gcc_parent_type GtkWidget __gcc_parent_type_for GtkButton, GtkLabel, 
GtkTextView
__gcc_parent_type GtkBin __gcc_parent_type_for GtkWindow, GtkBox

What do you think?

It makes sense, because in this case there's no way to made mistake by 
avoiding extra conversion. Function expected any of GtkWidget (for example), 
so passing GtkButton is good. Code would be cleaner, hands will be in better 
shape and we save programmers time.




Re: [PATCH] nvptx: Fix up nvptx build against latest libstdc++ [PR100375]

2021-05-02 Thread tdevries

On 2021-05-02 10:52, Jakub Jelinek wrote:

Hi!

The r12-220-gd96db15967e78d7cecea3b1cf3169ceb924678ac change
deprecated some non-standard std::pair constructors and that apparently
broke nvptx.c build, where pseudo_node_t is std::pair
and so nullptr (or NULL) needs to be used for the first argument of the
ctors instead of 0.

Tested in x86_64-linux -> nvptx-none cross with CC/CXX latest trunk 
gcc,

ok for trunk?



Hi Jakub,

thanks for taking care of this, LGTM, please apply.

Thanks,
- Tom


2021-05-02  Jakub Jelinek  

PR target/100375
* config/nvptx/nvptx.c (nvptx_sese_pseudo): Use nullptr instead of 0
as first argument of pseudo_node_t constructors.

--- gcc/config/nvptx/nvptx.c.jj 2021-02-10 23:08:50.487460416 +0100
+++ gcc/config/nvptx/nvptx.c2021-05-02 10:39:45.803670287 +0200
@@ -3682,9 +3682,9 @@ nvptx_sese_pseudo (basic_block me, bb_se
   edge e;
   edge_iterator ei;
   int hi_back = depth;
-  pseudo_node_t node_back (0, depth);
+  pseudo_node_t node_back (nullptr, depth);
   int hi_child = depth;
-  pseudo_node_t node_child (0, depth);
+  pseudo_node_t node_child (nullptr, depth);
   basic_block child = NULL;
   unsigned num_children = 0;
   int usd = -dir * sese->dir;
@@ -3751,7 +3751,7 @@ nvptx_sese_pseudo (basic_block me, bb_se
   else
{ /* Fallen off graph, backlink to entry node.  */
  hi_back = 0;
- node_back = pseudo_node_t (0, 0);
+ node_back = pseudo_node_t (nullptr, 0);
}
 }

@@ -3772,7 +3772,7 @@ nvptx_sese_pseudo (basic_block me, bb_se
   else
{
  /* back edge to entry node */
- sese->push (pseudo_node_t (0, 0));
+ sese->push (pseudo_node_t (nullptr, 0));
}
 }

@@ -3781,7 +3781,7 @@ nvptx_sese_pseudo (basic_block me, bb_se
   if (!sese->brackets.length () || !edges || !edges->length ())
 {
   hi_back = 0;
-  node_back = pseudo_node_t (0, 0);
+  node_back = pseudo_node_t (nullptr, 0);
   sese->push (node_back);
 }


Jakub


[Bug tree-optimization/100366] spurious warning - std::vector::clear followed by std::vector::insert(vec.end(), ...) with -O2

2021-05-02 Thread glisse at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100366

Marc Glisse  changed:

   What|Removed |Added

   Last reconfirmed||2021-05-02
 Ever confirmed|0   |1
  Component|c++ |tree-optimization
   Keywords||diagnostic,
   ||missed-optimization
 Status|UNCONFIRMED |NEW

--- Comment #1 from Marc Glisse  ---
Assuming the warning happens during the strlen pass, we are still missing a lot
of optimizations at that point

  if (_6 != _7)
goto ; [70.00%]
  else
goto ; [30.00%]

   [local count: 322122544]:
  _158 = _7 - _6;

once VRP2 (2 passes after strlen) replaces _158 with 0 and propagates it, maybe
the code becomes nice enough to avoid confusing this fragile warning (I didn't
check).

Before FRE3, we have

  _6 = vec_2(D)->D.33506._M_impl.D.32819._M_start;
  _7 = vec_2(D)->D.33506._M_impl.D.32819._M_finish;
  if (_6 != _7)
goto ; [70.00%]
  else
goto ; [30.00%]

   [local count: 1073741824]:
  _5 = MEM[(char * const &)vec_2(D) + 8];
  MEM[(struct __normal_iterator *)] ={v} {CLOBBER};
  MEM[(struct __normal_iterator *)]._M_current = _5;
  __position = D.33862;
  _12 = MEM[(const char * const &)vec_2(D)];
  _13 = MEM[(const char * const &)&__position];
  _14 = _13 - _12;

and after FRE3

   [local count: 1073741824]:
  _5 = MEM[(char * const &)vec_2(D) + 8];
  MEM[(struct __normal_iterator *)] ={v} {CLOBBER};
  MEM[(struct __normal_iterator *)]._M_current = _5;
  __position = D.33862;
  _14 = _5 - _6;

Only PRE manages to notice that _5 is the same as _7, which is already late.
And it then takes until VRP2 to realize that _7 - _6 must be 0 in the else
branch of _6 != _7.

* I am not sure why FRE manages to optimize _12 and not _5, that seems like the
first thing to check (maybe the +8 means it is obviously "partial")
* I don't know if some other pass than VRP could learn that b-a is 0 if not
a!=b.

[Bug target/93808] [9/10/11/12 Regression] [SH] Ruby crashes with 'Illegal Instruction' with -fcrossjumping

2021-05-02 Thread glaubitz at physik dot fu-berlin.de via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93808

--- Comment #32 from John Paul Adrian Glaubitz  ---
(In reply to John Paul Adrian Glaubitz from comment #31)
> Ah, I forgot to add -O1 and -fno-cross-jumping to CFLAGS.
> 
> Are the builtin_traps() optimized out for -O2?
> 
> I'm building with the correct flags now.

Traps also didn't trigger with -O1 and -fno-cross-jumping.

Re: compiler

2021-05-02 Thread Frosku
On Sat, May 01, 2021 at 09:51:00PM -0700, Jaime Guzman Gaytan via Gcc wrote:
> How can I get the compiler if I don't have internet in my apartment?

Depending on what platform you're on, there should be a package (deb, rpm, etc)
which you can download at i.e. work or a local library or university. Put that
on a USB stick and take it home, then use your package manager to install it.

-- 
>>= %frosku = { os => 'gnu+linux', editor => 'emacs', coffee => 1 } =<<


[Bug target/98341] [11/12 Regression] Ada bootstrap fails with erroneous memory access on m68k

2021-05-02 Thread ebotcazou at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98341

Eric Botcazou  changed:

   What|Removed |Added

Summary|[11/12 Regression] Ada  |[11/12 Regression] Ada
   |bootstrap fails with|bootstrap fails with
   |Storage_Error stack |erroneous memory access on
   |overflow or erroneous   |m68k
   |memory access on m68k   |
   Last reconfirmed||2021-05-02
 Status|UNCONFIRMED |WAITING
 Ever confirmed|0   |1

--- Comment #14 from Eric Botcazou  ---
We need at least a backtrace.

[Bug target/98341] [11/12 Regression] Ada bootstrap fails with Storage_Error stack overflow or erroneous memory access on m68k

2021-05-02 Thread ebotcazou at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98341

--- Comment #13 from Eric Botcazou  ---
> Note sure if this is related, but the 32bit Windows build of 11.1.0 fails in
> a similar way:

Not all build failures are similar because they affect the Ada compiler! 
Please open a separate TN for your problem, this one is for m68k.  Thanks in
advance.

[Bug target/93808] [9/10/11/12 Regression] [SH] Ruby crashes with 'Illegal Instruction' with -fcrossjumping

2021-05-02 Thread glaubitz at physik dot fu-berlin.de via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93808

--- Comment #31 from John Paul Adrian Glaubitz  ---
(In reply to John Paul Adrian Glaubitz from comment #30)
> Created attachment 50717 [details]
> Build log for ruby 2.5 with Oleg's patch applied

Ah, I forgot to add -O1 and -fno-cross-jumping to CFLAGS.

Are the builtin_traps() optimized out for -O2?

I'm building with the correct flags now.

[Bug target/98341] [11/12 Regression] Ada bootstrap fails with Storage_Error stack overflow or erroneous memory access on m68k

2021-05-02 Thread reiter.christoph at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98341

Christoph Reiter  changed:

   What|Removed |Added

 CC||reiter.christoph at gmail dot 
com

--- Comment #12 from Christoph Reiter  ---
Note sure if this is related, but the 32bit Windows build of 11.1.0 fails in a
similar way:

gnat1.exe: warning: command-line option '-Wno-pedantic-ms-format' is valid for
C/C++/ObjC/ObjC++ but not for Ada
make[3]: *** [../../gcc-11.1.0/gcc/ada/gcc-interface/Make-lang.in:1052:
ada/libgnat/a-except.o] Error 1
make[3]: *** Waiting for unfinished jobs
rm gcc.pod gfortran.pod
make[3]: Leaving directory '/C/_/mingw-w64-gcc/src/build-i686-w64-mingw32/gcc'
make[2]: *** [Makefile:4833: all-stage2-gcc] Error 2
make[2]: Leaving directory '/C/_/mingw-w64-gcc/src/build-i686-w64-mingw32'
make[1]: *** [Makefile:26006: stage2-bubble] Error 2
make[1]: Leaving directory '/C/_/mingw-w64-gcc/src/build-i686-w64-mingw32'
make: *** [Makefile:1013: all] Error 2

[PATCH] nvptx: Fix up nvptx build against latest libstdc++ [PR100375]

2021-05-02 Thread Jakub Jelinek via Gcc-patches
Hi!

The r12-220-gd96db15967e78d7cecea3b1cf3169ceb924678ac change
deprecated some non-standard std::pair constructors and that apparently
broke nvptx.c build, where pseudo_node_t is std::pair
and so nullptr (or NULL) needs to be used for the first argument of the
ctors instead of 0.

Tested in x86_64-linux -> nvptx-none cross with CC/CXX latest trunk gcc,
ok for trunk?

2021-05-02  Jakub Jelinek  

PR target/100375
* config/nvptx/nvptx.c (nvptx_sese_pseudo): Use nullptr instead of 0
as first argument of pseudo_node_t constructors.

--- gcc/config/nvptx/nvptx.c.jj 2021-02-10 23:08:50.487460416 +0100
+++ gcc/config/nvptx/nvptx.c2021-05-02 10:39:45.803670287 +0200
@@ -3682,9 +3682,9 @@ nvptx_sese_pseudo (basic_block me, bb_se
   edge e;
   edge_iterator ei;
   int hi_back = depth;
-  pseudo_node_t node_back (0, depth);
+  pseudo_node_t node_back (nullptr, depth);
   int hi_child = depth;
-  pseudo_node_t node_child (0, depth);
+  pseudo_node_t node_child (nullptr, depth);
   basic_block child = NULL;
   unsigned num_children = 0;
   int usd = -dir * sese->dir;
@@ -3751,7 +3751,7 @@ nvptx_sese_pseudo (basic_block me, bb_se
   else
{ /* Fallen off graph, backlink to entry node.  */
  hi_back = 0;
- node_back = pseudo_node_t (0, 0);
+ node_back = pseudo_node_t (nullptr, 0);
}
 }
 
@@ -3772,7 +3772,7 @@ nvptx_sese_pseudo (basic_block me, bb_se
   else
{
  /* back edge to entry node */
- sese->push (pseudo_node_t (0, 0));
+ sese->push (pseudo_node_t (nullptr, 0));
}
 }
   
@@ -3781,7 +3781,7 @@ nvptx_sese_pseudo (basic_block me, bb_se
   if (!sese->brackets.length () || !edges || !edges->length ())
 {
   hi_back = 0;
-  node_back = pseudo_node_t (0, 0);
+  node_back = pseudo_node_t (nullptr, 0);
   sese->push (node_back);
 }
 

Jakub



[Bug target/100336] file trunk/gcc/config/i386/i386-isa.def doesn't get installed ok ?

2021-05-02 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100336

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Jakub Jelinek :

https://gcc.gnu.org/g:6e1ecc984ef71fc80d0fb7e91ac38af16ccb1943

commit r12-342-g6e1ecc984ef71fc80d0fb7e91ac38af16ccb1943
Author: Jakub Jelinek 
Date:   Sun May 2 10:28:11 2021 +0200

i386: Fix up plugin header install on x86 [PR100336]

The recent addition of i386-isa.def which is included from i386.h results
in failures to build gcc plugins, the i386.h header is installed, but
i386-isa.def is not.

2021-05-02  Jakub Jelinek  

PR target/100336
* config/i386/t-i386 (TM_H): Add
$(srcdir)/config/i386/i386-isa.def.

Re: [PATCH] i386: Fix up plugin header install on x86 [PR100336]

2021-05-02 Thread Uros Bizjak via Gcc-patches
On Sat, May 1, 2021 at 9:54 PM Jakub Jelinek  wrote:
>
> Hi!
>
> The recent addition of i386-isa.def which is included from i386.h results
> in failures to build gcc plugins, the i386.h header is installed, but
> i386-isa.def is not.
>
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux and
> tested with make install, ok for trunk?
>
> 2021-05-01  Jakub Jelinek  
>
> PR target/100336
> * config/i386/t-i386 (TM_H): Add $(srcdir)/config/i386/i386-isa.def.

OK.

Thanks,
Uros.

> --- gcc/config/i386/t-i386.jj   2021-01-04 10:25:45.428159147 +0100
> +++ gcc/config/i386/t-i386  2021-04-30 11:06:30.176266111 +0200
> @@ -18,7 +18,8 @@
>
>  OPTIONS_H_EXTRA += $(srcdir)/config/i386/stringop.def
>  TM_H += $(srcdir)/config/i386/x86-tune.def \
> -   $(srcdir)/common/config/i386/i386-cpuinfo.h
> +   $(srcdir)/common/config/i386/i386-cpuinfo.h \
> +   $(srcdir)/config/i386/i386-isa.def
>  PASSES_EXTRA += $(srcdir)/config/i386/i386-passes.def
>
>  i386-c.o: $(srcdir)/config/i386/i386-c.c
>
> Jakub
>