[Bug gcov-profile/83669] Add version info to intermediate gcov file

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

--- Comment #1 from Martin Liška  ---
Author: marxin
Date: Thu Jan  4 08:55:15 2018
New Revision: 256227

URL: https://gcc.gnu.org/viewcvs?rev=256227&root=gcc&view=rev
Log:
Add version to intermediate gcov file (PR gcov-profile/83669).

2018-01-04  Martin Liska  

PR gcov-profile/83669
* gcov.c (output_intermediate_file): Add version to intermediate
gcov file.
* doc/gcov.texi: Document new field 'version' in intermediate
file format. Fix location of '-k' option of gcov command.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/doc/gcov.texi
trunk/gcc/gcov.c

[Bug other/82352] [7/8 Regression] comdat-local function called by void h::i() outside its comdat

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

--- Comment #4 from Martin Liška  ---
Author: marxin
Date: Thu Jan  4 08:54:17 2018
New Revision: 256226

URL: https://gcc.gnu.org/viewcvs?rev=256226&root=gcc&view=rev
Log:
Be careful about comdat boundary in ICF (PR ipa/82352).

2018-01-04  Martin Liska  

PR ipa/82352
* ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
2018-01-04  Martin Liska  

PR ipa/82352
* g++.dg/ipa/pr82352.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/ipa/pr82352.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-icf.c
trunk/gcc/testsuite/ChangeLog

[Bug other/82352] [7 Regression] comdat-local function called by void h::i() outside its comdat

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

Martin Liška  changed:

   What|Removed |Added

  Known to work||8.0
Summary|[7/8 Regression]|[7 Regression] comdat-local
   |comdat-local function   |function called by void
   |called by void h::i()   |h::i() outside its comdat
   |outside its comdat  |

--- Comment #5 from Martin Liška  ---
Fixed on trunk.

[Bug gcov-profile/83669] Add version info to intermediate gcov file

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

Martin Liška  changed:

   What|Removed |Added

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

--- Comment #2 from Martin Liška  ---
Fixed, no plans for backporting.

[Bug target/83628] performance regression when accessing arrays on alpha

2018-01-04 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83628

Uroš Bizjak  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-04
  Component|rtl-optimization|target
 Ever confirmed|0   |1

--- Comment #1 from Uroš Bizjak  ---
This is target issue. According to [1], some patterns needs to be updated from
MULT to ASHIFT, and alpha was left behind.

[1] https://gcc.gnu.org/ml/gcc-patches/2015-04/msg01841.html

[Bug tree-optimization/83668] [8 Regression] wrong code with -O -fno-tree-dominator-opts -fgraphite-identity

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

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-04
 CC||marxin at gcc dot gnu.org,
   ||rguenth at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Martin Liška  ---
Confirmed, started with Richi's r255579.

[Bug tree-optimization/83605] [6/7/8 Regression] ICE: verify_gimple failed (error: dead STMT in EH table)

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

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek  ---
Started with r190220.

[Bug target/83628] performance regression when accessing arrays on alpha

2018-01-04 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83628

Uroš Bizjak  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |ubizjak at gmail dot com

--- Comment #2 from Uroš Bizjak  ---
Created attachment 43028
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43028&action=edit
Proposed patch

This patch changes several insn patterns to use canonical form using ASHIFT
instead of MULT.

[Bug c++/83624] Strong using deprecation warning in C++03

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

--- Comment #4 from Jonathan Wakely  ---
Because it's not non-standard, inline namespaces are standard.

That means the compiler already supports them, and will continue to do so.
Supporting a different (inferior) way to achieve something similar is an
additional maintenance burden.

[Bug target/83628] performance regression when accessing arrays on alpha

2018-01-04 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83628

--- Comment #3 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Jan  4 09:42:01 2018
New Revision: 256228

URL: https://gcc.gnu.org/viewcvs?rev=256228&root=gcc&view=rev
Log:
PR target/83628
* config/alpha/alpha.md (*sadd): Use ASHIFT
instead of MULT rtx.  Update all corresponding splitters.
(*saddl_se): Ditto.
(*ssub): Ditto.
(*ssubl_se): Ditto.
(*cmp_sadd_di): Update split patterns.
(*cmp_sadd_si): Ditto.
(*cmp_sadd_sidi): Ditto.
(*cmp_ssub_di): Ditto.
(*cmp_ssub_si): Ditto.
(*cmp_ssub_sidi): Ditto.
* config/alpha/predicates.md (const23_operand): New predicate.
* config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
Look for ASHIFT, not MULT inner operand.
(alpha_split_conditional_move): Update for *sadd change.

testsuite/ChangeLog:

PR target/83628
* gcc.target/alpha/pr83628-1.c: New test.
* gcc.target/alpha/pr83628-2.c: Ditto.


Added:
trunk/gcc/testsuite/gcc.target/alpha/pr83628-1.c
trunk/gcc/testsuite/gcc.target/alpha/pr83628-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/alpha/alpha.c
trunk/gcc/config/alpha/alpha.md
trunk/gcc/config/alpha/predicates.md
trunk/gcc/testsuite/ChangeLog

[Bug tree-optimization/83605] [6/7/8 Regression] ICE: verify_gimple failed (error: dead STMT in EH table)

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

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

While in theory we could handle this case (CSE of a possibly throwing stmt) by
doing maybe_clean_or_replace_eh_stmt and purging dead eh edges and performing
cfg cleanup, I'm worried about slsr changing the computations and not actually
splitting blocks after any stmt that can throw that it inserts and finding out
the right EH edges etc.

I think it is far easier to just punt on optimizing stmts that can throw.

[Bug preprocessor/83602] [8 Regression] ICE in cpp_macro_definition_location(cpp_hashnode*) on invalid code

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

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #5 from Jakub Jelinek  ---
Fixed.

[Bug debug/83621] [8 Regression] ICE: in simplify_subreg, at simplify-rtx.c:6293 with -O -g

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

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #7 from Jakub Jelinek  ---
Fixed.

[Bug debug/83645] [8 Regression] ICE: in get_insn_template, at final.c:2100 with -gstatement-frontiers

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

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #5 from Jakub Jelinek  ---
Fixed.

[Bug target/83554] [8 Regression] ICE: in ix86_mitigate_rop, at config/i386/i386.c:41274 with -mmitigate-rop

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

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-04
 CC||jakub at gcc dot gnu.org
 Ever confirmed|0   |1

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

[Bug middle-end/83675] [8 regression] Many SPARC tests FAIL with unrecognizable insn

2018-01-04 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83675

--- Comment #3 from rsandifo at gcc dot gnu.org  
---
Author: rsandifo
Date: Thu Jan  4 09:51:08 2018
New Revision: 256229

URL: https://gcc.gnu.org/viewcvs?rev=256229&root=gcc&view=rev
Log:
PR83675: Restore TARGET_VIS2 check for SPARC vec_perm_const

I'd missed a TARGET_VIS2 condition when replacing vec_perm_const_optab
with TARGET_VECTORIZE_VEC_PERM_CONST in r256093.

2018-01-04  Richard Sandiford  

gcc/
PR target/83675
* config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
TARGET_VIS2.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/sparc/sparc.c

[Bug middle-end/83675] [8 regression] Many SPARC tests FAIL with unrecognizable insn

2018-01-04 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83675

--- Comment #4 from rsandifo at gcc dot gnu.org  
---
Patch applied -- thanks for the testing.

[Bug middle-end/83675] [8 regression] Many SPARC tests FAIL with unrecognizable insn

2018-01-04 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83675

rsandifo at gcc dot gnu.org  changed:

   What|Removed |Added

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

--- Comment #5 from rsandifo at gcc dot gnu.org  
---
Fixed on trunk.

[Bug fortran/83679] New: [6 regression] r256113 causes regression on pr77942.f90

2018-01-04 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83679

Bug ID: 83679
   Summary: [6 regression] r256113 causes regression on
pr77942.f90
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: clyon at gcc dot gnu.org
  Target Milestone: ---

Since r256113 (backport of fix for PR83650), I have noticed a regression:
FAIL: gfortran.dg/pr77942.f90   -O  (internal compiler error)

It happens on aarch64 and arm targets.

gfortran.log contains:
f951: internal compiler error: Floating point exception
0xb56845 crash_signal
/gcc/toplev.c:333
0x5f2807 gfc_simplify_cshift(gfc_expr*, gfc_expr*, gfc_expr*)
/gcc/fortran/simplify.c:1842
0x57cff1 do_simplify
/gcc/fortran/intrinsic.c:4158
0x57e2ad gfc_intrinsic_func_interface(gfc_expr*, int)
/gcc/fortran/intrinsic.c:4528
0x5d3d66 resolve_unknown_f
/gcc/fortran/resolve.c:2718
0x5d3d66 resolve_function
/gcc/fortran/resolve.c:3013
0x5d3d66 gfc_resolve_expr(gfc_expr*)
/gcc/fortran/resolve.c:6384
0x5d9ed1 gfc_resolve_code(gfc_code*, gfc_namespace*)
/gcc/fortran/resolve.c:10514
0x5d84cc gfc_resolve_blocks(gfc_code*, gfc_namespace*)
/gcc/fortran/resolve.c:9564
0x5d91aa gfc_resolve_code(gfc_code*, gfc_namespace*)
/gcc/fortran/resolve.c:10504
0x5dac62 resolve_codes
/gcc/fortran/resolve.c:15775
0x5dad65 gfc_resolve(gfc_namespace*)
/gcc/fortran/resolve.c:15810
0x5c56db resolve_all_program_units
/gcc/fortran/parse.c:5868
0x5c56db gfc_parse_file()
/gcc/fortran/parse.c:6120
0x609972 gfc_be_parse_file
/gcc/fortran/f95-lang.c:201

[Bug middle-end/83680] New: [8 regression] Numerous regressions on arm since r256093

2018-01-04 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83680

Bug ID: 83680
   Summary: [8 regression] Numerous regressions on arm since
r256093
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: clyon at gcc dot gnu.org
  Target Milestone: ---

Created attachment 43030
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43030&action=edit
gcc arm-none-linux-gnueabi

Since r256093, I have noticed many regressions on arm* targets.

The whole picture is at:
http://people.linaro.org/~christophe.lyon/cross-validation/gcc/trunk/256093/report-build-info.html

[Bug middle-end/83680] [8 regression] Numerous regressions on arm since r256093

2018-01-04 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83680

--- Comment #2 from Christophe Lyon  ---
Created attachment 43032
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43032&action=edit
gcc armeb-none-linux-gnueabihf

[Bug middle-end/83680] [8 regression] Numerous regressions on arm since r256093

2018-01-04 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83680

--- Comment #1 from Christophe Lyon  ---
Created attachment 43031
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43031&action=edit
gcc arm-none-linux-gnueabihf

[Bug c/83676] Problems with sscanf parsing hex-floats

2018-01-04 Thread BM-2cUWXLL9JqDWpsk8EivFHCgbsbXFtsxQrk at bitmessage dot ch
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83676

--- Comment #2 from Moritz K.  ---
Okay, I didn't know that.

[Bug middle-end/83680] [8 regression] Numerous regressions on arm since r256093

2018-01-04 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83680

--- Comment #4 from Christophe Lyon  ---
Created attachment 43034
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43034&action=edit
gfortran arm-none-linux-gnueabihf

[Bug middle-end/83680] [8 regression] Numerous regressions on arm since r256093

2018-01-04 Thread clyon at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83680

--- Comment #3 from Christophe Lyon  ---
Created attachment 43033
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43033&action=edit
g++ arm-none-linux-gnueabihf

[Bug libstdc++/83607] std::boyer_moore_searcher is slow searching through arrays of std::byte

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

--- Comment #5 from Jonathan Wakely  ---
Author: redi
Date: Thu Jan  4 10:21:29 2018
New Revision: 256231

URL: https://gcc.gnu.org/viewcvs?rev=256231&root=gcc&view=rev
Log:
PR libstdc++/83607 specialize Boyer-Moore searchers for std::byte

PR libstdc++/83607
* include/std/functional (__is_byte_like): New trait.
(__is_std_equal_to): Remove.
(__boyer_moore_base_t): Use __is_byte_like instead of
__is_std_equal_to.
* include/experimental/functional (__is_std_equal_to): Remove.
(__boyer_moore_base_t): Use __is_byte_like instead of
__is_std_equal_to.
* testsuite/20_util/function_objects/83607.cc: New test.

Added:
trunk/libstdc++-v3/testsuite/20_util/function_objects/83607.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/experimental/functional
trunk/libstdc++-v3/include/std/functional

[Bug middle-end/83665] [8 regression] Big code size regression and some code quality improvement at Jan 2 2018

2018-01-04 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83665

Markus Trippelsdorf  changed:

   What|Removed |Added

   Keywords||needs-bisection
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-04
 Ever confirmed|0   |1

--- Comment #3 from Markus Trippelsdorf  ---
403.gcc with -flto is now ~6% slower.

[Bug middle-end/83665] [8 regression] Big code size regression and some code quality improvement at Jan 2 2018

2018-01-04 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83665

Markus Trippelsdorf  changed:

   What|Removed |Added

   Target Milestone|--- |8.0

[Bug middle-end/83665] [8 regression] Big code size regression and some code quality improvement at Jan 2 2018

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

--- Comment #4 from Martin Liška  ---
I see change in r256072 that increased .text in gromacs from:
  83.6%   743Ki .text   743Ki  14.4%

to

  83.8%   760Ki .text   760Ki  14.4%

[Bug target/83554] [8 Regression] ICE: in ix86_mitigate_rop, at config/i386/i386.c:41274 with -mmitigate-rop

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

Jakub Jelinek  changed:

   What|Removed |Added

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

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

Untested fix.

[Bug debug/83666] [8 Regression] ICE: SIGFPE with -O2 -g --param=sccvn-max-scc-size=10

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

--- Comment #3 from Jakub Jelinek  ---
Author: jakub
Date: Thu Jan  4 11:44:07 2018
New Revision: 256232

URL: https://gcc.gnu.org/viewcvs?rev=256232&root=gcc&view=rev
Log:
PR debug/83666
* cfgexpand.c (expand_dbeug_expr) : Punt if mode
is BLKmode and bitpos not zero or mode change is needed.

* gcc.dg/pr83666.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr83666.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cfgexpand.c
trunk/gcc/testsuite/ChangeLog

[Bug debug/83666] [8 Regression] ICE: SIGFPE with -O2 -g --param=sccvn-max-scc-size=10

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

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #4 from Jakub Jelinek  ---
Fixed.

[Bug c++/83627] -Wdelete-non-virtual-dtor doesn't trigger when calling destructor by hand

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

--- Comment #2 from Jonathan Wakely  ---
Tangentially related: Bug 60262

[Bug target/83681] New: epiphany: config/epiphany/epiphany.h:883:8: error: unknown type name 'rtl_opt_pass'

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

Bug ID: 83681
   Summary: epiphany: config/epiphany/epiphany.h:883:8: error:
unknown type name 'rtl_opt_pass'
   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: ---

I cannot build an epiphany-rtems5 Ada compiler:

/run/user/10351/b-gcc-epiphany/./gcc/xgcc
-B/run/user/10351/b-gcc-epiphany/./gcc/ -nostdinc
-B/run/user/10351/b-gcc-epiphany/epiphany-rtems5/newlib/ -isystem
/run/user/10351/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 -DCROSS_DIRECTORY_STRUCTURE
-DIN_GCC  -W -Wall -g -O2 -g -O2 -fexceptions -DIN_RTS -DHAVE_GETIPINFO\
-iquote /home/sh/src/gcc/gcc \
 -iquote . -iquote .. -iquote ../.. -iquote /home/sh/src/gcc/gcc/ada
-iquote /home/sh/src/gcc/gcc -I/home/sh/src/gcc/include  \
targext.c -o targext.o
In file included from ../../tm.h:21,
 from targext.c:46:
/home/sh/src/gcc/gcc/config/epiphany/epiphany.h:883:8: error: unknown type name
'rtl_opt_pass'
 extern rtl_opt_pass *make_pass_mode_switch_use (gcc::context *ctxt);
^~~~
/home/sh/src/gcc/gcc/config/epiphany/epiphany.h:883:52: error: expected ')'
before ':' token
 extern rtl_opt_pass *make_pass_mode_switch_use (gcc::context *ctxt);
^
)
/home/sh/src/gcc/gcc/config/epiphany/epiphany.h:884:8: error: unknown type name
'rtl_opt_pass'
 extern rtl_opt_pass *make_pass_resolve_sw_modes (gcc::context *ctxt);
^~~~
/home/sh/src/gcc/gcc/config/epiphany/epiphany.h:884:53: error: expected ')'
before ':' token
 extern rtl_opt_pass *make_pass_resolve_sw_modes (gcc::context *ctxt);
 ^
 )
In file included from ../../tm.h:23,
 from targext.c:46:
/home/sh/src/gcc/gcc/config/elfos.h:201: warning:
"READONLY_DATA_SECTION_ASM_OP" redefined
 #define READONLY_DATA_SECTION_ASM_OP "\t.section\t.rodata"

In file included from ../../tm.h:21,
 from targext.c:46:
/home/sh/src/gcc/gcc/config/epiphany/epiphany.h:671: note: this is the location
of the previous definition
 #define READONLY_DATA_SECTION_ASM_OP "\t.section .rodata"

[Bug rtl-optimization/83628] [8 Regression] performance regression when accessing arrays on alpha

2018-01-04 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83628

Uroš Bizjak  changed:

   What|Removed |Added

 Status|ASSIGNED|NEW
 CC||law at gcc dot gnu.org,
   ||rsandifo at gcc dot gnu.org,
   ||segher at gcc dot gnu.org
  Component|target  |rtl-optimization
   Assignee|ubizjak at gmail dot com   |unassigned at gcc dot 
gnu.org
   Target Milestone|--- |8.0
Summary|performance regression when |[8 Regression] performance
   |accessing arrays on alpha   |regression when accessing
   ||arrays on alpha

--- Comment #4 from Uroš Bizjak  ---
The remaining regression is in make_compound_operation function in combine.c.

In the following testcase:

int test (int a, int b)
{
  return a + b * 4;
}

the compiler (gcc-5) combined:

(insn 7 4 8 2 (set (reg:DI 76)
(ashift:DI (reg/v:DI 74 [ b ])
(const_int 2 [0x2]))) cmp.c:3 64 {ashldi3}
 (expr_list:REG_DEAD (reg/v:DI 74 [ b ])
(nil)))
(insn 8 7 9 2 (set (reg:SI 75 [ D.1494 ])
(plus:SI (subreg:SI (reg:DI 76) 0)
(subreg/s/u:SI (reg/v:DI 73 [ a ]) 0))) cmp.c:3 3 {addsi3}
 (expr_list:REG_DEAD (reg:DI 76)
(expr_list:REG_DEAD (reg/v:DI 73 [ a ])
(nil
into:

Trying 7 -> 8:
Successfully matched this instruction:
(set (reg:SI 75 [ D.1494 ])
(plus:SI (mult:SI (reg:SI 17 $17 [ b ])
(const_int 4 [0x4]))
(reg:SI 16 $16 [ a ])))

This is not the case anymore, the compiler (gcc-8) fails combination with:

Trying 7 -> 8:
7: r75:DI=$17:DI<<0x2
  REG_DEAD $17:DI
8: r74:SI=$16:SI+r75:DI#0
  REG_DEAD $16:DI
  REG_DEAD r75:DI
Failed to match this instruction:
(set (reg:SI 74)
(plus:SI (subreg:SI (ashift:DI (reg:DI 17 $17 [ b ])
(const_int 2 [0x2])) 0)
(reg:SI 16 $16 [ a ])))

This is a rtl-optimization regression from gcc-5 branch.

[Bug rtl-optimization/83628] [8 Regression] performance regression when accessing arrays on alpha

2018-01-04 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83628

--- Comment #5 from Segher Boessenkool  ---
The MULT is not canonical.

For some reason we do not realise we can do the ASHIFT as SI instead of DI.

[Bug target/83554] [8 Regression] ICE: in ix86_mitigate_rop, at config/i386/i386.c:41274 with -mmitigate-rop

2018-01-04 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83554

--- Comment #3 from Uroš Bizjak  ---
Comment on attachment 43035
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43035
gcc8-pr83554.patch

>(any_rotate:HI (match_dup 0) (const_int 8)))
>   (clobber (reg:CC FLAGS_REG))]
>  "reload_completed
>-  && (TARGET_USE_XCHGB || optimize_function_for_size_p (cfun))"
>+  && (TARGET_USE_XCHGB || optimize_function_for_size_p (cfun))
>+  && QI_REG_P (operands[0])"

You can use QIreg_operand as operand predicate in this pattern.

[Bug target/83507] [8 Regression] ICE in internal_dfa_insn_code_* for powerpc targets

2018-01-04 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83507

--- Comment #1 from Segher Boessenkool  ---
I cannot reproduce this on either powerpc-linux or powerpc64-linux.

[Bug c/83682] New: [8 Regression] ICE in simplify_subreg, at simplify-rtx.c:6296

2018-01-04 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83682

Bug ID: 83682
   Summary: [8 Regression] ICE in simplify_subreg, at
simplify-rtx.c:6296
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: doko at gcc dot gnu.org
  Target Milestone: ---

seen building the cen64 package, trunk r256068 on x86_64-linux-gnu

$ cat cp1.i
typedef float a __attribute__((__vector_size__(16)));
a b;
__attribute__((__vector_size__(2 * sizeof(double double c;
void *memcpy();
void d() {
  a e, g;
  float f;
  e = __builtin_ia32_cvtsd2ss(b, c);
  g = e;
  f = g[0];
  memcpy(d, &f, sizeof(f));
}

$ gcc -std=c99 -c -O2 cp1.i 
during RTL pass: combine
cp1.i: In function 'd':
cp1.i:12:1: internal compiler error: in simplify_subreg, at simplify-rtx.c:6296
 }
 ^
Please submit a full bug report,
with preprocessed source if appropriate.

[Bug target/83507] [8 Regression] ICE in internal_dfa_insn_code_* for powerpc targets

2018-01-04 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83507

Segher Boessenkool  changed:

   What|Removed |Added

   Keywords|ice-on-valid-code   |ice-on-invalid-code

--- Comment #2 from Segher Boessenkool  ---
It uses w4 uninitialised, so it is invalid code, too.

[Bug rtl-optimization/83628] [8 Regression] performance regression when accessing arrays on alpha

2018-01-04 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83628

--- Comment #6 from Uroš Bizjak  ---
On a related note, gcc-5 (-O2) was able to also simplify:

int test (int a, int b, int c)
{
  return (a < b) * 4 + c;
}

cmplt $16,$17,$17
s4addl $17,$18,$0
ret $31,($26),1

where gcc-8 emits:

cmplt $16,$17,$0
s4addq $0,0,$0
addl $0,$18,$0
ret $31,($26),1

gcc-5 is able to if-convert to:

(insn 30 10 15 2 (set (reg:DI 70 [ D.1498 ])
(if_then_else:DI (ne (reg:DI 76)
(const_int 0 [0]))
(const_int 4 [0x4])
(const_int 0 [0]))) cmp1.c:5 161 {*movdicc_internal}
 (nil))

which is later combined with:

(insn 15 30 16 2 (set (reg:SI 77 [ D.1498 ])
(plus:SI (subreg/s/u:SI (reg:DI 70 [ D.1498 ]) 0)
(subreg/s/u:SI (reg/v:DI 75 [ c ]) 0))) cmp1.c:5 3 {addsi3}
 (expr_list:REG_DEAD (reg/v:DI 75 [ c ])
(expr_list:REG_DEAD (reg:DI 70 [ D.1498 ])
(nil

to:

Trying 30 -> 15:
Successfully matched this instruction:
(set (reg:SI 77 [ D.1498 ])
(plus:SI (mult:SI (subreg:SI (reg:DI 76) 0)
(const_int 4 [0x4]))
(reg:SI 18 $18 [ c ])))

gcc-8 is not able to if-convert...

[Bug fortran/83683] New: eoshift accepts wrong-length boundary

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

Bug ID: 83683
   Summary: eoshift accepts wrong-length boundary
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tkoenig at gcc dot gnu.org
  Target Milestone: ---

The following should be rejected:

program main
  implicit none
  integer :: i
  character(len=3) :: e(2,3,4)

  e = reshape([(repeat(achar(i),3),i=iachar('a'),iachar('a')+2*3*4-1)], 
shape(e))
  print *,eoshift(e,1,boundary="1")

end program main

From the F2003 standard 13.7.52:

"BOUNDARY (optional) shall be of the same type and type parameters as ARRAY"

[Bug c++/81933] [7/8 Regression] Invalid "constexpr call flows off the end of the function" error

2018-01-04 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81933

--- Comment #5 from Marek Polacek  ---
Here's what happens.

We get the "flows off" error because:

4151 if (tree init = DECL_INITIAL (r))
4152   {
4153 init = cxx_eval_constant_expression (ctx, init,
4154  false,
4155  non_constant_p,
overflow_p);
4156 /* Don't share a CONSTRUCTOR that might be changed.  */
4157 init = unshare_constructor (init);
4158 ctx->values->put (r, init);
4159   }

r's DECL_INITIAL is null and we don't put the CONSTRUCTOR in ctx->values.  So
here:
1702   result = *ctx->values->get (slot ? slot : res);
1703   if (result == NULL_TREE && !*non_constant_p)
1704 {
1705   if (!ctx->quiet)
1706 error ("% call flows off the end "
1707"of the function");
1708   *non_constant_p = true;
1709 }

result is null -> error.

Why was the DECL_INITIAL null?  Because in c++17 we execute the hunk in Comment
4, which puts some additional fields into some classes.  This makes a
difference for split_nonconstant_init:

 751   if (split_nonconstant_init_1 (dest, init))
 752 init = NULL_TREE;

where split_nonconstant_init_1 is true so that means that the DECL_INITIAL will
be null.  Why is split_nonconstant_init_1 true?  Because it ends up calling
complete_ctor_at_level_p with

6114   return count_type_elements (type, true) == num_elts;

but the count_type_elements result differs between c++14/c++17 precisely
because of the fields added in build_base_field.

But we should only add those fields when initializing aggregates with bases,
which is not what's happening in Comment 2's testcase.

[Bug fortran/83683] eoshift accepts wrong-length boundary

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

Thomas Koenig  changed:

   What|Removed |Added

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

[Bug middle-end/83684] New: [5 Regression] ICE in maybe_diag_overlap, at gimple-ssa-warn-restrict.c:1371

2018-01-04 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83684

Bug ID: 83684
   Summary: [5 Regression] ICE in maybe_diag_overlap, at
gimple-ssa-warn-restrict.c:1371
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: doko at gcc dot gnu.org
  Target Milestone: ---

Created attachment 43036
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43036&action=edit
preprocessed source

seen building courier 0.78 on x86_64-linux-gnu, r256068.

while I get the preprocessed source from the ICE, I'm unable to reproduce this
using the preprocessed source.

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -Wdate-time -D_FORTIFY_SOURCE=2 -g
-O2 -fdebug-prefix-map=/home/
packages/tmp/gcc/courier-0.78.0=. -fstack-protector-strong -Wformat
-Werror=format-security -Wall -pedantic
 -Wall -I./.. -I.. -I./../.. -I../.. -c maildirnewshared.c  -fPIC -DPIC -o
.libs/maildirnewshared.o
during GIMPLE pass: strlen
maildirnewshared.c: In function 'maildir_newshared_next':
maildirnewshared.c:53:5: internal compiler error: in maybe_diag_overlap, at
gimple-ssa-warn-restrict.c:1371
 int maildir_newshared_next(struct maildir_newshared_enum_cb *info,
 ^~
Please submit a full bug report,
with preprocessed source if appropriate.

[Bug target/83466] Wrong TLS GD sequence for ILP32

2018-01-04 Thread sch...@linux-m68k.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83466

--- Comment #5 from Andreas Schwab  ---
This also fixes the original failure: miscompiled efl that causes python3-efl
to fail to build.

[Bug middle-end/83685] New: [8 Regression] ICE: SSA corruption

2018-01-04 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83685

Bug ID: 83685
   Summary: [8 Regression] ICE: SSA corruption
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: doko at gcc dot gnu.org
  Target Milestone: ---

seen building covered on x86_64-linux-gnu, r256068.

$ gcc -c -O2 score.i 

Unable to coalesce ssa_names 4 and 17 which are marked as MUST COALESCE.
e_4(ab) and  e_17(ab)
during RTL pass: expand
score.i: In function 'd':
score.i:5:6: internal compiler error: SSA corruption
 void d() {
  ^
Please submit a full bug report,
with preprocessed source if appropriate.

[Bug target/83387] PowerPC64: Infinite loops in do_reload() with -msoft-float

2018-01-04 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83387

--- Comment #18 from Peter Bergner  ---
Author: bergner
Date: Thu Jan  4 14:36:35 2018
New Revision: 256250

URL: https://gcc.gnu.org/viewcvs?rev=256250&root=gcc&view=rev
Log:
PR target/83387
* config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do
not
allow arguments in FP registers if TARGET_HARD_FLOAT is false.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000.c

[Bug rtl-optimization/83575] [8 Regression] ICE: verify_flow_info failed (error: multiple hot/cold transitions found)

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

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #3 from Jakub Jelinek  ---
Started with r254379.

[Bug middle-end/83680] [8 regression] Numerous regressions on arm since r256093

2018-01-04 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83680

--- Comment #5 from rsandifo at gcc dot gnu.org  
---
Author: rsandifo
Date: Thu Jan  4 14:39:03 2018
New Revision: 256251

URL: https://gcc.gnu.org/viewcvs?rev=256251&root=gcc&view=rev
Log:
PR83680: Inverted test in arm_vectorize_vec_perm_const

2018-01-04  Richard Sandiford  

gcc/
PR target/83680
* config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
test for d.testing.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/arm.c

[Bug c++/81933] [7/8 Regression] Invalid "constexpr call flows off the end of the function" error

2018-01-04 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81933

--- Comment #6 from Marek Polacek  ---
And I bet the solution will be to handle empty classes in
split_nonconstant_init_1 or somewhere similar.

[Bug middle-end/83680] [8 regression] Numerous regressions on arm since r256093

2018-01-04 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83680

rsandifo at gcc dot gnu.org  changed:

   What|Removed |Added

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

--- Comment #6 from rsandifo at gcc dot gnu.org  
---
Patch applied.

[Bug middle-end/83685] [8 Regression] ICE: SSA corruption

2018-01-04 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83685

--- Comment #1 from Matthias Klose  ---
$ cat score.i
int b;
char c;
int _setjmp();
void a();
void d() {
  int e;
  while (b) {
if (_setjmp())
  a(e);
if (c) {
  e--;
  a();
}
e++;
  }
}

[Bug target/83387] PowerPC64: Infinite loops in do_reload() with -msoft-float

2018-01-04 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83387

Peter Bergner  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
URL||https://gcc.gnu.org/ml/gcc-
   ||patches/2018-01/msg00216.ht
   ||ml
   Target Milestone|--- |8.0

[Bug target/83387] PowerPC64: Infinite loops in do_reload() with -msoft-float

2018-01-04 Thread bergner at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83387

Peter Bergner  changed:

   What|Removed |Added

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

--- Comment #19 from Peter Bergner  ---
Patch committed.

[Bug fortran/83683] eoshift accepts wrong-length boundary

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

--- Comment #1 from Thomas Koenig  ---
Another thing that is incorrectly accepted, also with
-fcheck=bounds:

program main
  implicit none
  integer :: n
  integer :: i,n1, n2, n3
  character(len=3), parameter :: e(2,3,4) =
reshape([(repeat(achar(i),3),i=iachar('a'),iachar('a')+2*3*4-1)], &
   shape(e))
  character(len=3), parameter :: bnd2(3,5) =
reshape([(repeat(achar(i),3),i=iachar('A'),iachar('A')+3*5-1)], &
   shape(bnd2))
  character(len=3) :: f2(2,3,4) ! = eoshift(e,shift=-1,boundary=bnd2);

  n = -1
  f2 = eoshift(e,shift=n,boundary=bnd2);  ! bnd2 has wrong bounds

  print '(*(1H",A,1H",:","))',f2
end program main

[Bug c++/83686] New: [8 Regression] ICE (segfault) in determine_visibility

2018-01-04 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83686

Bug ID: 83686
   Summary: [8 Regression] ICE (segfault) in determine_visibility
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: doko at gcc dot gnu.org
  Target Milestone: ---

seen with r256068 on x86_64-linux-gnu, extracted from building akonadiconsole:

$ cat monitorsmodel.ii
# 8 "" 3
class a {
  b(const &) const;
  int f;
};
template  d(c) {
  [] { enum {}; };
}
a::b(const &) const {
  auto e = f;
  d(e);
}

$ g++ -std=gnu++11 -c -O0 monitorsmodel.ii
: In instantiation of 'int d(c) [with c = int]':
:17:6:   required from here
:13:13: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.

Program received signal SIGSEGV, Segmentation fault.
0x007194d8 in determine_visibility(tree_node*) ()
(gdb) bt
#0  0x007194d8 in determine_visibility(tree_node*) ()
#1  0x007ace3e in lookup_template_class(tree_node*, tree_node*,
tree_node*, tree_node*, int, int) ()
#2  0x005962d2 in ?? ()
#3  0x007a4c9c in tsubst(tree_node*, tree_node*, int, tree_node*) ()
#4  0x007b41bf in ?? ()
#5  0x007a4fc0 in tsubst(tree_node*, tree_node*, int, tree_node*) ()
#6  0x0079f9c3 in ?? ()
#7  0x0079f1e6 in ?? ()
#8  0x0079f2fc in ?? ()
#9  0x0079f2fc in ?? ()
#10 0x007a0fc3 in tsubst_lambda_expr(tree_node*, tree_node*, int,
tree_node*) ()
#11 0x007a2472 in ?? ()
#12 0x0079f361 in ?? ()
#13 0x0079ed96 in ?? ()
#14 0x0079f1e6 in ?? ()
#15 0x0079f2fc in ?? ()
#16 0x0079d551 in instantiate_decl(tree_node*, bool, bool) ()
#17 0x007b76ec in instantiate_pending_templates(int) ()
#18 0x0071cc2c in c_parse_final_cleanups() ()
#19 0x00be025f in ?? ()
#20 0x006b2830 in toplev::main(int, char**) ()
#21 0x006b4b0b in main ()

[Bug target/82096] ICE in int_mode_for_mode, at stor-layout.c:403 with arm-linux-gnueabi

2018-01-04 Thread sudi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82096

sudi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed|2017-12-19 00:00:00 |2018-01-04
 Ever confirmed|0   |1

--- Comment #6 from sudi at gcc dot gnu.org ---
Patch submitted 

https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00219.html

[Bug c++/83686] [8 Regression] ICE (segfault) in determine_visibility

2018-01-04 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83686

Markus Trippelsdorf  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||trippels at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #1 from Markus Trippelsdorf  ---
dup.

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

[Bug c++/82882] [8 regression] ICE Segmentation fault

2018-01-04 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82882

Markus Trippelsdorf  changed:

   What|Removed |Added

 CC||doko at gcc dot gnu.org

--- Comment #5 from Markus Trippelsdorf  ---
*** Bug 83686 has been marked as a duplicate of this bug. ***

[Bug target/83687] New: ARM NEON invalid optimisation for vabd/vabdl

2018-01-04 Thread nicholas at nicholaswilson dot me.uk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83687

Bug ID: 83687
   Summary: ARM NEON invalid optimisation for vabd/vabdl
   Product: gcc
   Version: 7.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: nicholas at nicholaswilson dot me.uk
  Target Milestone: ---

When compiling for ARM, the optimiser appears to do an invalid optimisation, by
attempting to the reduce the sequence subtract-then-abs into the single
instruction absolute-difference. Unfortunately the two are *not* equivalent.

=== Test file (test.c) ===
// COMPILE WITH: gcc -c -O1 -o test.o test.c -mfpu=neon
#include 

int8_t testFunction1(int8_t a, int8_t b) {
  volatile int8x16_t sub = vsubq_s8(vdupq_n_s8(a), vdupq_n_s8(b));
  int8x16_t abs = vabsq_s8(sub);
  return vgetq_lane_s8(abs, 0);
}

int8_t testFunction2(int8_t a, int8_t b) {
  int8x16_t sub = vsubq_s8(vdupq_n_s8(a), vdupq_n_s8(b));
  int8x16_t abs = vabsq_s8(sub);
  return vgetq_lane_s8(abs, 0);
}

=== Result ===
$ objdump -d test.o
test.o: file format elf32-littlearm
Disassembly of section .text:

 :
   0:   e24dd010sub sp, sp, #16
   4:   eee00b90vdup.8  q8, r0
   8:   eee21b90vdup.8  q9, r1
   c:   f34008e2vsub.i8 q8, q8, q9
  10:   f44d0adfvst1.64 {d16-d17}, [sp :64]
  14:   f46d0adfvld1.64 {d16-d17}, [sp :64]
  18:   f3f10360vabs.s8 q8, q8
  1c:   ee500b90vmov.s8 r0, d16[0]
  20:   e28dd010add sp, sp, #16
  24:   e12fff1ebx  lr

0028 :
  28:   eee00b90vdup.8  q8, r0
  2c:   eee21b90vdup.8  q9, r1
  30:   f24007e2vabd.s8 q8, q8, q9
  34:   ee500b90vmov.s8 r0, d16[0]
  38:   e12fff1ebx  lr

As you can see, the vsub/vabs sequence is optimised to vabd unless "volatile"
is used to prevent it.

=== Second test, to show that the behaviour differs ===
// COMPILE WITH: gcc -o a.out test.o main.c && ./a.out
#include 
#include 

int8_t testFunction1(int8_t a, int8_t b);
int8_t testFunction2(int8_t a, int8_t b);

int main() {
  printf("vabs(vsub(-100,100)) = %u\n", (uint8_t)testFunction1(-100, 100));
  printf("vabd(-100,100) = %u\n", (uint8_t)testFunction2(-100, 100));
  return 0;
}

// Result, prints:
//   vabs(vsub(-100,100)) = 56  [ because vsub(-100,100) wraps to 56 ]
//   vabd(-100,100) = 200   [ because vabd does abs over the 9-bit diff ]


=== Final observations ===

* Behaviour does not repro at -O0, does at -O1, -O2.
* Behaviour does not repro with the following set of options, but does repro
  if any of these options are removed:
-O1 -fno-if-conversion -fno-forward-propagate -fno-tree-copy-prop \
-fno-tree-copyrename -fno-tree-dominator-opts -fno-tree-ter

Currently, I'm using the "volatile" hack to prevent the vabd instruction from
being emitted. This hurts perf a bit (redundant store/load to the stack) but at
least it works.

Tested with: GCC 4.6.0, GCC 6.3.0, and GCC 7.2.0.
Hardware: Raspberry Pi, ARMv7l BCM2835 and BCM2709

=== GCC 6.3 configuration ===
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Raspbian 6.3.0-18+rpi1'
--with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs
--enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared
--enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/
--enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm
--disable-libquadmath --enable-plugin --with-system-zlib
--disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf
--with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--with-target-system-zlib --enable-objc-gc=auto --enable-multiarch
--disable-sjlj-exceptions --with-arch=armv6 --with-fpu=vfp --with-float=hard
--enable-checking=release --build=arm-linux-gnueabihf
--host=arm-linux-gnueabihf --target=arm-linux-gnueabihf
Thread model: posix
gcc version 6.3.0 20170516 (Raspbian 6.3.0-18+rpi1)

=== GCC 7.2.0 configuration ===
Using built-in specs.
COLLECT_GCC=/usr/local/gcc-7.2.0/bin/gcc-7.2.0
COLLECT_LTO_WRAPPER=/usr/local/gcc-7.2.0/libexec/gcc/arm-linux-gnueabihf/7.2.0/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../gcc-7.2.0/configure -v --enable-languages=c,c++,fortran
--prefix=/usr/local/gcc-7.2.0 --program-suffix=-7.2.0 --with-arch=armv6
--with-fpu=vfp --with-float=hard -

[Bug other/82352] [7 Regression] comdat-local function called by void h::i() outside its comdat

2018-01-04 Thread holger.hopp at sap dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82352

--- Comment #6 from Holger Hopp  ---
The patch fixes my >10 original issues with gcc-7.
It also fixes similar (other, fewer) issues with gcc-6 (gcc-6.2.1 was ok,
gcc-6.3.1 not ok, with patch ok).
So please downport this patch also to gcc-6 branch.
Thanks!

[Bug c/83688] New: Please check if buffers may overlap when copying strings

2018-01-04 Thread bugzi...@poradnik-webmastera.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83688

Bug ID: 83688
   Summary: Please check if buffers may overlap when copying
strings
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bugzi...@poradnik-webmastera.com
  Target Milestone: ---

Functions like strcpy internally use memcpy to copy data. This may cause
problems when someone will try to use them to move string in buffer, e.g. to
strip prefix. gcc is able to detect if overlapping buffers are used with
memcpy. Please add similar diagnostics to strcpy/sprintf functions too.

[code]
#include 
#include 

char buf[20];

void test()
{
strcpy(buf, buf+5);
memcpy(buf, buf+5, strlen(buf+5)+1);

snprintf(buf, sizeof(buf), "%s", buf+5);

memcpy(buf, buf+5, 10);
}
[/code]

[out]
$ g++ -c -o test.o test.cc -O3 -Wall -Wextra -Wformat-overflow
-Wformat-truncation -Wstringop-overflow=2 -Wstringop-truncation
test.cc: In function ‘void test()’:
test.cc:13:11: warning: ‘void* memcpy(void*, const void*, size_t)’ accessing 10
bytes at offsets 0 and 5 overlaps 5 bytes at offset 5 [-Wrestrict]
 memcpy(buf, buf+5, 10);
 ~~^~~~

$ g++ --version
g++ (GCC) 8.0.0 20171231 (experimental)
[/out]

[Bug c++/83667] ICE in dump_function_decl on a thunk with variadic arguments

2018-01-04 Thread nathan at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83667

--- Comment #3 from Nathan Sidwell  ---
Author: nathan
Date: Thu Jan  4 15:49:28 2018
New Revision: 256254

URL: https://gcc.gnu.org/viewcvs?rev=256254&root=gcc&view=rev
Log:
[PR c++/83667] Fix tree_dump ICE

https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00218.html
PR c++/83667
* g++.dg/ipa/pr83667.C: Fix regex, require alias.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/ipa/pr83667.C

[Bug c/83688] Please check if buffers may overlap when copying strings

2018-01-04 Thread bugzi...@poradnik-webmastera.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83688

--- Comment #1 from Daniel Fruzynski  ---
This also would allow to catch code which use sprintf to concatenate strings,
what is an undefined behavior (snippet from
https://linux.die.net/man/3/snprintf):

sprintf(buf, "%s some further text", buf);

[Bug c/83559] [8 regression] -Wsuggest-attribute=const conflicts with -Wattributes warning about const attribute on function returning void

2018-01-04 Thread egallager at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83559

--- Comment #5 from Eric Gallager  ---
(In reply to Martin Sebor from comment #4)
> Fixed in r256188.

Thanks for the quick fix! One thing I'm still wondering, though, what's the
recommended way for maintaining compatibility with old compilers that still
have the old -Wsuggest-attribute=const? A bunch of ifdefs?

[Bug c/83688] Please check if buffers may overlap when copying strings

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

Martin Sebor  changed:

   What|Removed |Added

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

--- Comment #2 from Martin Sebor  ---
Strcpy is already handled by -Wrestrict, as are all other string built-ins. 
There may be gaps in the coverage of some of them due to weaknesses in
optimizations but if you find cases where GCC doesn't warn but should please
open bugs for them.

I posted a patch to add -Wrestrict for sprintf back in July
(https://gcc.gnu.org/ml/gcc-patches/2017-07/msg00036.html) but for various
reasons it didn't make it into GCC 8.  I'm hoping to get to it in GCC 9 so let
me use this request to track that task.

[Bug c/83688] Please check if buffers may overlap when copying strings using sprintf

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

Martin Sebor  changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |msebor at gcc dot 
gnu.org
Summary|Please check if buffers may |Please check if buffers may
   |overlap when copying|overlap when copying
   |strings |strings using sprintf

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

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

Martin Sebor  changed:

   What|Removed |Added

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

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

[Bug c++/83689] New: Internal compiler error using is_trivially_default_constructible on array of nontrivially-destructible types

2018-01-04 Thread zhangxy at google dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83689

Bug ID: 83689
   Summary: Internal compiler error using
is_trivially_default_constructible on array of
nontrivially-destructible types
   Product: gcc
   Version: 7.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zhangxy at google dot com
  Target Milestone: ---

The following code triggers internal compiler error (see
https://godbolt.org/g/dXRbdK for more details and comparison with clang):

/opt/compiler-explorer/gcc-7.2.0/include/c++/7.2.0/type_traits: In
instantiation of 'struct std::is_trivially_constructible':
/opt/compiler-explorer/gcc-7.2.0/include/c++/7.2.0/type_traits:1373:12:  
required from 'struct
std::is_trivially_default_constructible'
31 : :31:84:   required from here
/opt/compiler-explorer/gcc-7.2.0/include/c++/7.2.0/type_traits:1366:12:
internal compiler error: in build_value_init_noctor, at cp/init.c:483
 struct is_trivially_constructible
^~
mmap: Invalid argument

```
#include 

class NontrivialDefaultCtor {
 public:
  NontrivialDefaultCtor() {}
};

void f() {
  using NontrivialDefaultCtor10 = NontrivialDefaultCtor[10];
 
static_assert(!std::is_trivially_default_constructible::value,
  "This should be false");
}
```

[Bug debug/83585] [8 Regression] Assembler messages: Error: can't resolve `.text' {.text section} - `.LCOLDB0' {.text.unlikely section}

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

--- Comment #7 from Jakub Jelinek  ---
Author: jakub
Date: Thu Jan  4 17:47:55 2018
New Revision: 256256

URL: https://gcc.gnu.org/viewcvs?rev=256256&root=gcc&view=rev
Log:
PR debug/83585
* bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
to switched_sections.

* gcc.dg/pr83585.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr83585.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/bb-reorder.c
trunk/gcc/testsuite/ChangeLog

[Bug debug/83585] [8 Regression] Assembler messages: Error: can't resolve `.text' {.text section} - `.LCOLDB0' {.text.unlikely section}

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

Jakub Jelinek  changed:

   What|Removed |Added

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

--- Comment #8 from Jakub Jelinek  ---
Fixed.

[Bug c++/83689] Internal compiler error using is_trivially_default_constructible on array of nontrivially-destructible types

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

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-04
 CC||jakub at gcc dot gnu.org,
   ||ville at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek  ---
Reduced testcase without headers:

template
struct A { static constexpr _Tp a = __v; };
template
struct B : public A {};
struct C { C () {} };

void
foo ()
{
  using D = C[10];
  static_assert (!B::a, "");
}

This got fixed with r248788 aka PR80812.  Ville, shall we backport?

[Bug c++/83689] Internal compiler error using is_trivially_default_constructible on array of nontrivially-destructible types

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

--- Comment #2 from Jakub Jelinek  ---
#include 

struct X { X() {} };

void test01()
{
  static_assert(std::is_trivially_constructible::value);
}

ICEs too (but not std::is_constructible).

[Bug c/83688] Please check if buffers may overlap when copying strings using sprintf

2018-01-04 Thread bugzi...@poradnik-webmastera.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83688

--- Comment #3 from Daniel Fruzynski  ---
Looks that something is not working properly. I have pasted output from
compilation of function in 1st post, and -Wrestrict complained only about last
memcpy call. Please take a look on this.

BTW, string concatenation using sprintf causes -Wformat-overflow warning, so
some protection against this is present. However this message does not say
anything that this is undefined behavior per C standard.

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

2018-01-04 Thread s...@li-snyder.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83690

Bug ID: 83690
   Summary: [8 regression] spurious unused variable warings for
variables used only in static_assert
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: s...@li-snyder.org
  Target Milestone: ---

As of 

gcc version 8.0.0 20180102 (experimental) (GCC) 

gcc gives an unused-but-set warning for variables that are used only in a 
static_assert.

For example, with this source:

--- x.cc -
void foo()
{
  constexpr bool foo = true;
  static_assert(foo, "foo");
}
--

we get a warning:

$ cc1plus -std=c++17 x.cc -quiet -Wall
x.cc: In function ‘void foo()’:
x.cc:3:18: warning: variable ‘foo’ set but not used [-Wunused-but-set-variable]
   constexpr bool foo = true;
  ^~~

We do not get this warning with gcc 7.2.1.

[Bug target/83691] New: Invalid gpr_reg_operand handling in powerpcspe port

2018-01-04 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83691

Bug ID: 83691
   Summary: Invalid gpr_reg_operand handling in powerpcspe port
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rsandifo at gcc dot gnu.org
  Target Milestone: ---
Target: powerpc-eabispe

The powerpcspe adddi3 pattern takes gpr_reg_operands:

(define_expand "add3"
  [(set (match_operand:SDI 0 "gpc_reg_operand" "")
(plus:SDI (match_operand:SDI 1 "gpc_reg_operand" "")
  (match_operand:SDI 2 "reg_or_add_cint_operand" "")))]

and splits the addition into two 32-bit instructions:

  rtx lo0 = gen_lowpart (SImode, operands[0]);
  rtx lo1 = gen_lowpart (SImode, operands[1]);
  rtx lo2 = gen_lowpart (SImode, operands[2]);
  rtx hi0 = gen_highpart (SImode, operands[0]);
  rtx hi1 = gen_highpart (SImode, operands[1]);
  rtx hi2 = gen_highpart_mode (SImode, DImode, operands[2]);

  if (!reg_or_short_operand (lo2, SImode))
lo2 = force_reg (SImode, lo2);
  if (!adde_operand (hi2, SImode))
hi2 = force_reg (SImode, hi2);

  emit_insn (gen_addsi3_carry (lo0, lo1, lo2));
  emit_insn (gen_addsi3_carry_in (hi0, hi1, hi2));

However, gpr_reg_operand rejects subregs that satisfy invalid_e500_subreg:

  if ((TARGET_E500_DOUBLE || TARGET_SPE) && invalid_e500_subreg (op, mode))
return 0;

and invalid_e500_subreg rejects subregs of vectors for SImode but not
for DImode:

  if (TARGET_SPE
  && GET_CODE (op) == SUBREG
  && mode == SImode
  && REG_P (SUBREG_REG (op))
  && SPE_VECTOR_MODE (GET_MODE (SUBREG_REG (op
return true;

This means that gpr_reg_operand accepts things for DImode that
are invalid when split to SImode.  An example of this is
gcc.dg/vect/vect-singleton_1.c when compiled at -O3, where we get:

error: unrecognizable insn:
 TEST (long long, int64x1_t, s64)
 ^~~~
(insn 10 9 11 2 (parallel [
(set (subreg:SI (reg:DI 163) 4)
(plus:SI (subreg:SI (reg/v:V1DI 159 [ a ]) 4)
(reg:SI 164)))
(set (reg:SI 76 ca)
(ltu:SI (plus:SI (subreg:SI (reg/v:V1DI 159 [ a ]) 4)
(reg:SI 164))
(subreg:SI (reg/v:V1DI 159 [ a ]) 4)))
]) "../../../testsuite/gcc.dg/./vect/vect-singleton_1.c":28 -1
 (nil))
during RTL pass: vregs

This particular testcase started failing with r256209, but that
really just exposed an existing problem.

[Bug target/81084] [8 Regression] powerpcspe port full of confusing configury / command-line options not related to SPE

2018-01-04 Thread rsandifo at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81084

rsandifo at gcc dot gnu.org  changed:

   What|Removed |Added

 CC||rsandifo at gcc dot gnu.org

--- Comment #7 from rsandifo at gcc dot gnu.org  
---
If we do keep the port, PR83691 should be fixed by someone who can
test it.  I can write a candidate patch if the feeling is that
I broke it with r256209, but it would mean changing a core pattern
like adddi3, which really needs testing on a real target.

[Bug c++/81327] [8 Regression] cast to void* does not suppress -Wclass-memaccess

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

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |8.0
Summary|cast to void* does not  |[8 Regression] cast to
   |suppress -Wclass-memaccess  |void* does not suppress
   ||-Wclass-memaccess

--- Comment #4 from Jakub Jelinek  ---
Because this warning is included in -Wall, this is a regression.

[Bug target/83507] [8 Regression] ICE in internal_dfa_insn_code_* for powerpc targets

2018-01-04 Thread asolokha at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83507

--- Comment #3 from Arseny Solokha  ---
I've managed to generate a couple of additional testcases for this PR in
December. Next week I'll check whether this ICE is still there w/ my setup.

[Bug fortran/83679] [6 regression] r256113 causes regression on pr77942.f90

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

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-01-04
 CC||kargl at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from kargl at gcc dot gnu.org ---
I have a patch that I'm testing.

[Bug fortran/83679] [6 regression] r256113 causes regression on pr77942.f90

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

kargl at gcc dot gnu.org changed:

   What|Removed |Added

   Priority|P3  |P4
  Known to work||8.0
Version|8.0 |7.2.0
   Assignee|unassigned at gcc dot gnu.org  |kargl at gcc dot gnu.org
   Target Milestone|--- |7.2
  Known to fail||7.2.1

[Bug fortran/83679] [6 regression] r256113 causes regression on pr77942.f90

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

kargl at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|7.2 |6.4
  Known to fail||6.4.1

[Bug c/83688] Please check if buffers may overlap when copying strings using sprintf

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

--- Comment #4 from Martin Sebor  ---
There is nothing to indicate that the first call to memcpy() in comment #0
overlaps so -Wrestrict doesn't warn for it.

One thing to note is that the warning treats raw memory functions slightly
differently than string functions because the former tend to be used to copy
regions of the same array within itself, while string functions don't.  So
while the first memcpy call doesn't trigger a warning, if it were replaced with
one to strncpy, GCC would warn:

In file included from /usr/include/string.h:630,
 from d.c:3:
pr83688.c: In function ‘test’:
pr83688.c:11:5: warning: ‘__builtin_strncpy’ accessing 1 or more bytes at
offsets 0 and 5 may overlap up to 9223372036854775802 bytes at offset
[9223372036854775806, 5] [-Wrestrict]
 strncpy (buf, buf+5, strlen(buf+5)+1);
 ^~~

(The numbers it prints could stand to be improved.)

Regarding -Wformat-overflow, it does (obviously) check for sprintf overflow. 
It doesn't check for overlap like in this call:

  sprintf (d + i, "%s", d);

That's what the July 2017 patch added.  In case of either warning, I don't
think their quality would be improved by explicitly saying that overflow or
overlap is undefined.  Very few GCC warnings do, and I feel that describing the
problem is more informative than saying that something undefined has happened. 
It would of course be possible to print a note after the warning saying that
it's undefined.  But I'd rather have the note include additional detail about
the context of the problem than state (what should be) obvious.

[Bug fortran/83679] [6 regression] r256113 causes regression on pr77942.f90

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

--- Comment #2 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Thu Jan  4 20:16:23 2018
New Revision: 256263

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

PR Fortran/83679
* simplify.c (gfc_simplify_cshift): Restore early return for zero-sized
array.  Update Copyright year while here.

Modified:
branches/gcc-7-branch/gcc/fortran/ChangeLog
branches/gcc-7-branch/gcc/fortran/simplify.c

[Bug fortran/83679] [6 regression] r256113 causes regression on pr77942.f90

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

--- Comment #3 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Thu Jan  4 20:18:58 2018
New Revision: 256264

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

PR Fortran/83679
* simplify.c (gfc_simplify_cshift): Restore early return for zero-sized
array.  Update Copyright year while here.

Modified:
branches/gcc-6-branch/gcc/fortran/ChangeLog
branches/gcc-6-branch/gcc/fortran/simplify.c

[Bug c++/81327] [8 Regression] cast to void* does not suppress -Wclass-memaccess

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

--- Comment #5 from Martin Sebor  ---
I don't consider this a regression.  The warnings are justified and it wasn't a
design goal to let casts suppress them.  I agree it would be useful for
compatibility with Clang (that's why I raised the bug), but making it possible
is an enhancement.  Until it's implemented, the warnings can be selectively
suppressed via GCC's diagnostic pragmas:

void g (struct S *s)
{
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wclass-memaccess"
  __builtin_memset ((void*)s, 0, sizeof *s);
#pragma GCC diagnostic pop
}

[Bug fortran/83679] [6 regression] r256113 causes regression on pr77942.f90

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

kargl at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from kargl at gcc dot gnu.org ---
Fixed on 6 and 7 branches.  Regression does not occur on trunk.  Thanks for the
bug report.

[Bug c/83688] Please check if buffers may overlap when copying strings using sprintf

2018-01-04 Thread bugzi...@poradnik-webmastera.com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83688

--- Comment #5 from Daniel Fruzynski  ---
> There is nothing to indicate that the first call to memcpy() in comment #0
> overlaps so -Wrestrict doesn't warn for it.

I thought that fix for bug 83373 will somehow help here. gcc could guess that
memcpy will copy from 1 to 15 bytes, which may overlap destination. In fact
this could help in all cases here except last memcpy.

[Bug fortran/83683] eoshift accepts wrong-length boundary

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

--- Comment #2 from Thomas Koenig  ---
Author: tkoenig
Date: Thu Jan  4 21:04:23 2018
New Revision: 256265

URL: https://gcc.gnu.org/viewcvs?rev=256265&root=gcc&view=rev
Log:
2018-01-04  Thomas Koenig  

PR fortran/83683
PR fortran/45689
* check.c (gfc_check_eoshift): Check for string length and
for conformance of boundary.
* intrinsic.c (add_functions): Add gfc_simplify_eoshift.
* intrinsic.h: Add prototype for gfc_simplify_eoshift.
* simplify.c (gfc_simplify_eoshift): New function.

2018-01-04  Thomas Koenig  

PR fortran/83683
PR fortran/45689
* gfortran.dg/eoshift_8.f90: New test.
* gfortran.dg/simplify_eoshift_1.f90: New test.


Added:
trunk/gcc/testsuite/gfortran.dg/eoshift_8.f90
trunk/gcc/testsuite/gfortran.dg/simplify_eoshift_1.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/check.c
trunk/gcc/fortran/intrinsic.c
trunk/gcc/fortran/intrinsic.h
trunk/gcc/fortran/simplify.c
trunk/gcc/testsuite/ChangeLog

[Bug fortran/45689] [F03] Missing transformational intrinsic in the trans_func_f2003 list

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

--- Comment #18 from Thomas Koenig  ---
Author: tkoenig
Date: Thu Jan  4 21:04:23 2018
New Revision: 256265

URL: https://gcc.gnu.org/viewcvs?rev=256265&root=gcc&view=rev
Log:
2018-01-04  Thomas Koenig  

PR fortran/83683
PR fortran/45689
* check.c (gfc_check_eoshift): Check for string length and
for conformance of boundary.
* intrinsic.c (add_functions): Add gfc_simplify_eoshift.
* intrinsic.h: Add prototype for gfc_simplify_eoshift.
* simplify.c (gfc_simplify_eoshift): New function.

2018-01-04  Thomas Koenig  

PR fortran/83683
PR fortran/45689
* gfortran.dg/eoshift_8.f90: New test.
* gfortran.dg/simplify_eoshift_1.f90: New test.


Added:
trunk/gcc/testsuite/gfortran.dg/eoshift_8.f90
trunk/gcc/testsuite/gfortran.dg/simplify_eoshift_1.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/check.c
trunk/gcc/fortran/intrinsic.c
trunk/gcc/fortran/intrinsic.h
trunk/gcc/fortran/simplify.c
trunk/gcc/testsuite/ChangeLog

[Bug fortran/30932] [meta-bug] fortran intrinsics

2018-01-04 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30932
Bug 30932 depends on bug 45689, which changed state.

Bug 45689 Summary: [F03] Missing transformational intrinsic in the 
trans_func_f2003 list
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45689

   What|Removed |Added

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

[Bug fortran/45689] [F03] Missing transformational intrinsic in the trans_func_f2003 list

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

Thomas Koenig  changed:

   What|Removed |Added

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

--- Comment #19 from Thomas Koenig  ---
Fixed on trunk, closing.

[Bug fortran/20585] [meta-bug] Fortran 2003 support

2018-01-04 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20585
Bug 20585 depends on bug 45689, which changed state.

Bug 45689 Summary: [F03] Missing transformational intrinsic in the 
trans_func_f2003 list
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45689

   What|Removed |Added

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

[Bug fortran/31392] [meta-bug] gfortran problems with initialization

2018-01-04 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31392
Bug 31392 depends on bug 45689, which changed state.

Bug 45689 Summary: [F03] Missing transformational intrinsic in the 
trans_func_f2003 list
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45689

   What|Removed |Added

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

[Bug fortran/83683] eoshift accepts wrong-length boundary

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

Thomas Koenig  changed:

   What|Removed |Added

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

--- Comment #3 from Thomas Koenig  ---
Fixed, closing.

[Bug c++/81327] [8 Regression] cast to void* does not suppress -Wclass-memaccess

2018-01-04 Thread ville.voutilainen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81327

--- Comment #6 from Ville Voutilainen  ---
As stated in the other comments, this breaks *users* of existing Qt versions.
Any fix would apply to newer versions only. QVector bit-blasts an object of a
type with a virtual table over an object of that same type, so it doesn't
change the value of the vptr. It does a cast to void* to try and tell the
compiler it knows what it's doing. I don't consider it feasible nor palatable
to suggest said users to have to add warning pragmas everywhere they might
include QVector.

As far as the bit-blast goes, I plan to write a standard change proposal to
make it well-defined.

Please don't release GCC 8 without fixing this problem.

[Bug other/82352] [7 Regression] comdat-local function called by void h::i() outside its comdat

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

--- Comment #7 from Jakub Jelinek  ---
Author: jakub
Date: Thu Jan  4 21:13:17 2018
New Revision: 256266

URL: https://gcc.gnu.org/viewcvs?rev=256266&root=gcc&view=rev
Log:
PR ipa/82352
* g++.dg/ipa/pr82352.C (size_t): Define to __SIZE_TYPE__ instead of
long unsigned int.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/ipa/pr82352.C

[Bug middle-end/81897] [6/7/8 Regression] spurious -Wmaybe-uninitialized warning

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

--- Comment #10 from Aldy Hernandez  ---
Created attachment 43037
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43037&action=edit
proposed UNTESTED patch

Everything is so easy once Jeff does all the analysis :).

As mentioned, there is no rhyme or reason to the seemingly random choice of
starting the chain at the immediate dominator of the potentially uninitialized
PHI argument.  The ENTRY block seems like a saner solution, but alas
compute_control_dep_chain() and friends can't handle computing dependency
chains starting at the entry block.

Once that is fixed, we have a shot at analyzing the dependency chain and
calculating if anything invalidated it.  At which point, my code was broken.

I feel like I'm just echoing Jeff :).

The attached UNTESTED patch fixes the PR, while surviving:

  make check-gcc RUNTESTFLAGS=dg.exp=uninit*

I'll go through testing and post if I didn't break the world.

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

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

--- Comment #39 from Rainer Orth  ---
Author: ro
Date: Thu Jan  4 21:47:35 2018
New Revision: 256267

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

PR bootstrap/81926
* cgraphunit.c (symbol_table::compile): Switch to text_section
before calling assembly_start debug hook.
* run-rtl-passes.c (run_rtl_passes): Likewise.
Include output.h.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/cgraphunit.c
trunk/gcc/run-rtl-passes.c

  1   2   >