[Bug libfortran/83811] New: fortran 'e' format broken for single digit exponents

2018-01-11 Thread alexander.heger at monash dot edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83811

Bug ID: 83811
   Summary: fortran 'e' format broken for single digit exponents
   Product: gcc
   Version: 7.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libfortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: alexander.heger at monash dot edu
  Target Milestone: ---

~/test>gfortran --version
GNU Fortran (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

~/test>cat test.f
  program test
  character*10 :: s
  write(s, '(1pe5.0e1)') 1.e-4
  print*,s
  write(s, '(e5.1e1)') 1.e12
  print*,s
  end
~/test>gfortran test.f
~/test>./a.out
 1.E+0
 .1E+2 

This does not look right to me.  It broke some time with version 7.1.x (Fedora
26 default) but remains broken in 7.2.1 (Fedora 27).  Was still OK in Fedora
25.

As a side note, if I replace the first 'e' by 'g' in each format string, the
formatting works as expected 

 1.E-4 
 * 

-Alexander

[Bug target/83810] New: sh: s-scaval.adb:103:07: warning: "IV_Ilf" overlays smaller object

2018-01-11 Thread sebastian.hu...@embedded-brains.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83810

Bug ID: 83810
   Summary: sh: s-scaval.adb:103:07: warning: "IV_Ilf" overlays
smaller object
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: sebastian.hu...@embedded-brains.de
  Target Milestone: ---

Created attachment 43113
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43113&action=edit
Makefile to build the cross GCC

I tried to build an Ada compiler for sh-rtems5. I am not sure if it is worth to
support Ada on this target. I use in mainly to test the compiler build.

/home/sh/b-gcc-sh/./gcc/xgcc -B/home/sh/b-gcc-sh/./gcc/ -nostdinc
-B/home/sh/b-gcc-sh/sh-rtems5/newlib/ -isystem
/home/sh/b-gcc-sh/sh-rtems5/newlib/targ-include -isystem
/home/sh/src/gcc/newlib/libc/include -B/home/sh/install/sh-rtems5/bin/
-B/home/sh/install/sh-rtems5/lib/ -isystem /home/sh/install/sh-rtems5/include
-isystem /home/sh/install/sh-rtems5/sys-include-c -g -O2 -m4-single-only 
-W -Wall -gnatpg -nostdinc -m4-single-only  s-scaval.adb -o s-scaval.o
s-scaval.adb:103:07: warning: "IV_Ilf" overlays smaller object
s-scaval.adb:103:07: warning: program execution may be erroneous
s-scaval.adb:103:07: warning: size of "IV_Ilf" is 64
s-scaval.adb:103:07: warning: size of "IS_Ilf" is 32
s-scaval.adb:104:07: warning: "IV_Ill" overlays smaller object
s-scaval.adb:104:07: warning: program execution may be erroneous
s-scaval.adb:104:07: warning: size of "IV_Ill" is 96
s-scaval.adb:104:07: warning: size of "IS_Ill" is 64

The attached Makefile can be used to reproduce the build.

make clone
make native
make install/bin/sh-rtems5-ld
make install/bin/sh-rtems5-gcc

[Bug target/83809] New: epiphany: a-direct.ads:478:09: alignment for "Search_Typeb119s" must be at least 8

2018-01-11 Thread sebastian.hu...@embedded-brains.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83809

Bug ID: 83809
   Summary: epiphany: a-direct.ads:478:09: alignment for
"Search_Typeb119s" must be at least 8
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: sebastian.hu...@embedded-brains.de
  Target Milestone: ---

Created attachment 43112
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43112&action=edit
Makefile to build the cross GCC

I tried to build an Ada compiler for epiphany-rtems5. I am not sure if it is
worth to support Ada on this target. I use in mainly to test the compiler
build.

/home/sh/b-gcc-epiphany/./gcc/xgcc -B/home/sh/b-gcc-epiphany/./gcc/ -nostdinc
-B/home/sh/b-gcc-epiphany/epiphany-rtems5/newlib/ -isystem
/home/sh/b-gcc-epiphany/epiphany-rtems5/newlib/targ-include -isystem
/home/sh/src/gcc/newlib/libc/include -B/home/sh/install/epiphany-rtems5/bin/
-B/home/sh/install/epiphany-rtems5/lib/ -isystem
/home/sh/install/epiphany-rtems5/include -isystem
/home/sh/install/epiphany-rtems5/sys-include-c -g -O2   -W -Wall -gnatpg
-nostdinc   a-direct.adb -o a-direct.o
a-direct.ads:478:09: alignment for "Search_Typeb119s" must be at least 8

The attached Makefile can be used to reproduce the build.

make clone
make native
make install/bin/epiphany-rtems5-ld
make install/bin/epiphany-rtems5-gcc

[Bug regression/39508] gcc libdecnumber 4.3.4 & 4.3.3 x86_64 linux : /usr/bin/ld: /usr/lib/gcc/x86_64-unknown-linux-gnu/4.3.4//libgcc.a(bid_decimal_globals.o): TLS transition from R_X86_64_TLSGD to R_

2018-01-11 Thread roel at vandepaar dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39508

Roel Van de Paar  changed:

   What|Removed |Added

 CC||roel at vandepaar dot com

--- Comment #5 from Roel Van de Paar  ---
Jason, thank you for your work on this here. Would you have a look at
https://github.com/jdbirdwell/afl/issues/5 which looks to be the same issue,
and it seems you may be able to contribute there. Thank you & God bless, Roel

[Bug bootstrap/81926] [7 regression] go/parse.o differs between stage2 and stage3

2018-01-11 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81926

--- Comment #40 from Rainer Orth  ---
Author: ro
Date: Fri Jan 12 05:32:31 2018
New Revision: 256562

URL: https://gcc.gnu.org/viewcvs?rev=256562&root=gcc&view=rev
Log:
Avoid Solaris/SPARC comparison failures with Solaris as (PR bootstrap/81926)

Backport from mainline
2018-01-04  Rainer Orth  

PR bootstrap/81926
* cgraphunit.c (symbol_table::compile): Switch to text_section
before calling assembly_start debug hook.

Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/cgraphunit.c

[Bug libquadmath/83800] [libquadmath] M_SQRT2q & sqrtq(2.0Q) off by one ULP ?

2018-01-11 Thread sisyphus1 at optusnet dot com.au
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83800

--- Comment #2 from sisyphus1 at optusnet dot com.au ---
The issue with sqrtq() is more widespread than I expected.
Checking the square roots of the integer values from 2 to 300, I found that
sqrtq differs from mpfr for 2, 6, 8, 13, 15, 19, 24, 30, 31, 32, 33, 37, 41,
43, 45, 52, 60, 66, 76, 83, 96, 97, 101, 102, 105, 114, 117, 120, 123, 124,
128, 130, 132, 133, 142, 148, 150, 153, 155, 163, 164, 172, 174, 177, 178, 179,
180, 182, 185, 187, 190, 191, 194, 203, 207, 208, 210, 213, 215, 223, 231, 235,
237, 240, 243, 246, 247, 249, 253, 258, 264, 265, 269, 274, 277, 294, and 297.

In all cases it's a 1 ULP discrepancy - though I only checked that visually.
I programmatically checked that the 2 values straddle the actual value, and
that  the value provided by mpfr is the closer approximation.

I got identical results with both gcc-5.4.0 (on Ubuntu) and gcc-7.2.0 (on
Windows).

Cheers,
Rob

[Bug c++/83778] [8 regression] g++.dg/ext/altivec-cell-2.C fails starting with r256448

2018-01-11 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83778

--- Comment #3 from David Malcolm  ---
I still haven't been able to reproduce this; sorry.

[Bug c++/83779] Trivial bounds error not detected with -fbounds-check

2018-01-11 Thread w6ws at earthlink dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83779

--- Comment #5 from Walter Spector  ---
Thanks for mentioning that, Martin.

A couple of us in the project I work on were reviewing the options we specify
in our debug builds to try to smoke out problems.  We already use options like
-Wall, -Wextra and such for both g++ and gfortran.  We also use -fbounds-check
with gfortran.  Just wondering if -fbounds-check would help find things on the
c++ side.  But seems it doesn't - as documented.

[Bug c/82922] Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent

2018-01-11 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82922

--- Comment #4 from Martin Sebor  ---
Correction, the patch is here:
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00935.html

[Bug c/82922] Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent

2018-01-11 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82922

--- Comment #3 from Martin Sebor  ---
Incremental patch for the testsuite:
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00962.html

Unfortunately it sounds like it might be too late to enable the option in GCC
8.

[Bug preprocessor/83773] Warning for redefined macro does not have its own -Wsomething switch

2018-01-11 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83773

Martin Sebor  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-11
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Sebor  ---
Confirmed.

[Bug c++/83799] [8 Regression] bogus "no matching function for call to" error when building llvm

2018-01-11 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83799

--- Comment #4 from David Malcolm  ---
Candidate patch:
  https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00984.html

[Bug middle-end/79220] missing -Wstringop-overflow= on a memcpy overflow with a small power-of-2 size

2018-01-11 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79220

Martin Sebor  changed:

   What|Removed |Added

   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=83508

--- Comment #4 from Martin Sebor  ---
In GCC 8.0 the overflow is diagnosed in both functions.  In f() by
-Wstringop-overflow as before, and in both functions (perhaps surprisingly) by
the newly enhanced -Warray-bounds warning (r255755).  There is still no
-Wstringop-overflow for g() so the limitation hasn't really been removed yet
and this bug should stay open until it is, and until the overflow in g() is
diagnosed -Wstringop-overflow when -Warray-bounds is disabled.

As an aside, the -Wstringop-overflow for f() will disappear if/when the patch
submitted for bug 83508 is committed.

pr79220.c: In function ‘g’:
pr79220.c:12:3: warning: ‘memcpy’ forming offset [4, 8] is out of the bounds
[0, 3] of object ‘d’ with type ‘char[3]’ [-Warray-bounds]
   memcpy (d, s, 8);
   ^~~~
pr79220.c:3:6: note: ‘d’ declared here
 char d[3];
  ^
pr79220.c: In function ‘f’:
pr79220.c:7:3: warning: ‘memcpy’ forming offset [4, 8] is out of the bounds [0,
3] of object ‘d’ with type ‘char[3]’ [-Warray-bounds]
   memcpy (d, "0123456789", 8);
   ^~~
pr79220.c:3:6: note: ‘d’ declared here
 char d[3];
  ^
pr79220.c:7:3: warning: ‘memcpy’ writing 8 bytes into a region of size 3
overflows the destination [-Wstringop-overflow=]
   memcpy (d, "0123456789", 8);
   ^~~

[Bug c++/83779] Trivial bounds error not detected with -fbounds-check

2018-01-11 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83779

Martin Sebor  changed:

   What|Removed |Added

 CC||msebor at gcc dot gnu.org

--- Comment #4 from Martin Sebor  ---
Not sure if that will help you but with -O1 and above, the test case triggers a
-Waggressive-loop-optimizations warning:

warning: iteration 20 invokes undefined behavior
[-Waggressive-loop-optimizations]
 array1[i] = i;
 ~~^~~
z.c:7:3: note: within this loop
   for (int i=0; i<25; i++)
   ^~~

[Bug c++/83797] Inconsistent error messages for main

2018-01-11 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83797

Martin Sebor  changed:

   What|Removed |Added

   Keywords||diagnostic, easyhack
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-11
 CC||msebor at gcc dot gnu.org
 Ever confirmed|0   |1
   Severity|normal  |trivial

--- Comment #1 from Martin Sebor  ---
Confirmed.  Keywords should be quoted and main should be referred to
consistently.

[Bug c++/83808] New: "internal compiler error" for invalid input

2018-01-11 Thread dibbex at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83808

Bug ID: 83808
   Summary: "internal compiler error" for invalid input
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dibbex at gmail dot com
  Target Milestone: ---

Created attachment 43111
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43111&action=edit
Small test case

The attached sample C++ program fails compilation with this error:

$ /usr/lib/gcc-snapshot/bin/g++ -std=c++17 -c broken.cc
broken.cc: In function 'void f()':
broken.cc:9:3: internal compiler error: in process_init_constructor_array, at
cp/typeck2.c:1318
   };
   ^
Please submit a full bug report,
with preprocessed source if appropriate.
See  for instructions.


If I've understood the standard correctly, the expression used as the size of
the array should be a constexpr, and the compiler should complain about it.
Asking the user to file a bug report instead of fixing their code is the wrong
response.

$ /usr/lib/gcc-snapshot/bin/g++ -v
Using built-in specs.
COLLECT_GCC=/usr/lib/gcc-snapshot/bin/g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 20180107-1'
--with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs
--enable-languages=c,ada,c++,go,brig,fortran,objc,obj-c++
--prefix=/usr/lib/gcc-snapshot --with-gcc-major-version-only --program-prefix=
--enable-shared --enable-linker-build-id --disable-nls --with-sysroot=/
--enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib
--enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib
--with-tune=generic --enable-offload-targets=nvptx-none --enable-checking=yes
--build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 8.0.0 20180107 (experimental) [trunk revision 256322] (Debian
20180107-1) 

I know that this comes from a Debian release, but the code is 100% the same
(the code itself is not patched). I've found the same error in version 7.2.0.
Version 6.4.0 instead accepts the code without complaining.

[Bug target/83203] [8 Regression] Inefficient int to avx2 vector conversion

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83203

Jakub Jelinek  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #9 from Jakub Jelinek  ---
Fixed.  You really need -mtune=intel or similar if you want a vmovq, because
the inter-unit moves are very costly on AMD.

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

--- Comment #15 from Jakub Jelinek  ---
(In reply to Matthew Wilcox from comment #14)
> Confirmed this fixes the problem.  I'll send it to Tony and see if he likes
> it.  May I add your Signed-off-by to the patch?

Sure.  Feel free to reformat it as the kernel wants, it has been almost 20
years since I've been active in the kernel, so don't know the formatting rules
anymore.

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread matthew at wil dot cx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

--- Comment #14 from Matthew Wilcox  ---
Confirmed this fixes the problem.  I'll send it to Tony and see if he likes it.
 May I add your Signed-off-by to the patch?

[Bug middle-end/81657] [8 Regression] FAIL: gcc.dg/20050503-1.c scan-assembler-not call

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81657

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek  ---
As I said earlier, the patch is IMHO wrong and instead ARM/AArch64 should
implement efficient mempcpy in the library.
If not, we should have a target hook whether the target has sane mempcpy or not
and use it at least for cases like this, where using it will allow tail-calling
it, while using memcpy precludes that.  And then XFAIL the test on targets with
bad mempcpy implementation.

[Bug fortran/83803] Using -fc-prototypes on modules with empty dummy arg lists does not close paren.

2018-01-11 Thread emsr at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83803

--- Comment #3 from emsr at gcc dot gnu.org ---
Created attachment 43110
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43110&action=edit
patchlet (untested)

[Bug target/83735] [8 Regression] generating unaligned store to stack with vmovaps

2018-01-11 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83735

H.J. Lu  changed:

   What|Removed |Added

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

--- Comment #11 from H.J. Lu  ---
Fixed.

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #13 from Jakub Jelinek  ---
What about this approach, force __builtin_constant_p to evaluate in the FE
before optimizations and decide just on that.  Will work with constant literals
passed to the macro, will do the fallback if you say use it in inline and hope
that if the inline is called with a constant it will propagate:

struct V { int counter; };
int ia64_fetch_and_add(int, int *);
int ia64_atomic_sub(int, struct V *);

#ifdef __OPTIMIZE__
#define atomic_sub_return_1(i,v,c)  \
({  \
int __ia64_asr_i = (i); \
static const int __ia64_asr_p_##c   \
  = __builtin_constant_p(i) \
? ((i) == 1 || (i) == 4 || (i) == 8 || (i) == 16\
   || (i) == -1 || (i) == -4 || (i) == -8 || (i) == -16)\
: 0;\
__ia64_asr_p_##c\
  ? ia64_fetch_and_add(-__ia64_asr_i, &(v)->counter)\
  : ia64_atomic_sub(__ia64_asr_i, v);   \
})
#define atomic_sub_return_2(i,v,c) atomic_sub_return_1(i,v,c)
#define atomic_sub_return(i,v) atomic_sub_return_2(i,v,__COUNTER__)
#else
#define atomic_sub_return(i,v) ia64_atomic_sub(i,v)
#endif

void
foo (struct V *p, int i)
{
  atomic_sub_return (4, p);
  atomic_sub_return (8, p);
  atomic_sub_return (16, p);
  atomic_sub_return (7, p);
  atomic_sub_return (i, p);
}

[Bug fortran/29651] Subroutine: Kind convertion of intent(out) value: signal

2018-01-11 Thread anlauf at gmx dot de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=29651

--- Comment #12 from Harald Anlauf  ---
(In reply to Jerry DeLisle from comment #9)
> An easy fix to this would be to disallow kind=2 integer as an argument
> during checking.

Since SIGNAL is a GNU extension, we are at liberty what to allow.

What is definitely needed is a kind=8 version of status for 64-bit
platforms.  From the manpage signal(2):

SYNOPSIS
   #include 

   typedef void (*sighandler_t)(int);

   sighandler_t signal(int signum, sighandler_t handler);

A modified version of the code in comment#1,

implicit none
  integer :: i1,i2
  integer(4) :: status4, proc4
  integer(8) :: status8, proc8
  i1 = 0; i2 = 0
  call signal(i1, proc4, status4)
  print *,status4
  call signal(i2, proc8, status8)
  print *,status8
end

produces the dump excerpt:

integer(kind=4) D.3682;
integer(kind=4) D.3683;

D.3682 = (integer(kind=4)) proc8;
D.3683 = (integer(kind=4)) status8;
_gfortran_signal_sub_int (&i2, &D.3682, &D.3683);

If one wants to save the old signal handler, proc and status of type
integer(c_intptr_t) need to be supported.  One may even require that
they have the same kind value, as different values do not make much sense.

Looking at libgfortran/intrinsics/signal.c, I think the appropriate
support from the library side is trivial.  However, I think that the
argument status from the existing functions signal_sub and signal_sub_int
need to be changed from int* to GFC_INTEGER_4* for the existing version,
and GFC_INTEGER_8* for the other version to be added.

If there is consensus on such restrictions, I could try to work on a
trivial patch for supporting the above.

[Bug target/83203] [8 Regression] Inefficient int to avx2 vector conversion

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83203

--- Comment #8 from Jakub Jelinek  ---
Author: jakub
Date: Thu Jan 11 20:49:40 2018
New Revision: 256556

URL: https://gcc.gnu.org/viewcvs?rev=256556&root=gcc&view=rev
Log:
PR target/83203
* config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set_0.
* config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
iterators.
(ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
integral modes instead of "ss" and "sd".
(vec_set_0): New define_insns for 256-bit and 512-bit
vectors with 32-bit and 64-bit elements.
(vecdupssescalarmodesuffix): New mode attribute.
(vec_dup): Use it.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/sse.md

[Bug target/83330] [7/8 Regression] generating unaligned store to stack for SSE register with -mno-push-args

2018-01-11 Thread hjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83330

--- Comment #7 from hjl at gcc dot gnu.org  ---
Author: hjl
Date: Thu Jan 11 20:44:46 2018
New Revision: 256555

URL: https://gcc.gnu.org/viewcvs?rev=256555&root=gcc&view=rev
Log:
i386: Align stack frame if argument is passed on stack

When a function call is removed, it may become a leaf function.  But if
argument may be passed on stack, we need to align the stack frame when
there is no tail call.

Tested on Linux/i686 and Linux/x86-64.

gcc/

PR target/83330
* config/i386/i386.c (ix86_compute_frame_layout): Align stack
frame if argument is passed on stack.

gcc/testsuite/

PR target/83330
* gcc.target/i386/pr83330.c: New test.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr83330.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread aldyh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

--- Comment #12 from Aldy Hernandez  ---
(In reply to Matthew Wilcox from comment #9)
> Maybe I'm a little slow, but I don't see what the path is that sets 'nr' to
> 0.  It's 1UL << compound_order.  Typically, compound_order is 0, although it
> may be anything up to log2(number of pages in the machine).  Are you saying

Sorry, yes 1<<0 will be 1, which is handled.  Let me dig into the threading.

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread matthew at wil dot cx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

--- Comment #11 from Matthew Wilcox  ---
I'm sorry, I still don't get it.

What I think you're saying is that GCC performs this optimisation:

nr = 1UL << compound_order(page);
atomic_sub_return(x, nr);

into:

if (PageHead(page))
  atomic_sub_return(x, 1);
else
  atomic_sub_return(x, 1UL << page[1].order)

That seems like a great optimisation to me, and I'm all for it.  What I don't
understand is where the b_c_p call gets lost.

Also, this bug is pretty fragile.  If I replace the 'nr' in the call to
atomic_sub_return with '1UL << compound_order(page)', the bug goes away.

Anyway, I have no vested interest in ia64 or the code that's currently using
__b_c_p.  I just want it to stop blocking me getting my patch in.  It's a bit
different from 72785 because I can't just resolve it by removing the checking
code.  Just tell me what the macro should look like.

[Bug fortran/79383] USE statement error

2018-01-11 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79383

kargl at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P4
 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Assignee|unassigned at gcc dot gnu.org  |kargl at gcc dot gnu.org
   Target Milestone|--- |8.0

--- Comment #5 from kargl at gcc dot gnu.org ---
(In reply to Walt Brainerd from comment #3)
> Yes, Sounds like you have it fixed. Thanks.
> 

Walt, thanks for the bug report and confirmation that
the output I got was expected.  I've converted your
code into 2 testcases, so hopefully the problem never
returns.

[Bug fortran/79383] USE statement error

2018-01-11 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79383

--- Comment #4 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Thu Jan 11 20:24:36 2018
New Revision: 256554

URL: https://gcc.gnu.org/viewcvs?rev=256554&root=gcc&view=rev
Log:
2018-01-11  Steven G. Kargl 

PR fortran/79383
* gfortran.dg/dtio_31.f03: New test.
* gfortran.dg/dtio_32.f03: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/dtio_31.f03
trunk/gcc/testsuite/gfortran.dg/dtio_32.f03
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug go/83794] misc/cgo/test uses gigabytes of memory

2018-01-11 Thread ian at airs dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83794

Ian Lance Taylor  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED

--- Comment #4 from Ian Lance Taylor  ---
Thanks for investigating.  I fixed the problem you found in TestBuildID.  The
logs generated by t.Logf are saved until the test is complete, because tests
can run in parallel and interleaved logs are hard to read.  So 1) that explains
why you didn't see any of the logs; 2) it explains why the program allocated
memory very quickly and without bound.

Let me know if you still see a problem with `make check-gotools` after that
patch.  I don't know if there is anything else going on.

[Bug go/83794] misc/cgo/test uses gigabytes of memory

2018-01-11 Thread ian at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83794

--- Comment #3 from ian at gcc dot gnu.org  ---
Author: ian
Date: Thu Jan 11 19:58:55 2018
New Revision: 256553

URL: https://gcc.gnu.org/viewcvs?rev=256553&root=gcc&view=rev
Log:
PR go/83794
misc/cgo/test: avoid endless loop when we can't parse notes

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

Modified:
trunk/gcc/go/gofrontend/MERGE
trunk/libgo/misc/cgo/test/buildid_linux.go

[Bug target/82682] [8 Regression] FAIL: gcc.target/i386/pr50038.c scan-assembler-times movzbl 2 (found 3 times) since r253958

2018-01-11 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82682

Jeffrey A. Law  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #11 from Jeffrey A. Law  ---
Fixed by Jakub's patch on the trunk.

[Bug c++/83799] [8 Regression] bogus "no matching function for call to" error when building llvm

2018-01-11 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83799

--- Comment #3 from David Malcolm  ---
Created attachment 43109
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43109&action=edit
Reduced test case for the first error

Here's a reduced version of the first error seen in the original attachment (am
keeping the other one around for now, in case there are multiple issues here).

Am investigating.

[Bug debug/81155] [8 Regression] Debug make check regressions in GCC 8.0

2018-01-11 Thread jan.kratochvil at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81155

--- Comment #8 from Jan Kratochvil  ---
(In reply to Jakub Jelinek from comment #7)
> Thanks.  Is that something that can be fixed in GDB easily?

Expecting a significant performance hit on initial scan of a file when
.gdb_index/.debug_names is not present there.  But personally I do not think
that matters as such scanning without any index was always very slow, that is
what the index is there for.

I am leaving the fix and/or assignment of the fix up to Pedro.

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

Jeffrey A. Law  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 CC||law at redhat dot com
   See Also||https://gcc.gnu.org/bugzill
   ||a/show_bug.cgi?id=72785
 Resolution|--- |INVALID

--- Comment #10 from Jeffrey A. Law  ---
So look for something similar to this:

  [local count: 96151367]:
  # i_280 = PHI <0(28), 0(30)>
  if (i_280 < nr_300)
goto ; [92.50%]
  else
goto ; [7.50%]

The subscripts may change, but I think that's what you're looking for.

i_280 will be replaced with zero resulting in

if (0 < nr_300)
  true
else
  false


And because nr is unsigned that will turn into an equality comparison

if (nr_300 != 0)
  true
else
  false

At that point the compiler knows that nr_300 has the value 0 on the false arm
of the conditional.


Anyway, this isn't a GCC bug.  I'll note that it may be worth reviewing pr72785
 which is essentially the same issue with misunderstanding how
builtin_constant_p works.

[Bug c++/43486] Preserve variable-use locations

2018-01-11 Thread dmalcolm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43486

--- Comment #13 from David Malcolm  ---
Author: dmalcolm
Date: Thu Jan 11 19:38:52 2018
New Revision: 256552

URL: https://gcc.gnu.org/viewcvs?rev=256552&root=gcc&view=rev
Log:
Add some reproducers for issues found developing the location-wrappers patch

gcc/testsuite/ChangeLog:
PR c++/43486
* g++.dg/wrappers: New subdirectory.
* g++.dg/wrappers/README: New file.
* g++.dg/wrappers/alloc.C: New test case.
* g++.dg/wrappers/cow-istream-string.C: New test case.
* g++.dg/wrappers/cp-stdlib.C: New test case.
* g++.dg/wrappers/sanitizer_coverage_libcdep_new.C: New test case.
* g++.dg/wrappers/wrapper-around-type-pack-expansion.C: New test
case.


Added:
trunk/gcc/testsuite/g++.dg/wrappers/
trunk/gcc/testsuite/g++.dg/wrappers/README
trunk/gcc/testsuite/g++.dg/wrappers/alloc.C
trunk/gcc/testsuite/g++.dg/wrappers/cow-istream-string.C
trunk/gcc/testsuite/g++.dg/wrappers/cp-stdlib.C
trunk/gcc/testsuite/g++.dg/wrappers/sanitizer_coverage_libcdep_new.C
trunk/gcc/testsuite/g++.dg/wrappers/wrapper-around-type-pack-expansion.C
Modified:
trunk/gcc/testsuite/ChangeLog

[Bug target/82682] [8 Regression] FAIL: gcc.target/i386/pr50038.c scan-assembler-times movzbl 2 (found 3 times) since r253958

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82682

--- Comment #10 from Jakub Jelinek  ---
Author: jakub
Date: Thu Jan 11 19:34:56 2018
New Revision: 256551

URL: https://gcc.gnu.org/viewcvs?rev=256551&root=gcc&view=rev
Log:
PR target/82682
* ree.c (combine_reaching_defs): Optimize also
reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
reg2=any_extend(exp); reg1=reg2;, formatting fix.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/ree.c

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread matthew at wil dot cx
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

--- Comment #9 from Matthew Wilcox  ---
Maybe I'm a little slow, but I don't see what the path is that sets 'nr' to 0. 
It's 1UL << compound_order.  Typically, compound_order is 0, although it may be
anything up to log2(number of pages in the machine).  Are you saying that nr
could be 0 because DOM2 thinks compound_order() could be larger than 64, and
thus undefined?

[Bug debug/81155] [8 Regression] Debug make check regressions in GCC 8.0

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81155

--- Comment #7 from Jakub Jelinek  ---
Thanks.  Is that something that can be fixed in GDB easily?
I mean, for -freorder-blocks-and-partition optimized main we can't pretend it
is a single range when it is not.

[Bug middle-end/83653] [6/7/8 Regression] GCC fails to remove a can't-happen call on ia64

2018-01-11 Thread aldyh at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83653

--- Comment #8 from Aldy Hernandez  ---
Ah, I see what the problem is.

 unsigned long i, nr = 1UL << compound_order(page);
...
 page_ref_sub(page, nr); // calls __builtin_constant_p(nr) eventually

The problem is that there is a path to __builtin_constant_p(nr) for which NR is
0, and thus a constant.  This is because compound_order() is defined as:

static inline unsigned int compound_order(struct page *page)
{
if (!PageHead(page))
return 0;
return page[1].compound_order;
}

The dom2 threading pass is isolating the path returning 0, and realizing that
that particular path is a constant.  Your series of if's does not handle 0, and
you get the __bad_increment_for_ia64_fetch_and_add exposed.

Don't blame me, I'm just the messenger :).

Perhaps Richi has a suggestion on how to code your macro.

If, as Richard says, this is a known quirk, perhaps we should document it in
the section for __builtin_constant_p() in the manual, along with a suggestion
on how to code an alternative.

[Bug debug/81155] [8 Regression] Debug make check regressions in GCC 8.0

2018-01-11 Thread jan.kratochvil at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81155

--- Comment #6 from Jan Kratochvil  ---
(In reply to Jakub Jelinek from comment #5)
> where gdb sees the difference and why doesn't it make the file
> containing main the default?

pr43051-1.exe.good
 <1><117>: Abbrev Number: 3 (DW_TAG_subprogram)
<118>   DW_AT_abstract_origin: <0x69>
<11c>   DW_AT_low_pc  : 0x400410
<124>   DW_AT_high_pc : 0x3d
...
pr43051-1.exe.bad
 <1><117>: Abbrev Number: 3 (DW_TAG_subprogram)
<118>   DW_AT_abstract_origin: <0x69>
<11c>   DW_AT_ranges  : 0x0
...

GDB read_partial_die() does support DW_AT_low_pc+DW_AT_high_pc but not
DW_AT_ranges.  Therefore for pr43051-1.exe.bad GDB considers it only as a
declaration of main() and not its definition, not worth expanding its CU.

[Bug c++/83690] [8 regression] spurious unused variable warings for variables used only in static_assert

2018-01-11 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83690

Jason Merrill  changed:

   What|Removed |Added

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

--- Comment #4 from Jason Merrill  ---
Fixed.

[Bug c++/82728] [8 regression] Incorrect -Wunused-but-set-variable warning with a const

2018-01-11 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82728

Jason Merrill  changed:

   What|Removed |Added

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

--- Comment #5 from Jason Merrill  ---
Fixed.

[Bug c++/83690] [8 regression] spurious unused variable warings for variables used only in static_assert

2018-01-11 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83690

--- Comment #3 from Jason Merrill  ---
Author: jason
Date: Thu Jan 11 19:08:41 2018
New Revision: 256550

URL: https://gcc.gnu.org/viewcvs?rev=256550&root=gcc&view=rev
Log:
PR c++/82728 - wrong -Wunused-but-set-variable

PR c++/82799
PR c++/83690
* call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
* decl.c (case_conversion): Likewise.
* semantics.c (finish_static_assert): Call
perform_implicit_conversion_flags.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-switch2.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-27.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-28.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-29.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c
trunk/gcc/cp/decl.c
trunk/gcc/cp/semantics.c

[Bug c++/82799] [8 Regression] -Wunused-but-set-variable false positive

2018-01-11 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82799

--- Comment #4 from Jason Merrill  ---
Author: jason
Date: Thu Jan 11 19:08:41 2018
New Revision: 256550

URL: https://gcc.gnu.org/viewcvs?rev=256550&root=gcc&view=rev
Log:
PR c++/82728 - wrong -Wunused-but-set-variable

PR c++/82799
PR c++/83690
* call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
* decl.c (case_conversion): Likewise.
* semantics.c (finish_static_assert): Call
perform_implicit_conversion_flags.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-switch2.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-27.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-28.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-29.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c
trunk/gcc/cp/decl.c
trunk/gcc/cp/semantics.c

[Bug c++/82728] [8 regression] Incorrect -Wunused-but-set-variable warning with a const

2018-01-11 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82728

--- Comment #4 from Jason Merrill  ---
Author: jason
Date: Thu Jan 11 19:08:41 2018
New Revision: 256550

URL: https://gcc.gnu.org/viewcvs?rev=256550&root=gcc&view=rev
Log:
PR c++/82728 - wrong -Wunused-but-set-variable

PR c++/82799
PR c++/83690
* call.c (perform_implicit_conversion_flags): Call mark_rvalue_use.
* decl.c (case_conversion): Likewise.
* semantics.c (finish_static_assert): Call
perform_implicit_conversion_flags.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-switch2.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-27.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-28.C
trunk/gcc/testsuite/g++.dg/warn/Wunused-var-29.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/call.c
trunk/gcc/cp/decl.c
trunk/gcc/cp/semantics.c

[Bug c++/83806] New: Spurious unused-but-set-parameter with nullptr

2018-01-11 Thread barry.revzin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83806

Bug ID: 83806
   Summary: Spurious unused-but-set-parameter with nullptr
   Product: gcc
   Version: 7.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: barry.revzin at gmail dot com
  Target Milestone: ---

This program:

template 
bool equals(X x, Y y) {
return (x == y); 
}

int main() {
const char* p = nullptr;
equals(p, nullptr);
}

When compiled as:

$ g++ -std=c++1z -Wunused-but-set-parameter bad.cxx 
bad.cxx: In instantiation of ‘bool equals(X, Y) [with X = const char*; Y =
std::nullptr_t]’:
bad.cxx:8:22:   required from here
bad.cxx:2:20: warning: parameter ‘y’ set but not used
[-Wunused-but-set-parameter]
 bool equals(X x, Y y) {
^

But y is used, in a meaningful sense.

[Bug c/83801] [8 Regression][avr] String constant in __flash not put into .progmem

2018-01-11 Thread gandalf at winds dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801

--- Comment #6 from gandalf at winds dot org ---
(In reply to Georg-Johann Lay from comment #1)
> Old v7.2 does it correctly: one string in flash, one in RAM.

My more specific testcase (comment #3 in PR83729) references a 32-byte string
in a function that is only called once in my program, in a slow code path (e.g.
initialization). I understand there is a slowdown incurred by LPM instructions
when using __flash, hence the compiler may want to optimize this condition. But
since RAM is more limited than Flash on AVR (and I know my use of memory vs.
large strings), I specifically use __flash to specify I want certain strings
like this one located in flash memory instead of RAM.

Is that not the purpose of __flash? Why would the compiler duplicate this
string in RAM? What if my string happened to be larger than the total RAM
available?

[Bug ipa/83532] [8 Regression] ICE in apply_scale, at profile-count.h:955

2018-01-11 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83532

Jan Hubicka  changed:

   What|Removed |Added

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

--- Comment #3 from Jan Hubicka  ---
Fixed by patch for PR83718

[Bug middle-end/83718] [8 Regression] ICE: Floating point exception in profile_count::apply_scale

2018-01-11 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83718

Jan Hubicka  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from Jan Hubicka  ---
Fixed.

[Bug debug/81155] [8 Regression] Debug make check regressions in GCC 8.0

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81155

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jan.kratochvil at redhat dot 
com,
   ||palves at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek  ---
So, I guess we need help on how does gdb determine the initial file when
loading a program (i.e. when you run gdb ./program , when you get prompt, what
file is l showing or b  putting breakpoint in).
With the new LTO debug info, we have
.file   ""
with both -f{,no-}reorder-blocks-and-partition.
The CU that imports the unit with main has:
.long   .LASF1  # DW_AT_name: ""
.long   .LASF2  # DW_AT_comp_dir: "/usr/src/gcc/obj/gcc"
too.  Pedro/Jan, could you try this (I can provide binaries off-line) and say
where gdb sees the difference and why doesn't it make the file containing main
the default?

[Bug target/83785] sh: ICE in maybe_record_trace_start, at dwarf2cfi.c:2344

2018-01-11 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83785

--- Comment #1 from joseph at codesourcery dot com  ---
I suspect this has the same cause as bug 78459, bug 80863 and bug 83760, 
all of which involve ICEs in maybe_record_trace_start for SH and the first 
two of which mysteriously went away (but the bugs are still open), 
probably as a result of something being perturbed by other changes rather 
than an actual fix.

[Bug tree-optimization/83189] [8 regression] internal compiler error: in probability_in, at profile-count.h:1050

2018-01-11 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83189

--- Comment #9 from Jan Hubicka  ---
Author: hubicka
Date: Thu Jan 11 17:47:20 2018
New Revision: 256545

URL: https://gcc.gnu.org/viewcvs?rev=256545&root=gcc&view=rev
Log:
PR middle-end/83189
* gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimple-ssa-isolate-paths.c

[Bug middle-end/83718] [8 Regression] ICE: Floating point exception in profile_count::apply_scale

2018-01-11 Thread hubicka at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83718

--- Comment #5 from Jan Hubicka  ---
Author: hubicka
Date: Thu Jan 11 17:46:01 2018
New Revision: 256544

URL: https://gcc.gnu.org/viewcvs?rev=256544&root=gcc&view=rev
Log:
PR middle-end/83718
* tree-inline.c (copy_cfg_body): Adjust num&den for scaling
after they are computed.
* g++.dg/torture/pr83718.C: New testcase.


Added:
trunk/gcc/testsuite/g++.dg/torture/pr83718.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-inline.c

[Bug c/83801] [8 Regression][avr] String constant in __flash not put into .progmem

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek  ---
I never said there is a bug in the C FE, I think the testcases just make
invalid assumptions.
In any case, the change that matters here is likely my r254930 or r255285, and
one could do something like add say:
  && (ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (TREE_TYPE (decl)))
  || !AGGREGATE_TYPE_P (TREE_TYPE (decl)))
to decl_constant_value_1 conditions to prevent it from looking at aggregate
initializers in non-generic address spaces.
Perhaps there should be also some cap on the size of decl that is optimized
regardless of the address space, e.g. 7.x and earlier had:
  || TREE_CODE (TREE_TYPE (exp)) == ARRAY_TYPE
  || DECL_MODE (exp) == BLKmode)
condition to punt.  Now, sometimes it is beneficial to have even BLKmode or
array decls to go through, say if we have str[5], similarly
const_var.field,then not punting on those will allow it to be optimized into
constant, while 7.x couldn't.  But, with something large and non-constant
access it might actually regress (duplicate the constant).

[Bug tree-optimization/35513] Improve targetm.binds_local_p

2018-01-11 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35513

H.J. Lu  changed:

   What|Removed |Added

 CC||rafael.espindola at gmail dot 
com

--- Comment #4 from H.J. Lu  ---
*** Bug 83782 has been marked as a duplicate of this bug. ***

[Bug target/83782] Inconsistent address for hidden ifunc in a shared library

2018-01-11 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83782

H.J. Lu  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from H.J. Lu  ---
Dup.

*** This bug has been marked as a duplicate of bug 35513 ***

[Bug tree-optimization/35513] Improve targetm.binds_local_p

2018-01-11 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35513

--- Comment #3 from H.J. Lu  ---
Hidden ifunc address has the similar issue, see the testcase in PR 83782.
If targetm.binds_local_p needs to know if the symbol is used for read,
write or branch, so that all function pointers, including hidden ones, are
treated as as global, when -fPIC is used.

[Bug debug/81155] [8 Regression] Debug make check regressions in GCC 8.0

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81155

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek  ---
As
make check-gcc
RUNTESTFLAGS='--target_board=unix\{-fno-reorder-blocks-and-partition,-freorder-blocks-and-partition\}
guality.exp=pr43051-1.c'
shows, it is a -freorder-blocks-and-partition related, but it actually isn't
about missing debug info for those vars, it is all there.
gdb ./pr43051-1.exe
(gdb) b pr43051-1.c:34
Breakpoint 2 at 0x4005ff: file
/usr/src/gcc/gcc/testsuite/gcc.dg/guality/pr43051-1.c, line 34.
(gdb) r
Starting program: /usr/src/gcc/obj/gcc/pr43051-1.exe 

Breakpoint 2, bar (c=0x601060 , v=1, e=0x601070 ) at
/usr/src/gcc/gcc/testsuite/gcc.dg/guality/pr43051-1.c:34
34foo ("c", (__UINTPTR_TYPE__) c, 0);   /* { dg-final {
gdb-test 34 "c" "\&a\[0\]" } } */
(gdb) p c
$1 = (struct S *) 0x601060 
(gdb) n
35foo ("v", v, 1);  /* { dg-final {
gdb-test 35 "v" "1" } } */
(gdb) p v
$2 = 1
(gdb) n
36foo ("e", (__UINTPTR_TYPE__) e, 2);   /* { dg-final {
gdb-test 36 "e" "\&a\[1\]" } } */
(gdb) p e
$3 = (struct S *) 0x601070 
(gdb) b 39
Breakpoint 3 at 0x4005c0: file
/usr/src/gcc/gcc/testsuite/gcc.dg/guality/pr43051-1.c, line 39.
(gdb) c
Continuing.

Breakpoint 3, bar (c=0x601060 , v=1, e=0x601070 ) at
/usr/src/gcc/gcc/testsuite/gcc.dg/guality/pr43051-1.c:39
39foo ("c", (__UINTPTR_TYPE__) c, 3);   /* { dg-final {
gdb-test 39 "c" "\&a\[0\]" } } */
(gdb) p c
$4 = (struct S *) 0x601060 
(gdb) n
40foo ("v", v, 4);  /* { dg-final {
gdb-test 40 "v" "1" } } */
(gdb) p v
$5 = 1
(gdb) n
41foo ("e", (__UINTPTR_TYPE__) e, 5);   /* { dg-final {
gdb-test 41 "e" "\&a\[1\]" } } */
(gdb) p e
$6 = (struct S *) 0x601070 

The reason it fails is different, in the logs there is:
spawn gdb -nx -nw -quiet -batch -x pr43051-1.gdb ./pr43051-1.exe
No line 34 in the current file.
Make breakpoint pending on future shared library load? (y or [n]) [answered N;
input not from terminal]
and indeed that is what one can see:
gdba ./pr43051-1.exe
(gdb) l
1   : No such file or directory.
(gdb) b 34
No line 34 in the current file.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (34) pending.

So, either gdb 8.0.1-33.fc27 is too old to handle the LTO debug info, or there
is something wrong in it.

[Bug c/83801] [8 Regression][avr] String constant in __flash not put into .progmem

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801

--- Comment #4 from Georg-Johann Lay  ---
*** Bug 83805 has been marked as a duplicate of this bug. ***

[Bug c/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

Georg-Johann Lay  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
  Component|middle-end  |c
 Resolution|--- |DUPLICATE

--- Comment #11 from Georg-Johann Lay  ---
According to Jakub, a C FE bug (STRING_CST is used with non-generic address
space).

*** This bug has been marked as a duplicate of bug 83801 ***

[Bug c/83801] [8 Regression][avr] String constant in __flash not put into .progmem

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801

Georg-Johann Lay  changed:

   What|Removed |Added

   Keywords||addr-space
  Component|target  |c

--- Comment #3 from Georg-Johann Lay  ---
According to Jelinek, STRING_CST must always be in the default AS:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805#c9

Hence this is a C front-end bug:  STRING_CST must not be used for AS stuff, and
the C FE must use a VAR_DECL in this case like v7 did.

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #10 from Georg-Johann Lay  ---
(In reply to Jakub Jelinek from comment #9)
> I don't see any bug actually.  You are just saying that the str1 variable is
> __flash, during optimization (already in C FE) it optimizes str1[i] into
> "0123456789"[i] and that is the string literal that is mergeable, string
> literals unlike variables don't really have non-default address spaces.

Well, it's access as if it was located in an address space (namely using LPM
which is only used if the accessing code is accessing AS).  The object sections
and accessor code must macht, otherwise it's wrong code.

If STRING_CST must not reside in AS (I already wondered that non-DECLs are in
AS) then my proposed fix to PR83801 is wrong:  In that PR, a STRING_CST is
passed to TARGET_ASM_SELECT_SECTION, and it's TREE_TYP has some AS set.  The
patch puts the STRING_CST in some AS-related section, and if that's wrong then
it's abut in the C front because the code is accessing an AS object.

IIUC you are saying that my fix to PR83801 is wrong and that the C FE should
never use a STRING_CST but should use a VAR_DECL (like v7 and prior did).

> If you want to prevent that, either make the var const volatile, or use some
> optimization barrier, like:
>   static const __flash char str1[] = "0123456789";
>   const char *ptr;
>   __asm ("" : "=r" (ptr) : "0" (str1));
>   return ptr[i];

Really, I have to control over code in user space, and the code supplied in the
test case is valid.

And the code you are showing makes really on sense...

[Bug c++/83798] Enhancement to Wmain warnings

2018-01-11 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83798

Jonathan Wakely  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-11
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely  ---
(In reply to denis.campredon from comment #0)
> In the first three warnings, just '::main' should be displayed, like when
> compiled with gcc, instead of the full signature.

What do you mean "when compiled with gcc"?

The C front-end doesn't print "::main" because there is no :: scope resolution
operator in C, and for C++ there's no difference in diagnostics whether you
invoke gcc or g++.

Do you just mean like the cases in PR 83797?

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #9 from Jakub Jelinek  ---
I don't see any bug actually.  You are just saying that the str1 variable is
__flash, during optimization (already in C FE) it optimizes str1[i] into
"0123456789"[i] and that is the string literal that is mergeable, string
literals unlike variables don't really have non-default address spaces.
If you want to prevent that, either make the var const volatile, or use some
optimization barrier, like:
  static const __flash char str1[] = "0123456789";
  const char *ptr;
  __asm ("" : "=r" (ptr) : "0" (str1));
  return ptr[i];
or similar.

[Bug ipa/60871] [4.9 Regression] internal compiler error: in possible_polymorphic_call_targets, at ipa-devirt.c:1510

2018-01-11 Thread neil.kindlon at jax dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60871

--- Comment #22 from Neil Kindlon  ---
I am so sorry. Please disregard my earlier comments. It seems I hadn't exported
the path variables to the correct correct compiler. When actually compiled with
7.1.0, there is no problem. My apologies.

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #8 from Georg-Johann Lay  ---
(In reply to Jakub Jelinek from comment #7)
> Well, you have 3 objects, str1, str2 and the string literal, if the compiler
> thinks all 3 are needed, it emits all of them.  Without
> -fmerge-all-constants str1 can't be merged with str2 nor with any other
> object.

Whatever you call it -- .LC0 is shared between fun1 and fun2 and the result is
wrong code.  This even happens with -fno-merge-constants
-fno-merge-all-constants.

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #7 from Jakub Jelinek  ---
Well, you have 3 objects, str1, str2 and the string literal, if the compiler
thinks all 3 are needed, it emits all of them.  Without -fmerge-all-constants
str1 can't be merged with str2 nor with any other object.

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #6 from Georg-Johann Lay  ---
(In reply to Jakub Jelinek from comment #1)
> If so, avr should override the select_section and unique_section target
> hooks and return something different for the __flash strings.

Also tried TARGET_ASM_UNIQUE_SECTION (again atop the patch for PR83801):
Doesn't solve the problem.  With -fdata-sections, I can change one of the
section names, namely str2 (which already was correctly put into .rodata).  But
.LC0 is still shared between fun1 and fun2.

TARGET_ASM_UNIQUE_SECTION is called 2 times: For the 2 VAR_DECLs str1 and str2,
but not for STRING_CST .LC0.

[Bug tree-optimization/83776] [6/7/8 Regression] missing -Warray-bounds indexing past the end of a string literal

2018-01-11 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83776

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #2 from Martin Sebor  ---
I'm testing a patch for this bug.

[Bug rtl-optimization/83770] [8 Regression] ICE in create_preheader, at cfgloopmanip.c:1536

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83770

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-11
 CC||abel at gcc dot gnu.org,
   ||amonakov at gcc dot gnu.org,
   ||hubicka at gcc dot gnu.org,
   ||jakub at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek  ---
Started with r250360.

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #5 from Georg-Johann Lay  ---
(In reply to Jakub Jelinek from comment #4)
> Well, 7.2 certainly doesn't have any special casing for address spaces in
> categorize_decl_for_section etc., so before claiming it is a regression
> you'd better bisect what change actually changed it.

avr already implemented TARGET_ASM_SELECT_SECTION (it just didn't handle
STRING_CSTs) so that default_elf_select_section is not used -- and thereby dito
for the logic in categorize_decl_for_section.  Or more precisely, it's only
used for non-address-space cases in avr_asm_select_section.

[Bug tree-optimization/83695] [8 Regression] ICE on valid code at -O3: Segmentation fault

2018-01-11 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83695

Jeffrey A. Law  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||law at redhat dot com
 Resolution|--- |FIXED

--- Comment #7 from Jeffrey A. Law  ---
Fixed by Bin's change on the trunk.

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-11 Thread law at redhat dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

Jeffrey A. Law  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||law at redhat dot com
 Resolution|--- |FIXED

--- Comment #9 from Jeffrey A. Law  ---
Fixed by Martin's patch on the trunk.

[Bug ipa/83178] [8 regression] g++.dg/ipa/devirt-22.C fail

2018-01-11 Thread law at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83178

--- Comment #8 from Jeffrey A. Law  ---
Author: law
Date: Thu Jan 11 15:56:07 2018
New Revision: 256542

URL: https://gcc.gnu.org/viewcvs?rev=256542&root=gcc&view=rev
Log:
PR ipa/83178
* g++.dg/ipa/devirt-22.C: Adjust scan-dump-times count.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/ipa/devirt-22.C

[Bug go/83787] [8 regression] Many 32-bit Solaris/SPARC Go tests FAIL after Go1.10beta1 update

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83787

Jakub Jelinek  changed:

   What|Removed |Added

   Priority|P3  |P4
 CC||jakub at gcc dot gnu.org

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #4 from Jakub Jelinek  ---
Well, 7.2 certainly doesn't have any special casing for address spaces in
categorize_decl_for_section etc., so before claiming it is a regression you'd
better bisect what change actually changed it.

[Bug tree-optimization/83695] [8 Regression] ICE on valid code at -O3: Segmentation fault

2018-01-11 Thread amker at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83695

--- Comment #6 from amker at gcc dot gnu.org ---
Author: amker
Date: Thu Jan 11 15:41:41 2018
New Revision: 256541

URL: https://gcc.gnu.org/viewcvs?rev=256541&root=gcc&view=rev
Log:
PR tree-optimization/83695
* gimple-loop-linterchange.cc
(tree_loop_interchange::interchange_loops): Call scev_reset_htab to
reset cached scev information after interchange.
(pass_linterchange::execute): Remove call to scev_reset_htab.

gcc/testsuite
PR tree-optimization/83695
* gcc.dg/tree-ssa/pr83695.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr83695.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimple-loop-interchange.cc
trunk/gcc/testsuite/ChangeLog

[Bug debug/68860] [6/7/8 regression] FAIL: gcc.dg/guality/pr36728-1.c -flto -O3 -g line 16/7 arg1 == 1

2018-01-11 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68860

Richard Biener  changed:

   What|Removed |Added

  Attachment #37097|0   |1
is obsolete||

--- Comment #22 from Richard Biener  ---
Created attachment 43108
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43108&action=edit
updated patch

Forward-ported Jakubs patch.  It still doesn't have the desired effect on the
pr68860-1.c testcase, it also crashes during expand somewhere (in addition to
the tree-inline.c "fix").

[Bug libquadmath/83800] [libquadmath] M_SQRT2q & sqrtq(2.0Q) off by one ULP ?

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83800

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
The constants were fixed in glibc with
https://sourceware.org/git/?p=glibc.git;a=commit;h=2d10d547c1e41138e439d74105246eca31547693
and for GCC in r250343.  This is not going to be backported to older GCC
versions.

Haven't checked sqrtq.

[Bug fortran/83803] Using -fc-prototypes on modules with empty dummy arg lists does not close paren.

2018-01-11 Thread 3dw4rd at verizon dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83803

--- Comment #2 from Ed Smith-Rowland <3dw4rd at verizon dot net> ---
Forgot compiler info:
ed@ed-VirtualBox:~$ ./bin/bin/gfortran -v
Using built-in specs.
COLLECT_GCC=./bin/bin/gfortran
COLLECT_LTO_WRAPPER=/home/ed/bin/libexec/gcc/x86_64-pc-linux-gnu/8.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/home/ed/bin
--enable-languages=c,brig,c++,fortran,go,lto,objc,obj-c++ : (reconfigured)
../gcc/configure --prefix=/home/ed/bin
--enable-languages=c,brig,c++,fortran,go,lto,objc,obj-c++ --no-create
--no-recursion : (reconfigured) ../gcc/configure --prefix=/home/ed/bin
--enable-languages=c,brig,c++,fortran,go,lto,objc,obj-c++ --no-create
--no-recursion
Thread model: posix
gcc version 8.0.0 20171228 (experimental) (GCC)

[Bug middle-end/83805] [8 Regression] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

Georg-Johann Lay  changed:

   What|Removed |Added

  Known to work||7.2.1
Summary|Wrong constant merging for  |[8 Regression] Wrong
   |objects in different|constant merging for
   |address spaces  |objects in different
   ||address spaces

--- Comment #3 from Georg-Johann Lay  ---
v7.2 did it correctly (any only popped 2 objects).

[Bug middle-end/83805] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

--- Comment #2 from Georg-Johann Lay  ---
(In reply to Jakub Jelinek from comment #1)
> If so, avr should override the select_section and unique_section target
> hooks and return something different for the __flash strings.

I am just working on a patch to fix PR83801 which adds STRING_CST handling to
the hooks (v7.2 passed VAR_DECL instead of STRING_CST).  But even with that
patch I am getting wrong results for the code above.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801#c2

avr doesn't implement TARGET_ASM_UNIQUE_SECTION, but when I supply that hook
(atop of the patch above) then this hook is never called for the test case...

[Bug target/83801] [8 Regression][avr] String constant in __flash not put into .progmem

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801

--- Comment #2 from Georg-Johann Lay  ---
Created attachment 43107
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43107&action=edit
proposed patch

[Bug target/81821] [RX] xchg_mem uses wrong memory operand size

2018-01-11 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81821

Oleg Endo  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Oleg Endo  ---
Fixed on trunk and on GCC 7, where atomics were initially added with this bug.

[Bug other/83805] Wrong constant merging for objects in different address spaces

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
If so, avr should override the select_section and unique_section target hooks
and return something different for the __flash strings.

[Bug target/83801] [8 Regression][avr] String constant in __flash not put into .progmem

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801

Georg-Johann Lay  changed:

   What|Removed |Added

  Known to work||7.2.1
Summary|[avr] String constant in|[8 Regression][avr] String
   |__flash not put into|constant in __flash not put
   |.progmem|into .progmem

--- Comment #1 from Georg-Johann Lay  ---
Old v7.2 does it correctly: one string in flash, one in RAM.

[Bug target/81821] [RX] xchg_mem uses wrong memory operand size

2018-01-11 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81821

--- Comment #4 from Oleg Endo  ---
Author: olegendo
Date: Thu Jan 11 15:18:38 2018
New Revision: 256538

URL: https://gcc.gnu.org/viewcvs?rev=256538&root=gcc&view=rev
Log:
gcc/
Backport from mainline
2018-01-11  Oleg Endo  

PR target/81821
* config/rx/rx.md (BW): New mode attribute.
(sync_lock_test_and_setsi): Add mode suffix to insn output.


Modified:
branches/gcc-7-branch/gcc/ChangeLog
branches/gcc-7-branch/gcc/config/rx/rx.md

[Bug other/83805] Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

Georg-Johann Lay  changed:

   What|Removed |Added

   Keywords||addr-space, wrong-code
 Target||avr
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-11
 Ever confirmed|0   |1

[Bug target/81821] [RX] xchg_mem uses wrong memory operand size

2018-01-11 Thread olegendo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81821

--- Comment #3 from Oleg Endo  ---
Author: olegendo
Date: Thu Jan 11 15:16:21 2018
New Revision: 256536

URL: https://gcc.gnu.org/viewcvs?rev=256536&root=gcc&view=rev
Log:
gcc/
PR target/81821
* config/rx/rx.md (BW): New mode attribute.
(sync_lock_test_and_setsi): Add mode suffix to insn output.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rx/rx.md

[Bug other/83805] New: Wrong constant merging for objects in different address spaces

2018-01-11 Thread gjl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83805

Bug ID: 83805
   Summary: Wrong constant merging for objects in different
address spaces
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gjl at gcc dot gnu.org
  Target Milestone: ---

Compile the following code with

$ avr-gcc -Os bug.c -S -mmcu=avr5

char fun1 (unsigned i)
{
  static const __flash char str1[] = "0123456789";
  __asm ("; " :: "r" (str1));
  return str1[i];
}

char fun2 (unsigned i)
{
  static const char str2[] = "0123456789";
  __asm ("; " :: "r" (str2));
  return str2[i];
}


str1 and str2 reside in different address spaces, and they should end up in
different sections; namely str1 in flash (.progmem.data) which is the case, and
str2 in RAM (.rodata) which is not the case.

Instead, the two objects are merged together in .LC0:

.section.progmem.data.str1.1,"aMS",@progbits,1
.LC0:
.string "0123456789"
.text

fun1:
ldi r18,lo8(str1.1511)
ldi r19,hi8(str1.1511)
/* #APP */
; 
/* #NOAPP */
movw r30,r24
subi r30,lo8(-(.LC0))
sbci r31,hi8(-(.LC0))
lpm r24,Z
ret

fun2:
ldi r18,lo8(str2.1515)
ldi r19,hi8(str2.1515)
/* #APP */
; 
/* #NOAPP */
movw r30,r24
subi r30,lo8(-(.LC0))
sbci r31,hi8(-(.LC0))
ld r24,Z
ret
.section.rodata
str2.1515:
.string "0123456789"
.section.progmem.data,"a",@progbits
str1.1511:
.string "0123456789"

Hence .LC0 is once accessed by LPM (which can only access flash but not RAM)
and once by LD (which can only access RAM but not flash)

Moreover, there are three(!) instances of the string "0123456789" where two
would be enough (one in flash, one in RAM).

[Bug fortran/83803] Using -fc-prototypes on modules with empty dummy arg lists does not close paren.

2018-01-11 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83803

Thomas Koenig  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2018-01-11
 CC||tkoenig at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |tkoenig at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Thomas Koenig  ---
At least somebody uses it :-)

Let's take a look.

[Bug fortran/79383] USE statement error

2018-01-11 Thread walt.brainerd at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79383

--- Comment #3 from Walt Brainerd  ---
Yes, Sounds like you have it fixed. Thanks.

On Wed, Jan 10, 2018 at 7:06 PM, kargl at gcc dot gnu.org <
gcc-bugzi...@gcc.gnu.org> wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79383
>
> kargl at gcc dot gnu.org changed:
>
>What|Removed |Added
> 
> 
>  CC||kargl at gcc dot gnu.org
>
> --- Comment #2 from kargl at gcc dot gnu.org ---
> The attached code compiles with both 7-branch an trunk.
> When the resulting excutable is run I get 15.10 on output.
> Is this the expected behavior?
>
> --
> You are receiving this mail because:
> You reported the bug.

[Bug target/83203] [8 Regression] Inefficient int to avx2 vector conversion

2018-01-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83203

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #7 from Jakub Jelinek  ---
Created attachment 43106
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43106&action=edit
gcc8-pr83203.patch

Untested fix.

[Bug lto/83804] [meta] LTO memory consumption

2018-01-11 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83804

--- Comment #5 from Martin Liška  ---
So comparing memory footprint of GCC 7 and GCC 8, I see small increase for WPA
phase (~5%).

[Bug lto/83804] [meta] LTO memory consumption

2018-01-11 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83804

--- Comment #4 from Martin Liška  ---
Created attachment 43105
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43105&action=edit
CPU & memory consumption for Inkscape with GCC 8

[Bug lto/83804] [meta] LTO memory consumption

2018-01-11 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83804

--- Comment #3 from Martin Liška  ---
Created attachment 43104
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43104&action=edit
CPU & memory consumption for Inkscape with GCC 7

[Bug lto/83804] [meta] LTO memory consumption

2018-01-11 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83804

--- Comment #2 from Martin Liška  ---
Created attachment 43103
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43103&action=edit
-fmem-report-wpa for Inkscape with -O2 for GCC 8

[Bug lto/83804] [meta] LTO memory consumption

2018-01-11 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83804

--- Comment #1 from Martin Liška  ---
Created attachment 43102
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43102&action=edit
-fmem-report-wpa for Inkscape with -O2 for GCC 7

  1   2   >