[Bug target/88640] ICE in mark_reachable_handlers, at tree-eh.c:3926

2018-12-31 Thread segher at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88640

Segher Boessenkool  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-12-31
 Ever confirmed|0   |1

--- Comment #1 from Segher Boessenkool  ---
I get this, on a Power8 with checking enabled:

88640.cc: In function 'void c()':
88640.cc:2:6: error: statement marked for throw, but doesn't
 void c() try { a = 1.0 / __builtin_sqrt(b) * a; } catch (...) {
  ^
_7 = _2;
during GIMPLE pass: recip
88640.cc:2:6: internal compiler error: verify_gimple failed
0x10c7772b verify_gimple_in_cfg(function*, bool)
/home/segher/src/gcc/gcc/tree-cfg.c:5425
0x10ae1f03 execute_function_todo
/home/segher/src/gcc/gcc/passes.c:1943
0x10ae359b do_per_function
/home/segher/src/gcc/gcc/passes.c:1621
0x10ae37bb execute_todo
/home/segher/src/gcc/gcc/passes.c:1997

[Bug target/88616] [9 Regression] ICE in gimplify_expr at gcc/gimplify.c:13363

2018-12-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88616

Martin Liška  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed|2018-12-28 00:00:00 |2018-12-31
 CC||jason at gcc dot gnu.org
  Known to work||8.2.0
Summary|ICE in gimplify_expr at |[9 Regression] ICE in
   |gcc/gimplify.c:13363|gimplify_expr at
   ||gcc/gimplify.c:13363
 Ever confirmed|0   |1
  Known to fail||9.0

--- Comment #2 from Martin Liška  ---
If I see correctly, started with r265788.

[Bug c/88430] -Wmissing-attributes warnings when including libquadmath headers

2018-12-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88430

Martin Liška  changed:

   What|Removed |Added

 CC||marxin at gcc dot gnu.org

--- Comment #6 from Martin Liška  ---
Jakub: can it be closed as resolved?

[Bug target/86952] Avoid jump table for switch statement with -mindirect-branch=thunk

2018-12-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86952

--- Comment #10 from Martin Liška  ---
H.J. : Can you please run updated benchmark on a recent machine and provide
slow down numbers for that?

[Bug libgcc/88641] New: crtstuff.c ctors/dtors list breaks with -fdata-sections

2018-12-31 Thread ambrop7 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88641

Bug ID: 88641
   Summary: crtstuff.c ctors/dtors list breaks with
-fdata-sections
   Product: gcc
   Version: 8.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgcc
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ambrop7 at gmail dot com
  Target Milestone: ---

Created attachment 45309
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45309&action=edit
Patch to compile crtstuff.c with -fno-function-sections and -fno-data-sections.

Breakage of ctors/dtors lists in crtbegin.o/crtend.o may occur when
CFLAGS_FOR_TARGET contains -fdata-sections, leading to a crash at program
startup.

The issue is in libgcc/crtstuff.c where __LIBGCC_CTORS_SECTION_ASM_OP__ is
used. I have experienced this with the MicroBlaze architecture, but any
architecture where this code path is used has to be affected. Specifically, the
problem is in the following code:

static func_ptr force_to_data[1] __attribute__ ((__used__)) = { };
asm (__LIBGCC_CTORS_SECTION_ASM_OP__);
STATIC func_ptr __CTOR_LIST__[1]
  __attribute__ ((__used__, aligned(sizeof(func_ptr
  = { (func_ptr) (-1) };

Here asm is used to make the variable go into a specific section, usually
".ctors" or ".dtors". However, with -fdata-sections, gcc will anyway put it
into its own section such as ".data.__CTOR_LIST__", and the asm will have no
effect. The result is that these variables will not be found by the linker
script using expressions like "KEEP (*crtbegin.o(.ctors))", which will cause a
runtime failure in __do_global_ctors_aux as the ctors list will have no
terminator.

I believe that -ffunction-section could also cause problems in the crtstuff
code, in particular where __LIBGCC_TEXT_SECTION_ASM_OP__ is used; there seems
to be an assumption that all functions are by default placed in the ".text"
section, which is not true with -ffunction-sections.

I suggest fixing these issues by ensuring that crtstuff.c is compiled with
-fno-function-sections and -fno-data-sections. I am attaching a patch that I
have verified fixes the ctors/dtors section problem.

[Bug c/88642] New: Accepts ill-formed program with invalid scalar initialization syntax.

2018-12-31 Thread anders.granlund.0 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88642

Bug ID: 88642
   Summary: Accepts ill-formed program with invalid scalar
initialization syntax.
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: anders.granlund.0 at gmail dot com
  Target Milestone: ---

Test program (test.c):

  int main()
  {
int x = { { 0 } };
  }

Compilation command line:

  clang prog.c -Wall -Wextra -std=c11 -pedantic-errors

Observed behaviour:

  No error message outputed. Only warning messages outputed.

Expected behaviour:

  An error message outputed.

  The initalizer  0  or  { 0 }  is valid according to 6.7.9/11, but not
  { { 0 } } .

Note:

  Clang gives the expected error message for the program.

[Bug c/88582] GCC does not unqualify return types in the case of _Atomic qualified return type.

2018-12-31 Thread anders.granlund.0 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88582

Anders Granlund  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #3 from Anders Granlund  ---
Probably a defect in the standard.

The behaviour seems reasonable since the  _Atomic  type qualifier is different
from the other type qualifiers in that it may change the size, represenation
and alignment of a type.

[Bug lto/88643] New: -Wl,--wrap not supported with LTO

2018-12-31 Thread marxin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88643

Bug ID: 88643
   Summary: -Wl,--wrap not supported with LTO
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: lto
  Assignee: unassigned at gcc dot gnu.org
  Reporter: marxin at gcc dot gnu.org
CC: hubicka at gcc dot gnu.org, marxin at gcc dot gnu.org
  Target Milestone: ---

Seen in cmocka package:

$ cat foo.h
int cook(void);

$ cat foo.c
#include "foo.h"

int __wrap_cook(void)
{
  return 0;
}

$ cat bar.c
int cook(void)
{
  return -1;
}

$ cat main.c
#include "foo.h"

int main()
{
  if (cook () == -1)
__builtin_abort ();

  return 0;
}

$ gcc main.c foo.c bar.c -Wl,--wrap=cook && ./a.out
(ok)

$ gcc main.c foo.c bar.c -Wl,--wrap=cook -flto && ./a.out 
Aborted (core dumped)

$ cat main.res
3
main.o 2
198 afba4c81ec45b173 PREVAILING_DEF main
215 afba4c81ec45b173 RESOLVED_IR cook
foo.o 1
197 34da4dbae42a1068 PREVAILING_DEF_IRONLY __wrap_cook
bar.o 1
197 d2fb0e1d62586272 PREVAILING_DEF_IRONLY cook

I'm not sure there's an API for linker plugin to resolve a symbol with a
deferent one. Honza?

[Bug target/88644] New: Unexpected pub type info eliminated after r 246973 (causes pubtypes-*.c to regress).

2018-12-31 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88644

Bug ID: 88644
   Summary: Unexpected pub type info eliminated after r 246973
(causes pubtypes-*.c to regress).
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: iains at gcc dot gnu.org
  Target Milestone: ---

r246973 addresses  PR debug/80263 with :
* dwarf2out.c (modified_type_die): Try harder not to emit internal
sizetype type into debug info.

This appears to do the expected thing for debug_info on Darwin (i.e. same as
Linux):

 .byte   0x7 # DW_AT_encoding
-   .ascii "sizetype\0" # DW_AT_name
-   .byte   0x2 # uleb128 0x2; (DIE (0x18c) DW_TAG_base_type)
+   .ascii "long unsigned int\0"# DW_AT_name
+   .byte   0x2 # uleb128 0x2; (DIE (0x1a4) DW_TAG_base_type)

and..
.byte   0x8 # DW_AT_byte_size
-   .byte   0x7 # DW_AT_encoding
-   .ascii "long unsigned int\0"# DW_AT_name
-   .byte   0x5 # uleb128 0x5; (DIE (0x1ae) DW_TAG_pointer_type)
-   .byte   0x8 # DW_AT_byte_size
-   .byte   0x4 # uleb128 0x4; (DIE (0x1b0) DW_TAG_typedef)
+   .byte   0x4 # uleb128 0x4; (DIE (0x1b3) DW_TAG_typedef)

but it has an unexpected effect on pubtypes

.ascii "sizetype\0" # external name
-   .long   0x18c   # DIE offset
+   .long   0x1a4   # DIE offset
+   .byte   0x90# GDB-index flags
.ascii "char\0" # external name
-   .long   0x199   # DIE offset
-   .ascii "long unsigned int\0"# external name
-   .long   0x1b0   # DIE offset
+   .long   0x1b3   # DIE offset
+   .byte   0x90# GDB-index flags

So .. here the sizetype is still emitted (not intended) and the underlying type
is not.

Linux does the expected thing.

AFAICT, the only difference appears to be that "long unsigned int" appears
*after* "sizetype" on Darwin but *before* it on Linux.

[Bug target/88644] Unexpected pub type info eliminated after r 246973 (causes pubtypes-*.c to regress).

2018-12-31 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88644

Iain Sandoe  changed:

   What|Removed |Added

 Target||*-*-darwin*
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-12-31
 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |7.5
 Ever confirmed|0   |1

--- Comment #1 from Iain Sandoe  ---
note that if we try -ggnu-pubnames, the effect is still present.

[Bug fortran/82995] Segmentation fault passing optional argument to intrinsic sum function

2018-12-31 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82995

--- Comment #12 from Thomas Koenig  ---
Author: tkoenig
Date: Mon Dec 31 14:59:46 2018
New Revision: 267487

URL: https://gcc.gnu.org/viewcvs?rev=267487&root=gcc&view=rev
Log:
2018-12-31  Thomas Koenig  

PR fortran/82995
* trans-expr.c (gfc_conv_procedure_call):  Pass NULL pointer
for missing optional dummy arguments for library routines.
* trans-intinsic.c (conv_mask_condition): New function.
(gfc_conv_intrinsic_arith): Detect and handle optional mask.
(gfc_conv_intrinsic_minmaxloc): Likewise.
(gfc_conv_intrinsic_findloc): Likewise.
(gfc_conv_intrinsic_minmaxval): Likewise.
(gfc_inline_intrinsic_function_p): Do not inline for rank > 1 if
an optional mask is present.

2018-12-31  Thomas Koenig  

PR fortran/82995
* m4/ifindloc0.m4: Handle case of absend optional argument, passed
as a NULL pointer.  Correct allocation of retarray->base_addr.
* m4/ifindloc1.m4: Likewise.
* m4/ifindloc2.m4: Handle case of absend optional argument, passed
as a NULL pointer.
* m4/iforeach-s.m4: Likewise.
* m4/iforeach-s2.m4: Likewise.
* m4/iforeach.m4: Likewise.
* m4/ifunction-s.m4: Likewise.
* m4/ifunction-s2.m4: Likewise.
* m4/ifunction.m4: Likewise.
* generated/findloc0_c16.c: Regenerated.
* generated/findloc0_c4.c: Regenerated.
* generated/findloc0_c8.c: Regenerated.
* generated/findloc0_i1.c: Regenerated.
* generated/findloc0_i16.c: Regenerated.
* generated/findloc0_i2.c: Regenerated.
* generated/findloc0_i4.c: Regenerated.
* generated/findloc0_i8.c: Regenerated.
* generated/findloc0_r16.c: Regenerated.
* generated/findloc0_r4.c: Regenerated.
* generated/findloc0_r8.c: Regenerated.
* generated/findloc0_s1.c: Regenerated.
* generated/findloc0_s4.c: Regenerated.
* generated/findloc1_c16.c: Regenerated.
* generated/findloc1_c4.c: Regenerated.
* generated/findloc1_c8.c: Regenerated.
* generated/findloc1_i1.c: Regenerated.
* generated/findloc1_i16.c: Regenerated.
* generated/findloc1_i2.c: Regenerated.
* generated/findloc1_i4.c: Regenerated.
* generated/findloc1_i8.c: Regenerated.
* generated/findloc1_r16.c: Regenerated.
* generated/findloc1_r4.c: Regenerated.
* generated/findloc1_r8.c: Regenerated.
* generated/findloc1_s1.c: Regenerated.
* generated/findloc1_s4.c: Regenerated.
* generated/findloc2_s1.c: Regenerated.
* generated/findloc2_s4.c: Regenerated.
* generated/iall_i1.c: Regenerated.
* generated/iall_i16.c: Regenerated.
* generated/iall_i2.c: Regenerated.
* generated/iall_i4.c: Regenerated.
* generated/iall_i8.c: Regenerated.
* generated/iany_i1.c: Regenerated.
* generated/iany_i16.c: Regenerated.
* generated/iany_i2.c: Regenerated.
* generated/iany_i4.c: Regenerated.
* generated/iany_i8.c: Regenerated.
* generated/iparity_i1.c: Regenerated.
* generated/iparity_i16.c: Regenerated.
* generated/iparity_i2.c: Regenerated.
* generated/iparity_i4.c: Regenerated.
* generated/iparity_i8.c: Regenerated.
* generated/maxloc0_16_i1.c: Regenerated.
* generated/maxloc0_16_i16.c: Regenerated.
* generated/maxloc0_16_i2.c: Regenerated.
* generated/maxloc0_16_i4.c: Regenerated.
* generated/maxloc0_16_i8.c: Regenerated.
* generated/maxloc0_16_r10.c: Regenerated.
* generated/maxloc0_16_r16.c: Regenerated.
* generated/maxloc0_16_r4.c: Regenerated.
* generated/maxloc0_16_r8.c: Regenerated.
* generated/maxloc0_16_s1.c: Regenerated.
* generated/maxloc0_16_s4.c: Regenerated.
* generated/maxloc0_4_i1.c: Regenerated.
* generated/maxloc0_4_i16.c: Regenerated.
* generated/maxloc0_4_i2.c: Regenerated.
* generated/maxloc0_4_i4.c: Regenerated.
* generated/maxloc0_4_i8.c: Regenerated.
* generated/maxloc0_4_r10.c: Regenerated.
* generated/maxloc0_4_r16.c: Regenerated.
* generated/maxloc0_4_r4.c: Regenerated.
* generated/maxloc0_4_r8.c: Regenerated.
* generated/maxloc0_4_s1.c: Regenerated.
* generated/maxloc0_4_s4.c: Regenerated.
* generated/maxloc0_8_i1.c: Regenerated.
* generated/maxloc0_8_i16.c: Regenerated.
* generated/maxloc0_8_i2.c: Regenerated.
* generated/maxloc0_8_i4.c: Regenerated.
* generated/maxloc0_8_i8.c: Regenerated.
* generated/maxloc0_8_r10.c: Regenerated.
* generated/maxloc0_8_r16.c: Regenerated.
* generated/maxloc0_8_r4.c: Regenerated.
* generated/maxloc0_8_r8.c: Regenerated.
* generated/maxloc0_8_s1.c: Regenerated.
 

[Bug fortran/82995] Segmentation fault passing optional argument to intrinsic sum function

2018-12-31 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82995

Thomas Koenig  changed:

   What|Removed |Added

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

--- Comment #13 from Thomas Koenig  ---
This one is fixed.

The only (minor) thing is that, if the function result for SUM or
PRODUCT has rank >= 1, we fall back to the library version if
the MASK is passed as an absent optional argument.

Why?  Well, the scalarized loop took its bounds from the
last argument pushed to the scalarizer, which was the mask.
If that mask was absent, it used uninitialized variables.

For the one-dimensional code, I was able to handle this
by reversing the order with this part of the patch:

-  gfc_add_ss_to_loop (&loop, arrayss);
+
+  /* We add the mask first because the number of iterations is
+taken from the last ss, and this breaks if an absent
+optional argument is used for mask.  */
+
   if (maskexpr && maskexpr->rank > 0)
gfc_add_ss_to_loop (&loop, maskss);
+  gfc_add_ss_to_loop (&loop, arrayss);

For the multi-dimensional case, I tried to do so, but failed.

OTOH, the code is correct, and I doubt that generating inlined
code for this corner case is actually worth putting in the time.

So, closing.

[Bug web/86315] Bugzilla: add "cc count" and "duplicate count" columns

2018-12-31 Thread LpSolit at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86315

Frédéric Buclin  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED

--- Comment #17 from Frédéric Buclin  ---
(In reply to Martin Liška from comment #16)
> Thank you Frédéric for the changes. Can you please also include changes
> suggested in:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86315#c4

I don't think it should be a column in buglists, but rather be implemented as I
commented in the upstream bug. Please file a separate bug for this.

[Bug fortran/82313] Rejects-valid for sum(minloc(...))) as array dimension

2018-12-31 Thread tkoenig at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82313

Thomas Koenig  changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution|--- |INVALID

--- Comment #4 from Thomas Koenig  ---
So, resolved as invalid.

[Bug target/86814] xtensa port needs updating for CVE-2017-5753

2018-12-31 Thread jcmvbkbc at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86814

--- Comment #1 from jcmvbkbc at gcc dot gnu.org ---
Author: jcmvbkbc
Date: Mon Dec 31 16:51:36 2018
New Revision: 267488

URL: https://gcc.gnu.org/viewcvs?rev=267488&root=gcc&view=rev
Log:
PR target/86814

Xtensa architecture is not affected by speculation.

gcc/
2018-12-31  Max Filippov  

* config/xtensa/xtensa.c (TARGET_HAVE_SPECULATION_SAFE_VALUE):
Define to speculation_safe_value_not_needed.


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

[Bug target/86814] xtensa port needs updating for CVE-2017-5753

2018-12-31 Thread jcmvbkbc at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86814

jcmvbkbc at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||jcmvbkbc at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #2 from jcmvbkbc at gcc dot gnu.org ---
Fixed in the trunk

[Bug target/86772] [meta-bug] tracking port status for CVE-2017-5753

2018-12-31 Thread jcmvbkbc at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86772
Bug 86772 depends on bug 86814, which changed state.

Bug 86814 Summary: xtensa port needs updating for CVE-2017-5753
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86814

   What|Removed |Added

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

[Bug target/84072] [meta-bug] -mindirect-branch=thunk issues

2018-12-31 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84072
Bug 84072 depends on bug 86952, which changed state.

Bug 86952 Summary: Avoid jump table for switch statement with 
-mindirect-branch=thunk
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86952

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |WONTFIX

[Bug target/86952] Avoid jump table for switch statement with -mindirect-branch=thunk

2018-12-31 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86952

H.J. Lu  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |WONTFIX

--- Comment #11 from H.J. Lu  ---
(In reply to Martin Liška from comment #10)
> H.J. : Can you please run updated benchmark on a recent machine and provide
> slow down numbers for that?

The numbers aren't stable:

[hjl@gnu-cfl-1 microbenchmark]$ make
./test
3 loops:
global: 21, total: 625
no jump table: 178424
global: 21, total: 625
jump table   : 266792 (149.53%)
[hjl@gnu-cfl-1 microbenchmark]$ make
./test
3 loops:
global: 21, total: 625
no jump table: 185068
global: 21, total: 625
jump table   : 266678 (144.10%)
[hjl@gnu-cfl-1 microbenchmark]$ make
./test
3 loops:
global: 21, total: 625
no jump table: 292810
global: 21, total: 625
jump table   : 214840 (73.37%)
[hjl@gnu-cfl-1 microbenchmark]$ 

Close it for now.

[Bug c/88645] New: Don't assume functions are always nonnull if there's __attribute__((weak_import)), similar to __attribute__((weak))

2018-12-31 Thread mcccs at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88645

Bug ID: 88645
   Summary: Don't assume functions are always nonnull if there's
__attribute__((weak_import)), similar to
__attribute__((weak))
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mcccs at gmx dot com
  Target Milestone: ---

OS: Darwin/macOS

Test vector:

extern void a (void) __attribute__((weak_import));

int main(void) {
return !!a;
}

It shouldn't print a warning **iff** on macOS.

This warning:

warning: the address of 'void a()' will never be NULL [-Waddress]

The test would pass if it was __attribute__((weak)) instead of
__attribute__((weak_import))

The fix can be added to the `warn_for_null_address` function in gcc/cp/typeck.c

Aside from the warning, the assembly generation behavior is correct.

[Bug c/88645] Don't assume functions are always nonnull if there's __attribute__((weak_import)), similar to __attribute__((weak))

2018-12-31 Thread mcccs at gmx dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88645

--- Comment #1 from MCCCS  ---
Typo: fix can be added to "decl_with_nonnull_addr_p"
of "/c-family/c-common.c" if anyone is interested.

[Bug middle-end/88575] gcc got confused by different comparison operators

2018-12-31 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88575

--- Comment #1 from joseph at codesourcery dot com  ---
On Sat, 22 Dec 2018, bugzi...@poradnik-webmastera.com wrote:

> In test() gcc is not able to determine that for a==b it does not have to
> evaluate 2nd comparison and can use value of a if 1st comparison is true. When
> operators are swapped like in test2() or are the same, code is optimized.
> 
> [code]
> double test(double a, double b)
> {
> if (a <= b)
> return a < b ? a : b;
> return 0.0;
> }

You didn't give compilation options, but if a and b are +0 and -0 in some 
order, the first comparison is true but b must be returned instead of a 
(in the absence of -fno-signed-zeros or an option implying it).

[Bug c/88582] GCC does not unqualify return types in the case of _Atomic qualified return type.

2018-12-31 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88582

--- Comment #4 from joseph at codesourcery dot com  ---
The unqualified version of _Atomic int is _Atomic int; references to 
qualified or unqualified versions of a type do not by default include the 
type with _Atomic added or removed (see 6.2.5#27).

[Bug c/88584] GCC thinks that the type is complete dispite shaddowing.

2018-12-31 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88584

--- Comment #6 from joseph at codesourcery dot com  ---
This looks like a case that was missed in, or broken by, my fix for bug 
13801, which was supposed to address such cases of entities with different 
(compatible) types in different scopes.  It seems GCC handled this 
correctly (i.e. produced an error) in the 3.4 release series only.

[Bug bootstrap/88623] gcc build uses CXX_FOR_BUILD but files have .c extension

2018-12-31 Thread joseph at codesourcery dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88623

--- Comment #1 from joseph at codesourcery dot com  ---
gcc/ is not libgcc.  libgcc is only ever built using exactly the same 
version of GCC.

[Bug c/88625] c11: GCC Allows enumerator value not representable in type int.

2018-12-31 Thread jsm28 at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88625

Joseph S. Myers  changed:

   What|Removed |Added

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

--- Comment #2 from Joseph S. Myers  ---
This is the same issue with diagnostics using macro definition locations
instead of macro expansion locations (so allowing an extension because UINT_MAX
was defined in a system header) as in bug 71613, and my comments there still
apply that the disabling of warnings for system header locations should be
based on the expansion location *by default* rather than fixing a few
individual places to use the expansion location (erring on the side of spurious
warnings rather than missing warnings).

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

[Bug c/71613] Useful warnings silenced when macros from system headers are used

2018-12-31 Thread jsm28 at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71613

Joseph S. Myers  changed:

   What|Removed |Added

 CC||anders.granlund.0 at gmail dot 
com

--- Comment #10 from Joseph S. Myers  ---
*** Bug 88625 has been marked as a duplicate of this bug. ***

[Bug c++/88646] New: Optimizer failure on integer sum overflow cast to bool

2018-12-31 Thread gianni at mariani dot ws
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88646

Bug ID: 88646
   Summary: Optimizer failure on integer sum overflow cast to bool
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: gianni at mariani dot ws
  Target Milestone: ---

Created attachment 45310
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45310&action=edit
Source code for bug: add_bug.cpp

Compiler --version "g++ (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516".

On a (uname -a):
"Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l
GNU/Linux"

The attached file runs fine without optimization but fails on signed integers
>31 bits in size only in the optimized case.

Note:
g++ --std=c++14 -O3add_bug.cpp   -o add_bug

out:
ERROR: add_bug.cpp:90 Failed the N test l_v=0 i=33 w_T=i
ERROR: add_bug.cpp:90 Failed the N test l_v=0 i=33 w_T=l
ERROR: add_bug.cpp:90 Failed the N test l_v=0 i=65 w_T=x

The reason is add_bug.cpp:88. i.e.:

for ( int i = 2; l_v += l_v, l_v; ++ i )

The termination condition is l_v += l_v which should terminate when
l_v==(1<<31) for l_v of 32 bit integer types.

[Bug c++/88646] Optimizer failure on integer sum overflow cast to bool

2018-12-31 Thread pinskia at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88646

Andrew Pinski  changed:

   What|Removed |Added

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

--- Comment #1 from Andrew Pinski  ---
Signed integer overflow is undefined.
In the case of short and signed char, the operations are promoted to int due to
the way C++ works.

[Bug target/88510] GCC generates inefficient U64x2/v2di scalar multiply for NEON32

2018-12-31 Thread husseydevin at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88510

Devin Hussey  changed:

   What|Removed |Added

Summary|GCC generates inefficient   |GCC generates inefficient
   |U64x2 scalar multiply for   |U64x2/v2di scalar multiply
   |NEON32  |for NEON32

--- Comment #1 from Devin Hussey  ---
I noticed that the scalarization is performed in the veclower21 stage. 

In making a patch for LLVM, I found that the x86 code could basically be
copy-pasted over, just adding truncates and replacing the SSE instructions with
NEON instructions. I would add it if someone told me where the SSE code is and
where to put the NEON code. That is what helped me with the LLVM patch.

[Bug c++/88646] Optimizer failure on integer sum overflow cast to bool

2018-12-31 Thread gianni at mariani dot ws
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88646

gianni at mariani dot ws changed:

   What|Removed |Added

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

--- Comment #2 from gianni at mariani dot ws ---

While it may be undefined, should the result at least be consistent? Either the
result is zero and the bool cast works as the code expected or the result is
non zero and the value printed is non zero.

Note the printed l_v=0.

Also note that casting the result to int doesn't work either.