[Bug pch/61250] Random pch failures on x86_64-apple-darwin1(3|4).

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

--- Comment #21 from Iain Sandoe  ---
(In reply to Eric Gallager from comment #20)
> (In reply to Jack Howarth from comment #16)
> > (In reply to howarth from comment #15)
> > > (In reply to howarth from comment #14)
> > > > Testing https://gcc.gnu.org/ml/gcc-patches/2015-03/msg01334.html in case
> > > > correction of the overflow tests eliminates this bug.
> > > 
> > > The proposed patch for correcting overflows doesn't eliminate this bug.
> > 
> > With Jan's patch the failure still appears as...
> > 
> > #0  0x7fff96238286 in __pthread_kill ()
> > #1  0x7fff9488042f in pthread_kill ()
> > #2  0x7fff8e9c1b53 in abort ()
> > #3  0x000100f32170 in linemap_lookup (set=0x10175e0f0, line=651) at
> > ../../gcc-5-20150326/libcpp/line-map.c:806
> 
> Since the crash is in libcpp, cc-ing libcpp maintainers

As per my current analysis, the crash is in the GC/PCH code.

* This is repeatable outside the testsuite (between 4 and 400 attempts to
trigger), so not an issue with the test framework.
* It does not appear to affect Linux (10,000 attempts, no fail).

There are two different failure modes:

(1) it crashes with some error reported from within ggc_pch_read()
(2) it hangs with either a signal caused by, or a crash within, ggc_pch_read()

* When the hang occurs it appears to be a deadlock in memory management related
to the diagnostic messages.

 2 Thread_56911430   DispatchQueue_1: com.apple.main-thread  (serial)
 2 start  (in libdyld.dylib) + 1  [0x142809235]
 2 main  (in cc1) + 47  [0x101085d4f]  main.c:39
 2 toplev::main(int, char**)  (in cc1) + 320  [0x100c90ce0]  toplev.c:2311
 2 do_compile()  (in cc1) + 269  [0x100c911ad]  toplev.c:2176
 2 compile_file()  (in cc1) + 58  [0x100c92caa]  toplev.c:456
 2 c_common_parse_file()  (in cc1) + 97  [0x1000f0911]  c-opts.c:1151
 2 c_parse_file()  (in cc1) + 169  [0x100068999]  c-parser.c:19760
 2 c_common_pch_pragma(cpp_reader*, char const*)  (in cc1) + 82 [0x1000f15a2] 
c-pch.c:433
 2 c_common_read_pch(cpp_reader*, char const*, int, char const*)  (in cc1) +
167  [0x1000f1437]  c-pch.c:368
 2 gt_pch_restore(__sFILE*)  (in cc1) + 480  [0x1008df630]  ggc-common.c:631
 2 ggc_pch_read(__sFILE*, void*)  (in cc1) + 751  [0x1006a47ff] 
ggc-page.c:2588
 2 fatal_error(unsigned int, char const*, ...)  (in cc1) + 196  [0x1010a60c4]
diagnostic.c:1488
 2 diagnostic_impl(rich_location*, int, char const*, __va_list_tag (*) [1],
diagnostic_t)  (in cc1) + 128  [0x1010a4b30]  diagnostic.c:1138

As for the bug:
 it seems related to the two different call arcs for ggc_pch_read()

A) when called 'normally' 

* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
  * frame #0: 0x0001006a452a cc1`ggc_pch_read(f=0x7fffbbfd9148,
addr=0x0001018e9000) at ggc-page.c:2557 [opt]
frame #1: 0x0001008df630 cc1`gt_pch_restore(f=0x7fffbbfd9148) at
ggc-common.c:631 [opt]
frame #2: 0x0001000f1437
cc1`c_common_read_pch(pfile=0x000143001a00, name="./save-temps-1.h.gch",
fd=, orig_name=) at c-pch.c:368 [opt]
frame #3: 0x0001010df8d4
cc1`should_stack_file(pfile=0x000143001a00, file=0x000142f04e80,
import=false, loc=4975) at files.c:814 [opt]
frame #4: 0x0001010df758
cc1`::_cpp_stack_file(pfile=0x000143001a00, file=0x000142f04e80,
import=, loc=) at files.c:900 [opt]
frame #5: 0x0001010dfb4c
cc1`::_cpp_stack_include(pfile=0x000143001a00, fname="save-temps-1.h",
angle_brackets=0, type=IT_INCLUDE, loc=) at files.c:1049 [opt]
frame #6: 0x0001010d92fd
cc1`do_include_common(pfile=0x000143001a00, type=IT_INCLUDE) at
directives.c:848 [opt]
frame #7: 0x0001010d6a28
cc1`::_cpp_handle_directive(pfile=0x000143001a00, indented=)
at directives.c:543 [opt]
frame #8: 0x0001010e31b2 cc1`::_cpp_lex_token(pfile=0x000143001a00)
at lex.c:2609 [opt]
frame #9: 0x0001010eb488 cc1`cpp_get_token_1(pfile=0x000143001a00,
location=0x7fff5fbff4bc) at macro.c:2703 [opt]
frame #10: 0x0001000e24fe
cc1`c_lex_with_flags(value=0x7fff5fbff4c0, loc=0x7fff5fbff4bc,
cpp_flags="", lex_flags=0) at c-lex.c:405 [opt]
frame #11: 0x0001000658b1
cc1`c_lex_one_token(parser=0x7fff5fbff4b0, token=0x7fff5fbff4b8) at
c-parser.c:249 [opt]
frame #12: 0x00010006585a
cc1`c_parser_peek_token(parser=0x7fff5fbff4b0) at c-parser.c:436 [opt]
frame #13: 0x000100068981 cc1`c_parse_file() at c-parser.c:19759 [opt]
frame #14: 0x0001000f0911 cc1`c_common_parse_file() at c-opts.c:1151
[opt]
frame #15: 0x000100c92caa cc1`compile_file() at toplev.c:456 [opt]
frame #16: 0x000100c911ad cc1`do_compile() at toplev.c:2176 [opt]
frame #17: 0x000100c90ce0 cc1`toplev::main(this=0x7fff5fbff690,
argc=, argv=) at toplev.c:2311 [opt]

B) when called for "-save-temps" it's triggered by processing 
 #pragma GCC pch_preprocess "./save-temps-1.h.gch" 

* thread #1, queue = 'com.apple.main-thr

[Bug sanitizer/87880] [9 regression] All macOS asan execution tests FAIL

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

--- Comment #8 from Iain Sandoe  ---
I can see this on x86_64-darwin15 .. but not on darwin16, 17 or 18.

please can you confirm that you definitely see this on darwin18?
(and what your bootstrap compiler / config is).

my tests were on 267418 with GCC5 as the bootstrap compiler on x86-64-darwin15
(for Ada support).  On darwin16 it makes no difference if I use GCC or clang as
the bootstrap compiler, on darwin17 and 18 I've only tried with clang as the
bootstrap so far.

Do you have SIP enabled, and did you install the target libs before running the
tests?

[Bug c++/88628] New: lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread merukun1125 at docomo dot ne.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

Bug ID: 88628
   Summary: lambda expression in static_assert in if constexpr is
not evaluated
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: merukun1125 at docomo dot ne.jp
  Target Milestone: ---

The following code should fail to compile.

#include 

template
T get() {
if constexpr (std::is_same_v) return 0;
else static_assert([]{return false;}(), "Lambda expression is evaluated.");
}

int main() {
get();
}

wandbox
https://wandbox.org/permlink/9FWcmSTY6uPEF09r

[Bug demangler/88629] New: Heap-buffer-overflow problem in function d_expression_1 in cp-demangle.c, as demonstrated by c++filt

2018-12-28 Thread wcventure at 126 dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88629

Bug ID: 88629
   Summary: Heap-buffer-overflow problem in function
d_expression_1 in cp-demangle.c, as demonstrated by
c++filt
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: demangler
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wcventure at 126 dot com
  Target Milestone: ---

Created attachment 45294
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45294&action=edit
POC1

Hi, there.

A Heap-buffer-overflow problem was discovered in function function
d_expression_1 in cp-demangle.c of binutils latest code base, too. A crafted
ELF input can cause segment faults and I have confirmed them with address
sanitizer too.

Please use the "./c++filt -t < $POC" to reproduce the bug.

Note that this error only occurs in the last code base, maybe this is a
regression error. I will show you the commit ID.

> $ git log
> commit ebb8004a18a3808d7197762faf3c5aaeae82371f
> Author: GDB Administrator 
> Date:   Wed Dec 19 00:00:21 2018 +
> 
> Automatic date update in version.in

The ASAN dumps the stack trace as follows:

> =
> ==83311==ERROR: AddressSanitizer: heap-buffer-overflow on address 
> 0x60200059 at pc 0x00ac9a4b bp 0x7ffeedce2490 sp 0x7ffeedce2488
> READ of size 1 at 0x60200059 thread T0
> #0 0xac9a4a in d_expression_1 
> /binutils-gdb/libiberty/./cp-demangle.c:3356:12
> #1 0xab4724 in d_expression /binutils-gdb/libiberty/./cp-demangle.c:3531:9
> #2 0xaacdbe in cplus_demangle_type 
> /binutils-gdb/libiberty/./cp-demangle.c:2615:9
> #3 0xaaab09 in cplus_demangle_type 
> /binutils-gdb/libiberty/./cp-demangle.c:2411:10
> #4 0xaac400 in cplus_demangle_type 
> /binutils-gdb/libiberty/./cp-demangle.c:2568:26
> #5 0xaac400 in cplus_demangle_type 
> /binutils-gdb/libiberty/./cp-demangle.c:2568:26
> #6 0xab8dc1 in d_demangle_callback 
> /binutils-gdb/libiberty/./cp-demangle.c:6289:7
> #7 0xab7d4f in d_demangle /binutils-gdb/libiberty/./cp-demangle.c:6343:12
> #8 0xab7b66 in cplus_demangle_v3 
> /binutils-gdb/libiberty/./cp-demangle.c:6500:10
> #9 0xa75571 in cplus_demangle /binutils-gdb/libiberty/./cplus-dem.c:881:13
> #10 0xa904ba in demangle_template_value_parm 
> /binutils-gdb/libiberty/./cplus-dem.c:2146:12
> #11 0xa8a190 in demangle_template 
> /binutils-gdb/libiberty/./cplus-dem.c:2331:14
> #12 0xa849c8 in demangle_signature 
> /binutils-gdb/libiberty/./cplus-dem.c:1709:18
> #13 0xa9715e in iterate_demangle_function 
> /binutils-gdb/libiberty/./cplus-dem.c:2761:14
> #14 0xa81759 in demangle_prefix 
> /binutils-gdb/libiberty/./cplus-dem.c:2989:14
> #15 0xa7a694 in internal_cplus_demangle 
> /binutils-gdb/libiberty/./cplus-dem.c:1254:14
> #16 0xa75cbb in cplus_demangle /binutils-gdb/libiberty/./cplus-dem.c:919:9
> #17 0x51518c in demangle_it /binutils-gdb/binutils/cxxfilt.c:66:12
> #18 0x5149e7 in main /binutils-gdb/binutils/cxxfilt.c:288:4
> #19 0x7f702142782f in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
> #20 0x41ab28 in _start (/binutils-gdb/build/bin/c++filt+0x41ab28)
> 
> 0x60200059 is located 0 bytes to the right of 9-byte region 
> [0x60200050,0x60200059)
> allocated by thread T0 here:
> #0 0x4daa50 in malloc 
> /home/tangyun/Documents/Git/llvm-6.0.1/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:88
> #1 0xb0740f in xmalloc /binutils-gdb/libiberty/./xmalloc.c:147:12
> #2 0xa903af in demangle_template_value_parm 
> /binutils-gdb/libiberty/./cplus-dem.c:2138:18
> #3 0xa8a190 in demangle_template 
> /binutils-gdb/libiberty/./cplus-dem.c:2331:14
> #4 0xa849c8 in demangle_signature 
> /binutils-gdb/libiberty/./cplus-dem.c:1709:18
> #5 0xa9715e in iterate_demangle_function 
> /binutils-gdb/libiberty/./cplus-dem.c:2761:14
> #6 0xa81759 in demangle_prefix 
> /binutils-gdb/libiberty/./cplus-dem.c:2989:14
> #7 0xa7a694 in internal_cplus_demangle 
> /binutils-gdb/libiberty/./cplus-dem.c:1254:14
> #8 0xa75cbb in cplus_demangle /binutils-gdb/libiberty/./cplus-dem.c:919:9
> #9 0x51518c in demangle_it /binutils-gdb/binutils/cxxfilt.c:66:12
> #10 0x5149e7 in main /binutils-gdb/binutils/cxxfilt.c:288:4
> #11 0x7f702142782f in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
> 
> SUMMARY: AddressSanitizer: heap-buffer-overflow 
> /binutils-gdb/libiberty/./cp-demangle.c:3356:12 in d_expression_1
> Shadow bytes around the buggy address:
>   0x0c047fff7fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>   0x0c047fff7fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>   0x0c047fff7fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>   0x0c047fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>   0x0c047fff7ff0: 00 

[Bug demangler/88629] Heap-buffer-overflow problem in function d_expression_1 in cp-demangle.c, as demonstrated by c++filt

2018-12-28 Thread wcventure at 126 dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88629

--- Comment #1 from Cheng Wen  ---
Created attachment 45295
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45295&action=edit
POC2

[Bug demangler/88629] Heap-buffer-overflow problem in function d_expression_1 in cp-demangle.c, as demonstrated by c++filt

2018-12-28 Thread wcventure at 126 dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88629

--- Comment #2 from Cheng Wen  ---
Created attachment 45296
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45296&action=edit
POC3

[Bug libstdc++/88607] forward_list.h contains utf-8 charactor

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88607

--- Comment #4 from Jakub Jelinek  ---
Created attachment 45297
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45297&action=edit
gcc9-pr88607.patch

Untested patch.  Another option is do these changes (transliterations or
removals) during make install, so that the UTF-8 characters are still used e.g.
in the doxygen generated documentation.
echo 'fi—éö§’' | iconv -f UTF-8// -t ASCII//TRANSLIT
fi--eo?'
so unlike my patch — is replaced by -- rather than just - and § is not removed,
but ? used instead, though for the latter case I think removing of the section
symbol is better.  And we can't use iconv in make install, because not all
hosts will have it.

[Bug demangler/88629] Heap-buffer-overflow problem in function d_expression_1 in cp-demangle.c, as demonstrated by c++filt

2018-12-28 Thread wcventure at 126 dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88629

--- Comment #3 from Cheng Wen  ---
That 's because "d_advance (di, 2);" in function d_expression_1, it change
di->n = di + 2; leading to buffer-over-flow problem. 

> 3353  d_advance (di, 2);
> 3354  if (peek == 't')
> 3355  type = cplus_demangle_type (di);
> 3356  if (!d_peek_next_char (di))
> 3357  return NULL;

[Bug tree-optimization/88621] [9 Regression] wrong code at -O1 and above on x86_64-linux-gnu in 64-bit mode (not in 32-bit mode)

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88621

--- Comment #2 from Jakub Jelinek  ---
The expander is unprepared to deal with MEM_REFs for bitfields, it really wants
to see a COMPONENT_REF for those cases, but the r267296 code happily creates
those.  *mem is COMPONENT_REF with first argument VAR_DECL e and second
argument FIELD_DECL b, (*slot)->mem.ref is a COMPONENT_REF with first argument
MEM_REF[&e, 0] and second argument FIELD_DECL b and the code happily creates a
MEM_REF out of this.  So, either we need to punt for the bitfield cases, or
e.g. handle the case where we have the same FIELD_DECL by creating a MEM_REF
for the base and use COMPONENT_REF on top of that and punt otherwise.

[Bug lto/87089] [9 regression] tree check: expected class 'type', have 'declaration' (namespace_decl) in type_with_linkage_p, at ipa-utils.h

2018-12-28 Thread dimhen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87089

--- Comment #6 from Dmitry G. Dyachenko  ---
r267445 PASS

[Bug lto/87089] [9 regression] tree check: expected class 'type', have 'declaration' (namespace_decl) in type_with_linkage_p, at ipa-utils.h

2018-12-28 Thread dimhen at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87089

--- Comment #7 from Dmitry G. Dyachenko  ---
(In reply to Dmitry G. Dyachenko from comment #6)
> r267445 PASS

sorry for noise

1. testcase from PR FAIL for me with r267445
2. real-world-code-compilation not FAIL

[Bug ipa/88586] ICE: Segmentation fault (in free_lang_data_in_decl)

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88586

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 45298
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45298&action=edit
gcc9-pr88586.patch

Untested fix.

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
Why do you think it should fail to compile?  The static_assert in your example
is a discarded statement.

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

--- Comment #2 from Jakub Jelinek  ---
clang++ agrees with g++ here.  The lambda expression needs to be instantiated
so that it can be evaluated and expressions in discarded statements are not
instantiated.

[Bug c++/88613] [9 Regression] ICE in size_binop_loc at fold-const.c:1900 since r267272

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88613

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
The b should have been folded to 5 in the FE, but isn't and the lambda is for
some reason not laid out and therefore it doesn't have DECL_FIELD_OFFSET
computed.

[Bug ipa/88626] __builtin_constant_p should be as cheap as dead code for inlining purposes

2018-12-28 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88626

--- Comment #1 from Marc Glisse  ---
In my application (quite a bit bigger than the testcase...), looking at the
optimized dump, I see that the function is inlined without the
__builtin_constant_p code, but when I add the __builtin_constant_p code
(__builtin_constant_p should essentially always be false in this case), a lot
of calls remain. Writing __attribute__((always_inline)) on the function "fixes"
the performance issue, it has no measurable impact on the original code, and
gives the _bcp code the same perf as the code without _bcp. However, the
attribute is not a real solution, "always" is too strong...

[Bug fortran/88624] [Coarray] Rejects allocatable coarray passed as a dummy argument

2018-12-28 Thread dominiq at lps dot ens.fr
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88624

Dominique d'Humieres  changed:

   What|Removed |Added

   Priority|P3  |P4
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-12-28
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres  ---
Confirmed from at least 4.8.

[Bug c++/88613] [9 Regression] ICE in size_binop_loc at fold-const.c:1900 since r267272

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88613

--- Comment #2 from Jakub Jelinek  ---
Seems it is fold_cache related, we are cp_folding (int) VIEW_CONVERT_EXPR
 != 5 and for the VIEW_CONVERT_EXPR  for some
reason find an entry in fold_cache that it is equivalent to a VAR_DECL x and
thus undo the folding.  I think the VCE is a location wrapper, and when being
entered into the fold cache, org_x has been
 
unit-size 
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffea94b930 precision:32 min  max
>
public
arg:0 
used SI pr88613.C:5:13 size  unit-size

align:32 warn_if_not_align:0 context 

value-expr 
readonly
arg:0 
arg:0 > arg:1 
pr88613.C:5:13 start: pr88613.C:5:13 finish: pr88613.C:5:13>>
pr88613.C:5:13 start: pr88613.C:5:13 finish: pr88613.C:5:13>
and x the VAR_DECL the location wrapper has as the argument.

But later on mark_use modifies the VCE in place and nothing invalidates the
fold cache.

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread merukun1125 at docomo dot ne.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

--- Comment #3 from merukun1125 at docomo dot ne.jp ---
(In reply to Jakub Jelinek from comment #2)
> clang++ agrees with g++ here.  The lambda expression needs to be
> instantiated so that it can be evaluated and expressions in discarded
> statements are not instantiated.

#include 

template
constexpr bool false_v = false;

template
T get() {
if constexpr (std::is_same_v) return 0;
else static_assert(false_v, "...");
}

int main() {
get();
}

This code does not fail to compile.
https://wandbox.org/permlink/jQB3P93GWTA2b4xs

But

#include 

template
T get() {
if constexpr (std::is_same_v) return 0;
else static_assert(std::false_type{}, "...");
}

int main() {
get();
}

This code fail to compile.
https://wandbox.org/permlink/MyyxwVGorihFGW2G

So, I think that constexpr if is a function to suppress instantiation of
templates of unselected branches. In other words, the first phase of two-phase
name lookup is supposed to be executed.

So, I thought that lambda expressions without dependency names should be
evaluated.

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

--- Comment #4 from Jakub Jelinek  ---
lambda is AFAIK a local class, so you need to instantiate it.  So it is more
similar to:
#include 

template
constexpr bool run() { return false; }

template
T get() {
struct S {};
if constexpr (std::is_same_v) return 0;
else static_assert(run  (), "Lambda expression is evaluated.");
}

int main() {
get();
}
which also compiles fine (and doesn't compile if you use say int or something
non-dependent in run template-id).

[Bug sanitizer/88619] [9 Regression] ICE in asan_emit_stack_protection, at asan.c:1574 since r266664

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

--- Comment #2 from Martin Liška  ---
Ok, so the problem was latent, for:

$ cat /tmp/ice.i
typedef int aligned  __attribute__((aligned(64)));
int main () {
  aligned b;
  int *p = &b;
  *(p - 1) = 123;
  __builtin_alloca(b);
}

if I apply following debugging patch:
diff --git a/gcc/asan.c b/gcc/asan.c
index 45906bf8fee..3bf956c0aef 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -1423,6 +1423,7 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned
int alignb,
   prev_offset = base_offset;
   for (l = length; l; l -= 2)
 {
+  fprintf (stderr, "RZ: %d - %d\n", offsets[l-1], offsets[l-2]);
   if (l == 2)
cur_shadow_byte = ASAN_STACK_MAGIC_RIGHT;
   offset = offsets[l - 1];

I see before the revision:
RZ: -96 - -64
RZ: -60 - -64

and:

  This frame has 1 object(s):
[32, 36) 'b' (line 3) <== Memory access at offset 28 underflows this ...
  0x10007fff7b60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x10007fff7b70: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1[f1]
  0x10007fff7b80: 04 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00

which is problematic as -60 > -64, the ranges should be increasing. As seen we
end with a wrong red zone ending with f2. That's caused by the old code that
emits always 4B of shadow memory at once.

So the problem is the alignment manipulation in expand_stack_vars that causes
the discrepancy. Jakub any idea how to fix that?

[Bug c++/88630] New: Incorrect float negating together with convertion to int on SH4

2018-12-28 Thread zavadovsky.yan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88630

Bug ID: 88630
   Summary: Incorrect float negating together with convertion to
int on SH4
   Product: gcc
   Version: 8.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: zavadovsky.yan at gmail dot com
  Target Milestone: ---

Created attachment 45299
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45299&action=edit
main.cpp: code to trigger the bug

Hello.

I have some strange behavior with such simple code:

float float_val = ;
int int_val = -float_val;


Problem is in "losing" negation.
Real result of code execution looks like

int int_val = float_val;


E.g. if float_val==12.0f I am awaiting that int_val will be equal -12;
And vice versa.

But I got int_val==12 when float_val==12.0f;
I.e. there was no negation.


There is no such bug in GCC-4.x (checked 4.7.3 and 4.9.4).
It begins since 5.x(I checked 5.4.0, 6.3.0, 7.4.0, 8.2.0).

There is no such bug on x86-64, mips and arm with 4.6/4.7 and 6.3.0 compiler
versions.


Assembler from GCC-8.2.0 - works bad:

sts fpscr,r1
mov.l   .L2,r2
fnegfr5
xor r2,r1
lds r1,fpscr
ftrcfr5,fpul
sts fpul,r0
xor r2,r1
lds r1,fpscr
rts 



Assembler from GCC-4.9.4 - works good:

mov.l   .L2,r1
lds.l   @r1+,fpscr
add #-4,r1
fnegfr5
add #4,r1
ftrcfr5,fpul
sts fpul,r0
rts 
lds.l   @r1+,fpscr


I can see that FPU 'calculation' commands wasn't changed between compiler
versions.
But there was change of work with FPU status/control register.


Can somebody say is it compiler bug or there is a problem with my code?

[Bug c++/88630] Incorrect float negating together with convertion to int on SH4

2018-12-28 Thread zavadovsky.yan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88630

--- Comment #1 from Zavadovsky Yan  ---
Rewriting code as

float float_val = ;
int int_val = -(int)float_val;

avoids bug.


And rewriting code as

double float_val = ;
int int_val = -float_val;

also avoids bug.

[Bug c++/88630] Incorrect float negating together with convertion to int on SH4

2018-12-28 Thread zavadovsky.yan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88630

--- Comment #2 from Zavadovsky Yan  ---
Created attachment 45300
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45300&action=edit
main494.s: assembler output from GCC-4.9.4

[Bug c++/88630] Incorrect float negating together with convertion to int on SH4

2018-12-28 Thread zavadovsky.yan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88630

--- Comment #3 from Zavadovsky Yan  ---
Created attachment 45301
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45301&action=edit
main820.s: assembler output from GCC-8.2.0

[Bug c++/88630] Incorrect float negating together with convertion to int on SH4

2018-12-28 Thread zavadovsky.yan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88630

--- Comment #4 from Zavadovsky Yan  ---
Compilation command:
sh4-unknown-linux-gnu-g++ --sysroot=../8.2.0/sh4-unknown-linux-gnu/sysroot
-static -Os -o test820 main.cpp

GCC info:
Using built-in specs.
COLLECT_GCC=../000_sh4_gcc/820/bin/sh4-unknown-linux-gnu-g++
COLLECT_LTO_WRAPPER=/yan/000_sh4_gcc/820/bin/../libexec/gcc/sh4-unknown-linux-gnu/8.2.0/lto-wrapper
Target: sh4-unknown-linux-gnu
Configured with:
/yan/000_sh4_gcc/ct-ng/.build/sh4-unknown-linux-gnu/src/gcc/configure
--build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu
--target=sh4-unknown-linux-gnu
--prefix=/yan/000_sh4_gcc/ct-ng/../sh4-unknown-linux-gnu
--with-sysroot=/yan/000_sh4_gcc/sh4-unknown-linux-gnu/sh4-unknown-linux-gnu/sysroot
--enable-languages=c,c++ --with-pkgversion='crosstool-NG 1.23.0.580-eb72b4e'
--enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp
--disable-libquadmath --disable-libquadmath-support --disable-libsanitizer
--disable-libmpx
--with-gmp=/yan/000_sh4_gcc/ct-ng/.build/sh4-unknown-linux-gnu/buildtools
--with-mpfr=/yan/000_sh4_gcc/ct-ng/.build/sh4-unknown-linux-gnu/buildtools
--with-mpc=/yan/000_sh4_gcc/ct-ng/.build/sh4-unknown-linux-gnu/buildtools
--with-isl=/yan/000_sh4_gcc/ct-ng/.build/sh4-unknown-linux-gnu/buildtools
--disable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++ -lm'
--enable-threads=posix --enable-target-optspace --disable-plugin --disable-nls
--enable-multiarch
--with-local-prefix=/yan/000_sh4_gcc/sh4-unknown-linux-gnu/sh4-unknown-linux-gnu/sysroot
--enable-long-long
Thread model: posix
gcc version 8.2.0 (crosstool-NG 1.23.0.580-eb72b4e)

[Bug c++/88630] Incorrect float negating together with convertion to int on SH4

2018-12-28 Thread zavadovsky.yan at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88630

--- Comment #5 from Zavadovsky Yan  ---
Created attachment 45302
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45302&action=edit
main.ii: -save-temps output

[Bug c++/88613] [9 Regression] ICE in size_binop_loc at fold-const.c:1900 since r267272

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88613

Jakub Jelinek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-12-28
 CC||jason at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #3 from Jakub Jelinek  ---
The modification-in-place in mark_use rather than returning a new tree instead
has been added in https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00604.html

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread merukun1125 at docomo dot ne.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

--- Comment #5 from merukun1125 at docomo dot ne.jp ---
(In reply to Jakub Jelinek from comment #4)
> lambda is AFAIK a local class, so you need to instantiate it.  So it is more
> similar to:
> #include 
> 
> template
> constexpr bool run() { return false; }
> 
> template
> T get() {
> struct S {};
> if constexpr (std::is_same_v) return 0;
> else static_assert(run  (), "Lambda expression is evaluated.");
> }
> 
> int main() {
> get();
> }
> which also compiles fine (and doesn't compile if you use say int or
> something non-dependent in run template-id).

I'm sorry, I was mistaken.

If a lambda expression is defined as a local class, it becomes as follows:

#include 

template
T get() {
struct S {
auto operator()() const -> decltype(false) {
return false;
}
};
if constexpr (std::is_same_v) return 0;
else static_assert(S{}(), "Lambda expression is evaluated.");
}

int main() {
get();
}


This code does not fail to compile because the compiler seems to need T to
determine the type of S.
https://wandbox.org/permlink/QtGF6wpvPr9rlhQ1

I was misunderstood as follows:

#include 

struct S { // A type that does not depend on template parameter T
auto operator()() const -> decltype(false) {
return false;
}
};

template
T get() {
if constexpr (std::is_same_v) return 0;
else static_assert(S{}(), "Lambda expression is evaluated.");
}

int main() {
get();
}

This code fail to compile.
https://wandbox.org/permlink/628XClL8M3dnkD1Q

If you do not mind, please tell me the place if there is a place where lambda
expressions are defined as local classes in n4659 or n4791.

[Bug lto/87089] [9 regression] tree check: expected class 'type', have 'declaration' (namespace_decl) in type_with_linkage_p, at ipa-utils.h

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

Martin Liška  changed:

   What|Removed |Added

   Priority|P3  |P1

--- Comment #8 from Martin Liška  ---
It's still present for the following test-case:

$ cat 1.ii
namespace itpp {
template  void b(a *c) { c[0].~a(); }
class CFix;
template  class d {
  void e(const char *);
  CFix *data;
};
class CFix {
public:
  virtual ~CFix();
};
template <> void d::e(const char *) { b(data); }
} // namespace itpp

$ cat 2.ii
namespace itpp {
enum a { b };
class CFix {
public:
  virtual ~CFix();
};
template  class c : CFix {
  ~c() {}
};
template class c<>;
} // namespace itpp

$ g++ -flto 1.ii 2.ii -shared -fPIC -O2
during IPA pass: devirt
lto1: internal compiler error: tree check: expected class ‘type’, have
‘declaration’ (namespace_decl) in type_with_linkage_p, at ipa-utils.h:185
0x6c7d51 tree_class_check_failed(tree_node const*, tree_code_class, char
const*, int, char const*)
/home/marxin/Programming/gcc/gcc/tree.c:9856
0xa3a7fd tree_class_check(tree_node const*, tree_code_class, char const*, int,
char const*)
/home/marxin/Programming/gcc/gcc/tree.h:3555
0xa3a7fd type_with_linkage_p(tree_node const*)
/home/marxin/Programming/gcc/gcc/ipa-utils.h:185
0xa3a7fd type_in_anonymous_namespace_p(tree_node const*)
/home/marxin/Programming/gcc/gcc/ipa-utils.h:221
0xa311ba maybe_record_node
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:2531
0xa31c7c record_target_from_binfo
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:2675
0xa31b4a record_target_from_binfo
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:2687
0xa31fbd possible_polymorphic_call_targets_1
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:2730
0xa37794 possible_polymorphic_call_targets(tree_node*, long,
ipa_polymorphic_call_context, bool*, void**, bool)
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:3351
0xa39559 possible_polymorphic_call_targets(cgraph_edge*, bool*, void**, bool)
/home/marxin/Programming/gcc/gcc/ipa-utils.h:118
0xa39559 ipa_devirt
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:3770
0xa39559 execute
/home/marxin/Programming/gcc/gcc/ipa-devirt.c:4088

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread merukun1125 at docomo dot ne.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

merukun1125 at docomo dot ne.jp changed:

   What|Removed |Added

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

--- Comment #6 from merukun1125 at docomo dot ne.jp ---
(In reply to Jakub Jelinek from comment #4)
> lambda is AFAIK a local class, so you need to instantiate it.  So it is more
> similar to:
> #include 
> 
> template
> constexpr bool run() { return false; }
> 
> template
> T get() {
> struct S {};
> if constexpr (std::is_same_v) return 0;
> else static_assert(run  (), "Lambda expression is evaluated.");
> }
> 
> int main() {
> get();
> }
> which also compiles fine (and doesn't compile if you use say int or
> something non-dependent in run template-id).

I'm sorry, I was mistaken.

If a lambda expression is defined as a local class, it becomes as follows:

#include 

template
T get() {
struct S {
auto operator()() const -> decltype(false) {
return false;
}
};
if constexpr (std::is_same_v) return 0;
else static_assert(S{}(), "Lambda expression is evaluated.");
}

int main() {
get();
}


This code does not fail to compile because the compiler seems to need T to
determine the type of S.
https://wandbox.org/permlink/QtGF6wpvPr9rlhQ1

I was misunderstood as follows:

#include 

struct S { // A type that does not depend on template parameter T
auto operator()() const -> decltype(false) {
return false;
}
};

template
T get() {
if constexpr (std::is_same_v) return 0;
else static_assert(S{}(), "Lambda expression is evaluated.");
}

int main() {
get();
}

This code fail to compile.
https://wandbox.org/permlink/628XClL8M3dnkD1Q

If you do not mind, please tell me the place if there is a place where lambda
expressions are defined as local classes in n4659 or n4791.

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

--- Comment #7 from Jakub Jelinek  ---
http://eel.is/c++draft/expr.prim.lambda.closure says:

The type of a lambda-expression (which is also the type of the closure object)
is a unique, unnamed non-union class type, called the closure type, whose
properties are described below.

The closure type is declared in the smallest block scope, class scope, or
namespace scope that contains the corresponding lambda-expression.

As the lambda expression in this case is contained in a block scope within the
get function template, the closure type is declared there.

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread merukun1125 at docomo dot ne.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

--- Comment #8 from merukun1125 at docomo dot ne.jp ---
(In reply to Jakub Jelinek from comment #7)
> http://eel.is/c++draft/expr.prim.lambda.closure says:
> 
> The type of a lambda-expression (which is also the type of the closure
> object) is a unique, unnamed non-union class type, called the closure type,
> whose properties are described below.
> 
> The closure type is declared in the smallest block scope, class scope, or
> namespace scope that contains the corresponding lambda-expression.
> 
> As the lambda expression in this case is contained in a block scope within
> the get function template, the closure type is declared there.

Thank you, Jakub Jelinek!

[Bug c++/88628] lambda expression in static_assert in if constexpr is not evaluated

2018-12-28 Thread merukun1125 at docomo dot ne.jp
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88628

--- Comment #9 from merukun1125 at docomo dot ne.jp ---

Tn Comment 6, not

#include 

struct S { // A type that does not depend on template parameter T
auto operator()() const -> decltype(false) {
return false;
}
};

template
T get() {
if constexpr (std::is_same_v) return 0;
else static_assert(S{}(), "Lambda expression is evaluated.");
}

int main() {
get();
}

It is right here:

#include 

struct S {
constexpr S() = default;
constexpr auto operator()() const -> decltype(false) {
return false;
}
};

template
T get() {
if constexpr (std::is_same_v) return 0;
else static_assert(S{}(), "Lambda expression is evaluated.");
}

int main() {
get();
}

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

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

--- Comment #1 from sudi at gcc dot gnu.org ---
Started somewhere between r264874 and r266250. (I know the window is too big
:()

[Bug target/88620] [7/8/9 Regression] ICE in assign_stack_temp_for_type, at function.c:837

2018-12-28 Thread sudi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88620

sudi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1

[Bug target/88620] [7/8/9 Regression] ICE in assign_stack_temp_for_type, at function.c:837

2018-12-28 Thread sudi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88620

--- Comment #2 from sudi at gcc dot gnu.org ---
Haven't looked very closely to PR82564 but it was marked as a possible
duplicate to an already resolved ticket a year ago. In any case I can confirm
this failure is still occurring for aarch64 trunk and last couple of release
branches.

[Bug c++/88631] New: CTAD cannot deduce from () value initialization

2018-12-28 Thread lichray at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88631

Bug ID: 88631
   Summary: CTAD cannot deduce from () value initialization
   Product: gcc
   Version: 9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lichray at gmail dot com
  Target Milestone: ---

#include 

template
class A {};

// A() -> A<>;

int main()
{
auto x = A();   // #1
auto x2 = A{};  // #2
A y;// #3
}

#1 fails, #2 and #3 succeeds, adding or removing the deduction guide doesn't
matter (thankfully).  This causes users not able to write std::less().

[Bug libfortran/81984] NULL string pointer dereferencing forces undefined behaviour in libgfortran

2018-12-28 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81984

--- Comment #6 from kargl at gcc dot gnu.org ---
Author: kargl
Date: Fri Dec 28 18:26:09 2018
New Revision: 267452

URL: https://gcc.gnu.org/viewcvs?rev=267452&root=gcc&view=rev
Log:
2018-12-28  Steven G. Kargl  

PR fortran/81984
* intrinsics/string_intrinsics_inc.c: Placate the sanitizer.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/intrinsics/string_intrinsics_inc.c

[Bug libfortran/81984] NULL string pointer dereferencing forces undefined behaviour in libgfortran

2018-12-28 Thread kargl at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81984

kargl at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #7 from kargl at gcc dot gnu.org ---
Fixed on trunk. Closing.

[Bug rtl-optimization/43147] SSE shuffle merge

2018-12-28 Thread glisse at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43147

--- Comment #6 from Marc Glisse  ---
Created attachment 45303
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45303&action=edit
example patch (untested)

Making the meaning of shuffles visible in GIMPLE could help a bit (although it
wouldn't solve the problem completely because IIRC we don't dare combine
shuffles, since it is hard to find an optimal expansion for a shuffle and we
might pessimize some cases).
This patch is one simple way to make _mm_shuffle_pd less opaque. _mm_shuffle_ps
would be a bit longer but still manageable. It has the drawback that it does
not diagnose when the mask is not a constant, or not between 0 and 3, and I am
not sure how to do that from the C code. An alternative would be to keep the
current builtin but turn it into a vec_perm_expr in ix86_gimple_fold_builtin,
which could include diagnostics.

[Bug c++/86648] [9 Regression] ICE on class template argument deduction

2018-12-28 Thread aoliva at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86648

--- Comment #6 from Alexandre Oliva  ---
https://gcc.gnu.org/ml/gcc-patches/2018-12/msg01740.html

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

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

--- Comment #11 from Frédéric Buclin  ---
(In reply to Jonathan Wakely from comment #8)
> Frédéric, any idea why your comment above caused Bugzilla to send the next
> ten emails with your name on?

They were old emails stuck in the queue, as you correctly guessed.

[Bug rtl-optimization/43147] SSE shuffle merge

2018-12-28 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43147

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek  ---
(In reply to Marc Glisse from comment #6)
> Created attachment 45303 [details]
> example patch (untested)
> 
> Making the meaning of shuffles visible in GIMPLE could help a bit (although
> it wouldn't solve the problem completely because IIRC we don't dare combine
> shuffles, since it is hard to find an optimal expansion for a shuffle and we
> might pessimize some cases).
> This patch is one simple way to make _mm_shuffle_pd less opaque.
> _mm_shuffle_ps would be a bit longer but still manageable. It has the
> drawback that it does not diagnose when the mask is not a constant, or not
> between 0 and 3, and I am not sure how to do that from the C code. An
> alternative would be to keep the current builtin but turn it into a
> vec_perm_expr in ix86_gimple_fold_builtin, which could include diagnostics.

I think doing it in ix86_gimple_fold_builtin is better.

[Bug c++/88538] parse error with class nontype template parameter

2018-12-28 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88538

--- Comment #2 from Marek Polacek  ---
It seems though that the current grammar doesn't allow braced-init-list as a
template-argument.  Should we raise a DR?

[Bug c++/88631] CTAD cannot deduce from () value initialization

2018-12-28 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88631

Marek Polacek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2018-12-28
 CC||mpolacek at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek  ---
Confirmed.

[Bug fortran/88632] New: [F08] function contained in module invisible to submodule unless declared public

2018-12-28 Thread joerg.stil...@tu-dresden.de
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88632

Bug ID: 88632
   Summary: [F08] function contained in module invisible to
submodule unless declared public
   Product: gcc
   Version: 8.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: joerg.stil...@tu-dresden.de
  Target Milestone: ---

A function is declared in the contains-part of a module to provide a common
functionality to different submodules. To make this function invisible to
exterior program units using this module, the function is kept private.
Nonetheless it should be visible to the submodules. 

However, with `gfortran` the function remains invisible to the submodule(s),
which becomes apparent in the form of an `ld` error. This behavior can be fixed
by declaring the the function public. 

To my understanding this is an error: The function should be visible to
submodules even when private.

Required information

1) Version of GCC
$ gfortran --version
GNU Fortran (MacPorts gcc8 8.2.0_3) 8.2.0

2) System type
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: x86_64-apple-darwin18.2.0
Thread model: posix

3) Options given when GCC was configured/built
--prefix=/Applications/Xcode.app/Contents/Developer/usr
--with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1

4) Complete command line that triggers the bug
gfortran -o main parent.f90 decendent.f90 main.f90

5) Output of `gfortran -v -save-temps -o main parent.f90 decendent.f90
main.f90`
Driving: gfortran-mp-8 -v -save-temps -o main parent.f90 decendent.f90 main.f90
-mmacosx-version-min=10.14.0 -asm_macosx_version_min=10.14 -l gfortran
-shared-libgcc
Using built-in specs.
COLLECT_GCC=gfortran-mp-8
COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin18/8.2.0/lto-wrapper
Target: x86_64-apple-darwin18
Configured with:
/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_lang_gcc8/gcc8/work/gcc-8.2.0/configure
--prefix=/opt/local --build=x86_64-apple-darwin18
--enable-languages=c,c++,objc,obj-c++,lto,fortran --libdir=/opt/local/lib/gcc8
--includedir=/opt/local/include/gcc8 --infodir=/opt/local/share/info
--mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-8
--with-local-prefix=/opt/local --with-system-zlib --disable-nls
--program-suffix=-mp-8 --with-gxx-include-dir=/opt/local/include/gcc8/c++/
--with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local
--with-isl=/opt/local --enable-stage1-checking --disable-multilib --enable-lto
--enable-libstdcxx-time --with-build-config=bootstrap-debug
--with-as=/opt/local/bin/as --with-ld=/opt/local/bin/ld
--with-ar=/opt/local/bin/ar --with-bugurl=https://trac.macports.org/newticket
--disable-tls --with-pkgversion='MacPorts gcc8 8.2.0_3'
--with-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
Thread model: posix
gcc version 8.2.0 (MacPorts gcc8 8.2.0_3) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'main'
'-mmacosx-version-min=10.14.0' '-asm_macosx_version_min=10.14' '-shared-libgcc'
'-mtune=core2'
 /opt/local/libexec/gcc/x86_64-apple-darwin18/8.2.0/f951 parent.f90 -fPIC
-quiet -dumpbase parent.f90 -mmacosx-version-min=10.14.0 -mtune=core2 -auxbase
parent -version -fintrinsic-modules-path
/opt/local/lib/gcc8/gcc/x86_64-apple-darwin18/8.2.0/finclude -o parent.s
GNU Fortran (MacPorts gcc8 8.2.0_3) version 8.2.0 (x86_64-apple-darwin18)
compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1,
MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU Fortran2008 (MacPorts gcc8 8.2.0_3) version 8.2.0 (x86_64-apple-darwin18)
compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1,
MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'main'
'-mmacosx-version-min=10.14.0'  '-shared-libgcc' '-mtune=core2'
 /opt/local/bin/as -v -arch x86_64 -force_cpusubtype_ALL -o parent.o parent.s
Apple Inc version cctools-921, GNU assembler version 1.38
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'main'
'-mmacosx-version-min=10.14.0'  '-shared-libgcc' '-mtune=core2'
 /opt/local/libexec/gcc/x86_64-apple-darwin18/8.2.0/f951 decendent.f90 -fPIC
-quiet -dumpbase decendent.f90 -mmacosx-version-min=10.14.0 -mtune=core2
-auxbase decendent -version -fintrinsic-modules-path
/opt/local/lib/gcc8/gcc/x86_64-apple-darwin18/8.2.0/finclude -o decendent.s
GNU Fortran (MacPorts gcc8 8.2.0_3) version 8.2.0 (x86_64-apple-darwin18)
compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1,
MPC version 1.1.0, isl version isl-0.20-GMP

GGC heuristics: --param ggc-min-expand=100 

[Bug c++/88572] error: braces around scalar initializer - should be a warning

2018-12-28 Thread wjwray at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88572

--- Comment #1 from Will Wray  ---
This bug is straightforward to confirm.
Compile this snippet (-std=c++11 / 14 / 17 / 2a):

struct S { int i; };
S s{{0}};

Gives   error: braces around scalar initializer for type 'int'
Should be a warning

(Or, follow the provided compiler explorer link to the test code
 which includes two more failing cases - array and array member.)

The standard is clear that scalar brace init should be accepted:

C++14 [dcl.init.aggr]/2 says:
"Each member is copy-initialized from the corresponding initializer-clause.
[...] [ Note: If an initializer-clause is itself an initializer list, the
member is list-initialized, which will result in a recursive application of the
rules in this section if the member is an aggregate.  — end note ]"

C++14 [dcl.init.list]/3.5:
"Otherwise, if the initializer list has a single element of type E and
either T is not a reference type or its referenced type is reference-related to
E, the object or reference is initialized from that element;"


Some historical links leading up to the wording fixes:

DR 155. Brace initializer for scalar
 Explains it was a C/C++ incompatibility pre-11 and points to:

DR 632. Brace-enclosed initializer for scalar member of aggregate
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#632
  "The initializer-list proposal will resolve this issue..."

As stated, it was resolved in C++11 by Initializer Lists:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm

1501. Nested braces in list-initialization
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1501

DR1467 List-initialization of aggregate from same-type object
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1467
  Submitter: Jason Merrill Date: 2012-02-06
 [Moved to DR at the November, 2014 meeting.]

Please CONFIRM this bug.

[Bug libstdc++/88607] forward_list.h contains utf-8 charactor

2018-12-28 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88607

--- Comment #5 from Jonathan Wakely  ---
These characters come from copying & pasting text from the PDF of the C++
standard, which uses ligatures. We should just replace the ligature.

[Bug libstdc++/88607] forward_list.h contains utf-8 charactor

2018-12-28 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88607

--- Comment #6 from Jonathan Wakely  ---
(In reply to Jakub Jelinek from comment #4)
> Created attachment 45297 [details]
> gcc9-pr88607.patch
> 
> Untested patch.  Another option is do these changes (transliterations or
> removals) during make install, so that the UTF-8 characters are still used
> e.g. in the doxygen generated documentation.
> echo 'fi—éö§’' | iconv -f UTF-8// -t ASCII//TRANSLIT
> fi--eo?'
> so unlike my patch — is replaced by -- rather than just - and § is not
> removed, but ? used instead, though for the latter case I think removing of
> the section symbol is better.  And we can't use iconv in make install,
> because not all hosts will have it.

That seems like overkill. The ligatures can be replaced. Paragraph symbols can
be removed. Accents in names are the only valid reason to use non-ascii
characters.

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

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

--- Comment #12 from Frédéric Buclin  ---
Created attachment 45304
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45304&action=edit
patch, v1

Patch applied.

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

2018-12-28 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|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #13 from Frédéric Buclin  ---
Tested and working fine.

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

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

Frédéric Buclin  changed:

   What|Removed |Added

  Attachment #45304|0   |1
is obsolete||

--- Comment #14 from Frédéric Buclin  ---
Created attachment 45305
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45305&action=edit
patch, v1.1

Forgot to include the new template in the patch.

[Bug web/88108] Remove misleading "raw unified" link from Bugzilla patch viewer

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

Frédéric Buclin  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2018-12-29
   Assignee|unassigned at gcc dot gnu.org  |LpSolit at gmail dot com
 Ever confirmed|0   |1

[Bug web/88108] Remove misleading "raw unified" link from Bugzilla patch viewer

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

Frédéric Buclin  changed:

   What|Removed |Added

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

--- Comment #1 from Frédéric Buclin  ---
Done

[Bug c++/64372] [DR1560] Gratuitous lvalue-to-rvalue conversion in conditional-expression with throw-expression operand

2018-12-28 Thread yaghmour.shafik at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64372

--- Comment #11 from Shafik Yaghmour  ---
Bumping, it has been a while.

I ran into this reviewing [diff.cpp11.expr]
https://timsong-cpp.github.io/cppwp/n4659/diff.cpp11.expr and noticed the code
in the example similar to the reduced sample fails to compile with current gcc
trunk 

godbolt: https://godbolt.org/z/Ihm9Ps

[Bug debug/49167] dwarf marker for function return instruction

2018-12-28 Thread aoliva at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49167

--- Comment #5 from Alexandre Oliva  ---
I've been working on an off on this specific issue, and on various surrounding
infrastructure issues, for a very long time.  Right now I'm not specifically
working on it.

[Bug ada/88591] [9 regression] libada install fails with --enable-shared

2018-12-28 Thread jamespharvey20 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88591

jamespharvey20 at gmail dot com changed:

   What|Removed |Added

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

--- Comment #2 from jamespharvey20 at gmail dot com ---
Apologies.  Those 2 errors were red herrings that got me by looking for where
things first went wrong.  These 2 errors appear the way Arch build gcc, even on
8.2.1.  They're not fatal errors.  Per the revision's comments, "make...
install-gnatlib" just needed to be changed to "make... install-libada".  This
command comes just after the "make ada-install-{common,info}" which is what
threw me.

[Bug bootstrap/88633] New: stage2 failure due to undefined reference to libintl_dgettext on armv7l-linux-gnueabihf

2018-12-28 Thread dclarke at blastwave dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88633

Bug ID: 88633
   Summary: stage2 failure due to undefined reference to
libintl_dgettext on armv7l-linux-gnueabihf
   Product: gcc
   Version: 8.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dclarke at blastwave dot org
  Target Milestone: ---

This has been repeatable and while configure and stage 1 seems fine the
process fails in stage 2 thus : 


arm7$ uname -a 
Linux arm7 4.4.132+ #1 SMP Tue Oct 23 18:03:49 CST 2018 armv7l GNU/Linux

arm7$ cat /etc/debian_version 
9.6

arm7$ date -u 
Fri Dec 28 12:42:15 UTC 2018

A set of essential tools and libs are already built, tested and installed 
into the path /opt/bw and that includes libiconv and gettext.

arm7$ LD_RUN_PATH=/opt/bw/lib LD_FLAGS=\-L/opt/bw/lib \
> RUNPATH=/opt/bw/lib \
> ../gcc-8.2.0/configure \
> --build=armv7l-linux-gnueabihf \
> --target=armv7l-linux-gnueabihf \
> --host=armv7l-linux-gnueabihf \
> --prefix=/opt/intermediate/gcc8 \
> --disable-nls --enable-threads=posix --enable-shared --enable-bootstrap \
> --enable-linker-build-id --libexecdir=/opt/bw/lib --libdir=/opt/bw/lib \
> --with-system-zlib --with-target-system-zlib \
> --enable-multiarch --with-arch=armv7-a --with-fpu=vfpv4-d16 \
> --with-float=hard --with-mode=thumb --enable-checking=release \
> --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-__cxa_atexit \
> --with-long-double-128 --enable-stage1-languages=c,c++ \
> --enable-stage1-checking=misc --with-as=/usr/bin/as --with-ld=/usr/bin/ld \
> --enable-languages=c,c++,fortran,go,lto,objc,obj-c++ \
> --with-pkgversion='genunix intermediate Fri Dec 28 12:42:15 UTC 2018'
checking build system type... armv7l-unknown-linux-gnueabihf
checking host system type... armv7l-unknown-linux-gnueabihf
checking target system type... armv7l-unknown-linux-gnueabihf
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /bin/sed
checking for gawk... no
checking for mawk... mawk
checking for libatomic support... yes
checking for libitm support... yes
checking for libsanitizer support... yes
checking for libvtv support... yes
checking for libmpx support... no
checking for libhsail-rt support... no
checking for armv7l-linux-gnueabihf-gcc... /usr/bin/gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /usr/bin/gcc accepts -g... yes
checking for /usr/bin/gcc option to accept ISO C89... none needed
checking whether we are using the GNU C++ compiler... yes
checking whether /usr/bin/g++ accepts -g... yes
checking whether g++ accepts -static-libstdc++ -static-libgcc... yes
checking for armv7l-linux-gnueabihf-gnatbind... no
checking for gnatbind... no
checking for armv7l-linux-gnueabihf-gnatmake... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1
$$f2
checking for objdir... .libs
configure: WARNING: using in-tree isl, disabling version check
*** This configuration is not supported in the following subdirectories:
 zlib target-libmpx gnattools target-libada target-libhsail-rt
target-liboffloadmic
(Any other directories should still work fine.)
checking for default BUILD_CONFIG... bootstrap-debug
checking for --enable-vtable-verify... no
checking for bison... bison -y
checking for bison... bison
checking for gm4... /opt/bw/bin/m4
checking for flex... no
checking for lex... no
checking for flex... no
checking for makeinfo... no
/opt/bw/build/gcc-8.2.0/missing: 81: /opt/bw/build/gcc-8.2.0/missing: makeinfo:
not found
checking for expect... no
checking for runtest... no
checking for ar... (cached) /usr/bin/ar
checking for armv7l-linux-gnueabihf-ar... (cached) /usr/bin/ar
checking for as... (cached) /usr/bin/as
checking for armv7l-linux-gnueabihf-as... (cached) /usr/bin/as
checking for armv7l-linux-gnueabihf-dlltool... no
checking for dlltool... no
checking for ld... (cached) /usr/bin/ld
checking for armv7l-linux-gnueabihf-ld... (cached) /usr/bin/ld
checking for armv7l-linux-gnueabihf-lipo... no
checking for lipo... no
checking for armv7l-linux-gnueabihf-nm... no
checking for nm... nm
checking for ranlib... (cached) /usr/bin/ranlib
checking for armv7l-linux-gnueabihf-ranlib... (cached) /usr/bin/ranlib
checking for strip... (cached) /usr/bin/strip
checking for armv7l-linux-gnueabihf-strip... (cached) /usr/bin/strip
checking for armv7l-linux-gnueabihf-windres... no
checking for windres... no
checking for armv7l-linux-