[Bug target/90952] Costs of moves are used for costs of RTL expressions

2019-08-25 Thread crazylht at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90952

Hongtao.liu  changed:

   What|Removed |Added

 CC||crazylht at gmail dot com

--- Comment #1 from Hongtao.liu  ---
In the latest gcc version(GCC10_20190820), there's no difference in unroll
factor when applying this patch.

But still there's difference in Profitability threshold which changes from 5 to
4.

That means if loop count less than Profitability threshold, it won't trigger
vectorization.
So if loop count is 4, runtime performance would be different otherwise they
will be the same.

[Bug fortran/91519] [10 Regression] ICE error in 521.wrf_r

2019-08-25 Thread crazylht at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91519

--- Comment #13 from Hongtao.liu  ---
(In reply to Thomas Koenig from comment #12)
> https://gcc.gnu.org/ml/gcc-testresults/2019-08/msg02751.html shows that
> 521.wrf_r is no longer failing.
> 
> Closing as fixed.

Yes, thank you.
By the way, there's new fail in 527.cam4_r due to type mismatch.
Using -std=legacy can make it successfully built.

[Bug fortran/91544] New: When initializing allocatable character array get "Error: size of variable 'A.0' is too large"

2019-08-25 Thread urbanjost at comcast dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91544

Bug ID: 91544
   Summary: When initializing allocatable character array get
"Error: size of variable 'A.0' is too large"
   Product: gcc
   Version: 7.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: urbanjost at comcast dot net
  Target Milestone: ---

If use a non-constant integer as the length for an allocatable character
variable array get a confusing error message.

If the integer LINE_LENGTH is a PARAMETER it works.

A work-around where the array is first allocated as a zero-size array
and then included in the assignment works.

Otherwise get an odd compile-time error about "A.0" being too large.

program testit
implicit none
integer  :: line_length=50
character(len=:),allocatable :: test_in(:)

#ifdef BAD
   test_in=[ character(len=line_length) ::  'aaa','bb' ]
#else
   allocate(character(len=line_length) :: test_in(0))
   test_in=[character(len=line_length) :: test_in,'aaa','bb']
#endif
   write(*,*)test_in
end program testit

gfortran -UBAD xx.F90
 aaa   bb   
gfortran -DBAD xx.F90
xx.f90:4:0:

test_in=[ character(len=line_length) ::  'this is a test' ]

Error: size of variable 'A.0' is too large

[Bug middle-end/91512] [10 Regression] Fortran compile time regression.

2019-08-25 Thread skpgkp2 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91512

--- Comment #18 from Sunil Pandey  ---
(In reply to Thomas Koenig from comment #17)
> Simply passing on a huge number of arguments is not enough to trigger this.
> 
> Here's a perl script to generate test cases:
> 
> while ($n=shift)
> {
> open FOO, ">foo-$n.f90";
> 
> print FOO < module foo
>   implicit none
> contains
> EOF
> 
> print FOO "subroutine foo_proc";
> for ($i=0; $i<$n; $i++)
> {
> push (@var, "a" . sprintf("%3.3d", $i));
> }
> 
> @call = ();
> push (@call, "(");
> 
> for ($i=0; $i<$n-1; $i++)
> {
> push (@call, "&\n  ") if ($i%10 == 0);
> push (@call, $var[$i] . ", ");
> }
> push (@call, $var[$n-1],")\n");
> print FOO @call;
> 
> for ($i=0; $i<$n; $i++)
> {
> print FOO "  real, dimension(:,:) :: $var[$i]\n";
> }
> 
> print FOO "  call bar";
> print FOO @call;
> print FOO "  end subroutine\n";
> print FOO "end module\n";
> }
> 
> Running this script with
> 
> for a in 50 100 200 500 1000; do perl gener.pl $a; echo -n "$a ";
> /usr/bin/time -f "%e %M" gfortran -c -O2 foo-$a.f90; done
> 
> gave me
> 
> 50 3.21 272668
> 100 8.44 581860
> 200 20.15 1046780
> 500 52.32 1208684
> 1000 167.43 3493456
> 
> so the CPU time does not come close to what is reported here.
> Memory use is quite high, though.
> 
> What is the memory footprint of the compilation? Is your machine possibly
> starting to swap?

My system has plenty of memory. I don't think it's swapping issue. Here is
memory profile for before and after commit.

Before commit:
==

$ /usr/bin/time -f "%e %M"
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release.a4ba5c3ec624008e899a8bcb687359db25140c23/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake -funroll-loops
-fconvert=big-endian module_first_rk_step_part1.fppized.f90
41.88 214612
$ /usr/bin/time -f "%e %M"
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release.a4ba5c3ec624008e899a8bcb687359db25140c23/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake
-fconvert=big-endian module_first_rk_step_part1.fppized.f90
40.88 214716
$ /usr/bin/time -f "%e %M"
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release.a4ba5c3ec624008e899a8bcb687359db25140c23/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake
-fconvert=big-endian module_first_rk_step_part1.fppized.f90
40.38 214652

After commit:
=

$ /usr/bin/time -f "%e %M"
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake -funroll-loops
-fconvert=big-endian module_first_rk_step_part1.fppized.f90
1548.42 10111860
$ /usr/bin/time -f "%e %M"
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O3 -march=skylake
-fconvert=big-endian module_first_rk_step_part1.fppized.f90
1088.74 2924072
$ /usr/bin/time -f "%e %M"
/local/skpandey/gccwork/gcc_trunk/tools-build/gcc-debug/release/usr/gcc-10.0.0-x86-64/bin/gfortran
 -m64 -c -o module_first_rk_step_part1.fppized.o -I. -I./netcdf/include -I./inc
-fno-unsafe-math-optimizations -mfpmath=sse -O2 -march=skylake
-fconvert=big-endian module_first_rk_step_part1.fppized.f90
544.56 3129568

[Bug target/37073] -fno-math-errno should be the default on FreeBSD

2019-08-25 Thread gerald at pfeifer dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37073

Gerald Pfeifer  changed:

   What|Removed |Added

 Status|ASSIGNED|NEW
 CC||andreast at gcc dot gnu.org
   Assignee|gerald at pfeifer dot com  |unassigned at gcc dot 
gnu.org

--- Comment #5 from Gerald Pfeifer  ---
(In reply to Eric Gallager from comment #4)
> Assuming yes and making Gerald the assignee

I thought I had a plan, alas it did not work out. So returning to the
pool. 

Perhaps Andreas T. has got an idea - copying him.

[Bug libfortran/91543] New: Handling stack overflow more sensibly

2019-08-25 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91543

Bug ID: 91543
   Summary: Handling stack overflow more sensibly
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libfortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tkoenig at gcc dot gnu.org
  Target Milestone: ---

I've just been bitten by a strange segfault, which turned out to be
due to insufficient stack space with -Ofast (running nf from the
Polyhedron benchmarks).

We really need a sensible error message when that happens.
"Insufficient stack space, aborting\n" would already be enough.

Of course, not every segmentation violation is a stack overflow :-|

So, a strategy could be:

On startup, prepare a heap buffer with a sensible error message.
Also, stash away the starting address of the stack, its size and
other pertinent information, and set up a signal handler for SIGSEGV
using sigalstack().

On receiving a SIGSEGV, we could check if the segfaulting address
is indeed near the end of the stack, and if that is the case,
just do a write(2,...) with our prepared error message and exit.
Otherwise, just do the normal thing (usually, abort).

We could also increase the stack size, to avoid hitting that
particular error too soon.

What do people think?

[Bug target/91533] abs pattern generates MMX instructions but fails to call EMMS

2019-08-25 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91533

Uroš Bizjak  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED
   Target Milestone|8.3 |7.4

--- Comment #5 from Uroš Bizjak  ---
Fixed for gcc-7.4+.

[Bug target/91533] abs pattern generates MMX instructions but fails to call EMMS

2019-08-25 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91533

--- Comment #4 from uros at gcc dot gnu.org ---
Author: uros
Date: Sun Aug 25 19:51:45 2019
New Revision: 274914

URL: https://gcc.gnu.org/viewcvs?rev=274914=gcc=rev
Log:
PR target/91533
Backport from mainline
2019-06-30  Uroš Bizjak  

* config/i386/sse.md (ssse3_abs2): Rename from abs2.
* config/i386/i386-builtin.def (__builtin_ia32_pabsb):
Use CODE_FOR_ssse3_absv8qi2.
(__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2.
(__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2.


Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/config/i386/i386-builtin.def
branches/gcc-7-branch/gcc/config/i386/sse.md

[Bug target/83531] Build broken on macOS 10.13.2

2019-08-25 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83531

--- Comment #16 from Iain Sandoe  ---
fixed for 8.4

[Bug target/83531] Build broken on macOS 10.13.2

2019-08-25 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83531

--- Comment #15 from Iain Sandoe  ---
Author: iains
Date: Sun Aug 25 19:31:47 2019
New Revision: 274913

URL: https://gcc.gnu.org/viewcvs?rev=274913=gcc=rev
Log:
[Darwin, fixincludes] Backport fix for PR83531

There is no reasonable chance that the SDKs in question will be re-
issued, so the only viable solution is a fixincludes.

2019-08-24  Iain Sandoe  

Backport from mainline.
2019-08-18  C.G. Dogan  
Iain Sandoe  

PR target/83531
* inclhack.def (darwin_api_availability): New; strip leading
underscores from API_ defines.
* fixincl.x: Regenerate.
* tests/base/os/availability.h: New file.


Added:
branches/gcc-8-branch/fixincludes/tests/base/os/availability.h
Modified:
branches/gcc-8-branch/fixincludes/ChangeLog
branches/gcc-8-branch/fixincludes/fixincl.x
branches/gcc-8-branch/fixincludes/inclhack.def

[Bug c++/91529] [8/9/10 Regression] -fmerge-all-constants leads to corrupt output without inlining

2019-08-25 Thread xerofoify at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91529

Nicholas Krause  changed:

   What|Removed |Added

 CC||xerofoify at gmail dot com

--- Comment #2 from Nicholas Krause  ---
I was unable to find the proper marcos to fix the issue for this patch in the
manual. However these lines:
-  /* FIXME P0135 doesn't say how to handle direct initialization from a
-type with a suitable conversion operator.  Let's handle it like
-copy-initialization, but allowing explict conversions.  */
-  tsubst_flags_t sub_complain = tf_warning;
-  if (!is_dummy_object (instance))
-   /* If we're using this to initialize a non-temporary object, don't
-  require the destructor to be accessible.  */
-   sub_complain |= tf_no_cleanup;
   if (BRACE_ENCLOSED_INITIALIZER_P (arg)
- && !CONSTRUCTOR_IS_DIRECT_INIT (arg))
-   /* An init-list arg needs to convert to the parm type (83937), so fall
-  through to normal processing.  */
-   arg = error_mark_node;
-  else if (!reference_related_p (class_type, TREE_TYPE (arg)))
-   arg = perform_implicit_conversion_flags (class_type, arg,
-sub_complain,
-flags);
+ && !TYPE_HAS_LIST_CTOR (class_type)
+ && CONSTRUCTOR_NELTS (arg) == 1)
+   arg = CONSTRUCTOR_ELT (arg, 0)->value;
+

or the ones added with a + seem to be the issue. Why are we not checked for
initializing references in braces and not checked if its direct as those should
be done regularly for inlining in normal processing. Maybe I'm missing
something but this seems odd. A lot of the other parts of the patch just seems
to be rewrites so this seems most likely.

[Bug target/63810] gcc sets incorrect macro for OS X deployment targets

2019-08-25 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810

--- Comment #34 from Iain Sandoe  ---
Author: iains
Date: Sun Aug 25 19:27:04 2019
New Revision: 274912

URL: https://gcc.gnu.org/viewcvs?rev=274912=gcc=rev
Log:
[Darwin, Driver] Fix driver crashes with valid command line input.

Backport Improve processing of macosx-version-min=

For PR target/63810 some improvements were made in the parsing of
the version string at the point it's used to define the built-in
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__. This is fine, but the
specs processing also uses the version, and specs version-compare
doesn't like leading zeros on components. This means that while we
succeed in processing -mmacosx-version-min=010.2.99 on compile
lines, it fails for any other line that uses the value as part of a spec
(in particular, link lines fail).

To fix this, we need to apply a bit of clean-up to the version that's
presented to the driver, and push that back into the command line opts.

The value can come from four places:
1. User-entered on the command line
2. User-entered as MACOSX_DEPLOYMENT_TARGET= environment var.
3. Absent those two
3a For self-hosting systems, look-up from the kernel
3b For cross-compilers, as a default supplied at configure time.

We apply the clean-up to all 4 (although it shouldn't really be needed
for the cases under 3).

We also supply a test-case that adapts to the target-version of the
system, so that the link requirements are met by the SDK in use (if you
try to link i686-darwin9 on an x86-64-darwin18 SDK, it will fail).

gcc/

2019-08-25 Iain Sandoe 

Backport from mainline
2019-06-19 Iain Sandoe 

* config/darwin-driver.c (darwin_driver_init): Fix off-by-one errors
in computing the number of options to be moved.

Backport from mainline
2019-06-13 Iain Sandoe 

* config/darwin-driver.c (validate_macosx_version_min): New.
(darwin_default_min_version): Cleanup and validate supplied version.
(darwin_driver_init): Likewise and push cleaned version into opts.

gcc/testsuite/

2019-08-25 Iain Sandoe 

2019-06-13 Iain Sandoe 

* gcc.dg/darwin-minversion-link.c: New test.


Added:
branches/gcc-8-branch/gcc/testsuite/gcc.dg/darwin-minversion-link.c
Modified:
branches/gcc-8-branch/gcc/ChangeLog
branches/gcc-8-branch/gcc/config/darwin-driver.c
branches/gcc-8-branch/gcc/testsuite/ChangeLog

[Bug fortran/30609] Calculating masks twice

2019-08-25 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30609

--- Comment #5 from Thomas Koenig  ---
The problem with the test case is that both sum and count
are transformational functions, i.e. they reduce the
rank.

So, ideally this would be translated into

real sum = 0.;

int count = 0;
for (i=0; i 0) {
count ++;
sum += a[i];
}
}

return sum / count;

but the scalarizer does not do that (currently), and neither
does the middle end.  It would require loop fusion.

So, it is probably not useful to do common subexpression
elimination for rank>0 expressions if they are the arguments
of transformational functions.

[Bug target/91533] abs pattern generates MMX instructions but fails to call EMMS

2019-08-25 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91533

--- Comment #3 from uros at gcc dot gnu.org ---
Author: uros
Date: Sun Aug 25 18:24:01 2019
New Revision: 274911

URL: https://gcc.gnu.org/viewcvs?rev=274911=gcc=rev
Log:
PR target/91533
Backport from mainline
2019-06-30  Uroš Bizjak  

* config/i386/sse.md (ssse3_abs2): Rename from abs2.
* config/i386/i386-builtin.def (__builtin_ia32_pabsb):
Use CODE_FOR_ssse3_absv8qi2.
(__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2.
(__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2.


Modified:
branches/gcc-8-branch/gcc/ChangeLog
branches/gcc-8-branch/gcc/config/i386/i386-builtin.def
branches/gcc-8-branch/gcc/config/i386/sse.md

[Bug target/91533] abs pattern generates MMX instructions but fails to call EMMS

2019-08-25 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91533

--- Comment #2 from uros at gcc dot gnu.org ---
Author: uros
Date: Sun Aug 25 18:21:04 2019
New Revision: 274910

URL: https://gcc.gnu.org/viewcvs?rev=274910=gcc=rev
Log:
PR target/91533
Backport from mainline
2019-06-30  Uroš Bizjak  

* config/i386/sse.md (ssse3_abs2): Rename from abs2.
* config/i386/i386-builtin.def (__builtin_ia32_pabsb):
Use CODE_FOR_ssse3_absv8qi2.
(__builtin_ia32_pabsw): Use CODE_FOR_ssse3_absv4hi2.
(__builtin_ia32_pabsd): Use CODE_FOR_ssse3_absv2si2.


Modified:
branches/gcc-9-branch/gcc/ChangeLog
branches/gcc-9-branch/gcc/config/i386/i386-builtin.def
branches/gcc-9-branch/gcc/config/i386/sse.md

[Bug c/91542] internal representation of pointer reference shown in error message

2019-08-25 Thread ldrumm at rtps dot co
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91542

--- Comment #1 from ldrumm at rtps dot co ---
Sorry. I clicked submit too soon.

Interestingly if the index operation is a constant (but not a constant
expression), the error message is correct

```
struct Node {
int n_successors;
};

int foo(int n, struct Node *nodes[])
{
enum {a};
nodes[a].n_successors;
}

/home/luke/code/cc/src/gcc-bug.c:8:13: error: ‘*nodes’ is a pointer; did you
mean to use ‘->’?
8 | nodes[a].n_successors;
  | ^
  | ->

```

but with a more complex expression (but still an ICE):
```
struct Node {
int n_successors;
};

int foo(int n, struct Node *nodes[])
{
enum {a = 1};
nodes[a << 2].n_successors;
}
/home/luke/code/cc/src/gcc-bug.c:8:18: error: ‘*(nodes + 32)’ is a pointer; did
you mean to use ‘->’?
8 | nodes[a << 2].n_successors;
  |  ^
  |  ->
```

I see this behaviour on current top of tree built from source
(e86f87930567b7e5444260ffc1d46507ebc8f520) as well as the debian-packaged
version shipped with my OS ((Debian 9.2.1-4) 9.2.1 20190821)

I'm willing to help debug this one, but I'm unfamiliar with the code, so I'd
appreciate any guidance

[Bug c/91542] New: internal representation of pointer reference shown in error message

2019-08-25 Thread ldrumm at rtps dot co
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91542

Bug ID: 91542
   Summary: internal representation of pointer reference shown in
error message
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ldrumm at rtps dot co
  Target Milestone: ---

Created attachment 46750
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46750=edit
reduced-testcase.c

Printing an error message for an invalid use of struct member access in a
pointer context is incorrectly printing the internal representation of the
pointer expression

```c
struct Node {
int n_successors;
};

int foo(int n, struct Node *nodes[])
{
nodes[n].n_successors; // `n_successors` should be accessed through a
struct dereference expression.
}
```

Using built-in specs.
COLLECT_GCC=./build/bin/gcc
COLLECT_LTO_WRAPPER=/home/luke/code/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/10.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --disable-bootstrap --enable-languages=c
--prefix=/home/luke/code/gcc/build
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.0.0 20190824 (experimental) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c99' '-mtune=generic'
'-march=x86-64'
 /home/luke/code/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/10.0.0/cc1 -E -quiet
-v -imultiarch x86_64-linux-gnu /home/luke/code/cc/src/gcc-bug.c -mtune=generic
-march=x86-64 -std=c99 -fpch-preprocess -o gcc-bug.i
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory
"/home/luke/code/gcc/build/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/luke/code/gcc/build/lib/gcc/x86_64-pc-linux-gnu/10.0.0/include
 /usr/local/include
 /home/luke/code/gcc/build/include
 /home/luke/code/gcc/build/lib/gcc/x86_64-pc-linux-gnu/10.0.0/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-std=c99' '-mtune=generic'
'-march=x86-64'
 /home/luke/code/gcc/build/libexec/gcc/x86_64-pc-linux-gnu/10.0.0/cc1
-fpreprocessed gcc-bug.i -quiet -dumpbase gcc-bug.c -mtune=generic
-march=x86-64 -auxbase gcc-bug -std=c99 -version -o gcc-bug.s
GNU C99 (GCC) version 10.0.0 20190824 (experimental) (x86_64-pc-linux-gnu)
compiled by GNU C version 9.2.1 20190821, GMP version 6.1.2, MPFR
version 4.0.2, MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C99 (GCC) version 10.0.0 20190824 (experimental) (x86_64-pc-linux-gnu)
compiled by GNU C version 9.2.1 20190821, GMP version 6.1.2, MPFR
version 4.0.2, MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: c4c9fdc5350b445a18baa11b2b776373
/home/luke/code/cc/src/gcc-bug.c: In function ‘foo’:
/home/luke/code/cc/src/gcc-bug.c:7:13: error: ‘*(nodes + (sizetype)((long
unsigned int)n * 8))’ is a pointer; did you mean to use ‘->’?
7 | nodes[n].n_successors;
  | ^
  | ->

[Bug fortran/30609] Calculating masks twice

2019-08-25 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30609

Thomas Koenig  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |tkoenig at gcc dot 
gnu.org

--- Comment #4 from Thomas Koenig  ---
Let's see.

We could do this like the function elimination pass, making
a list of eligible gfc_expr *, and then iterating over it
to find duplicates.

If we put in the gfc_expr * from top to bottom, this should
also make sure that we find any bigger expressions before
smaller expressions.

[Bug libstdc++/91541] [C++17] Exception specification of operator= of node-based containers may be broken

2019-08-25 Thread frankhb1989 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91541

--- Comment #1 from frankhb1989 at gmail dot com ---
Allocator-extended constructors with explicit exception specifications may also
have the value_type/node mismatch problems.

[Bug libstdc++/91541] New: [C++17] Exception specification of operator= of node-based containers may be broken

2019-08-25 Thread frankhb1989 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91541

Bug ID: 91541
   Summary: [C++17] Exception specification of operator= of
node-based containers may be broken
   Product: gcc
   Version: 9.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: frankhb1989 at gmail dot com
  Target Milestone: ---

Case:

#include 
#include 
#include 
#include 

struct A : std::allocator>
{
template
struct rebind
{
using other = std::pmr::polymorphic_allocator;
};
};

int main()
{
using always_equal = std::allocator_traits::is_always_equal;
using C = std::less<>;
constexpr bool std_nothrow = always_equal::value &&
std::is_nothrow_move_assignable_v;
static_assert(std_nothrow);
static_assert(!(std_nothrow &&
!std::is_nothrow_move_assignable>::value));
}

The defaulted exception specification is from _Rb_tree which uses node
allocator traits instead of the allocator_traits, so
is_always_equal::value can differ than expected.

There is a similar problem in list/forward_list::operator='s implementations:
they use the node allocator_traits explicitly, not the required exception
specification by the standard.

[Bug target/54412] minimal 32-byte stack alignment with -mavx on 64-bit Windows

2019-08-25 Thread yyc1992 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412

--- Comment #29 from Yichao Yu  ---
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412#c25

GCC is fully capable of aligning the stack. It just seems that different part
of it disagrees on what the current stack alignment is and whether a
realignment is needed.

[Bug target/54412] minimal 32-byte stack alignment with -mavx on 64-bit Windows

2019-08-25 Thread john_platts at hotmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412

John Platts  changed:

   What|Removed |Added

 CC||john_platts at hotmail dot com

--- Comment #28 from John Platts  ---
The correct way to align the stack to a 32-byte or 64-byte boundary on 64-bit
Windows is to use a frame pointer in a function that requires stack realignment
and then realign the stack to the required alignment once the frame pointer is
set and all of the non-volatile registers used in the function are saved.

class Avx2VectorGenerator {
public:
virtual __m256i NextVector() = 0;
};

__m256i Example_AVX2_Func(Avx2VectorGenerator* generator, size_t iterations);

Example_AVX2_Func:
pushq %rbp
.seh_pushreg %rbp
pushq %rbx
.seh_pushreg %rbx
pushq %rdi
.seh_pushreg %rdi
movq %rsp, %rbp
.seh_setframe %rbp, 0
.seh_endprologue

/* Set rbx to generator and rdi to iterations */
movq %rcx, %rbx
movq %rdx, %rdi

/* It is okay to allocate additional stack memory */
/* and re-align the stack pointer outside of the */
/* SEH prologue as there is a frame pointer in this */
/* function */
subq $64, %rsp
andq $-32, %rsp

/* Zero out the result vector */
vpxor %ymm0, %ymm0, %ymm0

test %rdi, %rdi
jz .loop_complete
.loop_iteration_start:
/* Save the result vector to 32(%rsp) */
vmovdqa 32(%rsp), ymm0

/* Move generator into rcx */
movq %rbx, %rcx
/* Move the pointer to the NextVector() virtual member func */
/* into rax */
movq (%rbx), %rax
/* Call generator->NextVector() */
call *(%rax)

/* Add the result of generator->NextVector() to the result vector */
vpaddb 32(%rsp), %ymm0, %ymm0

/* Decrement iterations by 1 */
sub $1, %rdi

/* Jump back to the beginning of the loop if iterations is non-zero */
jnz .loop_iteration_start
.loop_complete:
lea (%rbp), %rsp
pop %rdi
pop %rbx
pop %rbp
ret
.seh_endproc

[Bug fortran/91519] [10 Regression] ICE error in 521.wrf_r

2019-08-25 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91519

Thomas Koenig  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #12 from Thomas Koenig  ---
https://gcc.gnu.org/ml/gcc-testresults/2019-08/msg02751.html shows that
521.wrf_r is no longer failing.

Closing as fixed.