[Bug c++/54430] [C++11] For-Loop: Scope of iterating variable begins too early

2015-08-09 Thread akim.demaille at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54430

Akim Demaille  changed:

   What|Removed |Added

 CC||akim.demaille at gmail dot com

--- Comment #4 from Akim Demaille  ---
I hit that one too with 5.2.


[Bug c++/54430] [C++11] For-Loop: Scope of iterating variable begins too early

2015-08-09 Thread akim.demaille at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54430

--- Comment #5 from Akim Demaille  ---
FWIW, it's on StackOverflow since May 2013.

http://stackoverflow.com/questions/16407212/identifier-with-the-same-name-in-both-expression-and-declaration-of-range-based


[Bug bootstrap/67158] ICE dwarf2out.c:19910/gen_inlined_subroutine_die, at : Compiling gcc6.0 with gcc6.0 -flto

2015-08-09 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67158

Richard Biener  changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org

--- Comment #1 from Richard Biener  ---
Possibly also happens with bootstrap-lto and BOOT_CFLAGS=-g, that is, during
stage2/3 when not optimizing (?)


[Bug libfortran/66936] io/unix.c gratuitously uses S_IRWXG and S_IRWXO on the basis that umask() is available

2015-08-09 Thread fxcoudert at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66936

Francois-Xavier Coudert  changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu.org

--- Comment #14 from Francois-Xavier Coudert  ---
Kai, as mingw maintainer, can you comment? Why did this issue appear recently?
And does the patch seem OK to you?


[Bug c++/67164] New: [6 Regression] ICE: tree check: expected class ‘expression’, have ‘exceptional’ (argument_pack_select) in tree_operand_check, at tree.h:3356

2015-08-09 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67164

Bug ID: 67164
   Summary: [6 Regression] ICE: tree check: expected class
‘expression’, have ‘exceptional’
(argument_pack_select) in tree_operand_check, at
tree.h:3356
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: trippels at gcc dot gnu.org
  Target Milestone: ---

% cat github_113.ii
namespace std {
template  struct integral_constant {
  static constexpr _Tp value = 0;
};
template  struct conditional;
template  struct __or_;
template 
struct __or_<_B1, _B2> : conditional<1, _B1, _B2> {};
template  struct __and_;
template 
struct __and_<_B1, _B2> : conditional<1, _B2, _B1> {};
template  struct is_rvalue_reference;
template 
struct is_reference
: __or_, is_rvalue_reference<_Tp>>::type {};
template  _Tp declval();
struct __do_is_direct_constructible_impl {
  template ()))>
  static integral_constant __test(int);
};
template 
struct __is_direct_constructible_impl : __do_is_direct_constructible_impl {
  decltype(__test<_Tp, _Arg>(0)) type;
};
template 
struct __is_direct_constructible_new_safe
: __and_> {};
template 
struct __is_direct_constructible_new
: conditional::value, int,
  __is_direct_constructible_new_safe<_Tp, _Arg>> {};
template 
struct __is_direct_constructible
: __is_direct_constructible_new<_Tp, _Arg>::type {};
template  struct __is_nary_constructible;
template 
struct __is_nary_constructible<_Tp, _Arg>
: __is_direct_constructible<_Tp, _Arg> {};
template 
struct is_constructible : __is_nary_constructible<_Tp, _Args...>::type {};
template  struct enable_if;
template  struct conditional {
  typedef _Iftrue type;
};
template 
struct conditional {
  typedef _Iffalse type;
};
}
namespace boost {
namespace hana {
template  struct fast_and;
template  struct closure {
  template ::value...>::value>>
  closure(Yn...);
  template ::value...>::value>::type>
  closure(closure);
};
template  struct make_impl;
template  struct make_t {
  template  decltype(auto) operator()(X... x) {
return make_impl::apply(x...);
  }
};
template  make_t make;
struct Pair;
auto make_pair = make;
struct Tuple;
auto make_tuple = make;
template <> struct make_impl {
  template  static closure apply(Xs &&...);
};
struct pair : closure<> {
  using closure::closure;
};
template <> struct make_impl {
  template  static pair apply(F, S);
};
namespace struct_detail {
template  struct member_ptr {};
template  auto prepare_member_name_impl() {}
template  auto prepare_member_name() {
  return prepare_member_name_impl;
}
}
}
}
struct Person {
  int Person;
  auto apply() {
struct member_names;
boost::hana::make_tuple(boost::hana::make_pair(
boost::hana::struct_detail::prepare_member_name<0, member_names>(),
boost::hana::struct_detail::member_ptr{}));
  }
};

 % clang++ -std=c++14 -c github_113.ii
 %

(gcc-5 rejects the testcase)
 % g++ -std=c++14 -c github_113.ii
github_113.ii: In instantiation of ‘struct
std::__is_direct_constructible_impl&&>’:
github_113.ii:41:8:   required from ‘struct
std::is_constructible&&>’
github_113.ii:56:13:   required by substitution of ‘template boost::hana::closure::closure(Yn ...) [with Yn =
boost::hana::closure;  = ]’
github_113.ii:67:43:   required from ‘decltype(auto)
boost::hana::make_t::operator()(X ...) [with X = {boost::hana::pair};
Datatype = boost::hana::Tuple]’
github_113.ii:100:67:   required from here
github_113.ii:24:29: error: no matching function for call to
‘std::__is_direct_constructible_impl&&>::__test(int)
’
   decltype(__test<_Tp, _Arg>(0)) type;
 ^
github_113.ii:20:34: note: candidate: template
static std::integral_constant
std::__do_is_direct_constructible_impl::__test(int)
   static integral_constant __test(int);
  ^
github_113.ii:20:34: note:   template argument deduction/substitution failed:
github_113.ii:19:13: error: invalid cast of an rvalue expression of type
‘boost::hana::closure’ to type ‘boost::hana::pair&’
 typename = decltype(_Tp(declval<_Arg>()))>
 ^

(trunk ICEs since r214396)
 % g++ -c github_113.ii
github_113.ii: In substitution of ‘template::value
...>::value>::type  >
boost::hana::pair::pair(boost::hana::closure) [with Yn = ;
typename std::enable_if::value
...>::value>::type  = ]’:
github_113.ii:19:13:   required by substitution of ‘template static std::integral_constant
std::__do_is_direct_constructible_impl::__test(int) [with _Tp =
boost::hana::pair&; _Arg = boost::hana::closure&&;
 = ]’
github_113.ii:24:29:   required from ‘struct
std::__is_direct_constructible_impl&&>’
github_113.ii:41:8:   required from ‘struct
std::is_constructible&&>’
github_113.ii:56:13:   required by substitution of ‘template boost::hana::closur

[Bug c++/67164] ICE: tree check: expected class ‘expression’, have ‘exceptional’ (argument_pack_select) in tree_operand_check, at tree.h:3356

2015-08-09 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67164

Markus Trippelsdorf  changed:

   What|Removed |Added

Summary|[6 Regression] ICE: tree|ICE: tree check: expected
   |check: expected class   |class ‘expression’, have
   |‘expression’, have  |‘exceptional’
   |‘exceptional’   |(argument_pack_select) in
   |(argument_pack_select) in   |tree_operand_check, at
   |tree_operand_check, at  |tree.h:3356
   |tree.h:3356 |
  Known to fail||5.1.0, 6.0

--- Comment #1 from Markus Trippelsdorf  ---
With --enable-checking gcc-5 also ICEs.

gcc-4.9 rejects the testcase:

github_113.ii:70:47: error: template declaration of
‘boost::hana::make_t boost::hana::make’
 template  make_t make;
   ^
github_113.ii:72:18: error: ‘make’ was not declared in this scope
 auto make_pair = make;
  ^
github_113.ii:72:27: error: expected primary-expression before ‘>’ token
 auto make_pair = make;
   ^
github_113.ii:72:28: error: expected primary-expression before ‘;’ token
 auto make_pair = make;
^
github_113.ii:74:19: error: ‘make’ was not declared in this scope
 auto make_tuple = make;
   ^
github_113.ii:74:29: error: expected primary-expression before ‘>’ token
 auto make_tuple = make;
 ^
github_113.ii:74:30: error: expected primary-expression before ‘;’ token
 auto make_tuple = make;
  ^

[Bug c++/67164] ICE: tree check: expected class ‘expression’, have ‘exceptional’ (argument_pack_select) in tree_operand_check, at tree.h:3356

2015-08-09 Thread trippels at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67164

Markus Trippelsdorf  changed:

   What|Removed |Added

 CC||ldionne.2 at gmail dot com

--- Comment #2 from Markus Trippelsdorf  ---
(Louis, this ICE was introduced by commit 8a0ddb0fa7b6f7a of
https://github.com/ldionne/hana)


[Bug c++/67159] [c++concepts] Segfault while diagnosing constraint violation

2015-08-09 Thread jason at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67159

--- Comment #4 from Jason Merrill  ---
(In reply to Casey Carter from comment #3)
> Thanks once again, Jason. Procedural question: now that c++-concepts has
> landed on trunk, should I be tagging bug reports differently? i.e.,
> Version=6.0 and maybe "[concepts]" in the title?

Sounds good.


[Bug other/67165] New: please enable libbacktrace to work with compressed debug sections

2015-08-09 Thread doko at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67165

Bug ID: 67165
   Summary: please enable libbacktrace to work with compressed
debug sections
   Product: gcc
   Version: 5.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
  Assignee: unassigned at gcc dot gnu.org
  Reporter: doko at gcc dot gnu.org
  Target Milestone: ---

please enable libbacktrace to work with compressed debug sections. libbacktrace
doesn't work with stripped binaries. The unstripped binaries built with
compressed debug sections would save some space on disk.


[Bug c++/67166] New: Inconsistency between static data members and static functions when using multiple inheritance

2015-08-09 Thread anders.granlund.0 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67166

Bug ID: 67166
   Summary: Inconsistency between static data members and static
functions when using multiple inheritance
   Product: gcc
   Version: unknown
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: ---

Consider the following two programs:

  struct A { static const int x = 0; };
  struct B : A { using A::x; };
  struct C : B, A {};
  int main() { C::x; }


  struct A { static void x() {} };
  struct B : A { using A::x; };
  struct C : B, A {};
  int main() { C::x; }

Compile them with the following command line:

  g++ prog.cc -std=c++14 -pedantic-errors

GCC inconsistently accepts the first program, but rejects the second program
with the following error:

  prog.cc: In function 'int main()':
  prog.cc:4:16: error: reference to 'x' is ambiguous
 int main() { C::x; }
^
  prog.cc:1:26: note: candidates are: static void A::x()
 struct A { static void x() {} };
  ^
  prog.cc:1:26: note: static void A::x()

I think GCC should consistently accept both programs just like clang does.

This is because we have no ambiguity here in the name-lookup. There is only one
entity with name x, the static member of A.

I have tried this with gcc HEAD 6.0.0 20150808 here:

http://melpon.org/wandbox/permlink/mbr1XEKQp7bF71iS
http://melpon.org/wandbox/permlink/E5iKa6GfLG2q1m0o


[Bug other/67165] please enable libbacktrace to work with compressed debug sections

2015-08-09 Thread hjl.tools at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67165

H.J. Lu  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-09
 CC||hjl.tools at gmail dot com
 Ever confirmed|0   |1

--- Comment #1 from H.J. Lu  ---
Both ld and gold on binutils master branch support

--compress-debug-sections=[none|zlib|zlib-gnu|zlib-gabi]

to compress debug sections.  --compress-debug-sections=zlib-gnu is
for legacy .zdebug* compressed debug section support.  Support for
the gABI SHF_COMPRESSED debug sections should be sufficient.  bfd,
readelf and gold can decompress the SHF_COMPRESSED debug sections.


[Bug debug/67163] g2 generates incorrect decl_line

2015-08-09 Thread dehao at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67163

--- Comment #4 from dehao at gcc dot gnu.org ---
Right, in -g2 binary debug info, the decl_file is pointing to the header file
in which the function is declared. However, if the definition is available, it
makes more sense to point decl_file and decl_line where it's actually defined,
right? Additionally, it's better to keep g1 and g2 debug info consistent.


[Bug libfortran/66936] io/unix.c gratuitously uses S_IRWXG and S_IRWXO on the basis that umask() is available

2015-08-09 Thread sgk at troutmask dot apl.washington.edu
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66936

--- Comment #15 from Steve Kargl  ---
On Sun, Aug 09, 2015 at 08:53:36AM +, fxcoudert at gcc dot gnu.org wrote:
> Kai, as mingw maintainer, can you comment? Why did this issue appear recently?
> And does the patch seem OK to you?
> 

See comment #6.


[Bug libfortran/66936] io/unix.c gratuitously uses S_IRWXG and S_IRWXO on the basis that umask() is available

2015-08-09 Thread fxcoudert at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66936

--- Comment #16 from Francois-Xavier Coudert  ---
Author: fxcoudert
Date: Sun Aug  9 16:43:42 2015
New Revision: 226750

URL: https://gcc.gnu.org/viewcvs?rev=226750&root=gcc&view=rev
Log:
PR libfortran/66936
* io/unix.c (__MINGW32__): Undefine HAVE_UMASK.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/io/unix.c


[Bug libfortran/66936] io/unix.c gratuitously uses S_IRWXG and S_IRWXO on the basis that umask() is available

2015-08-09 Thread fxcoudert at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66936

Francois-Xavier Coudert  changed:

   What|Removed |Added

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

--- Comment #17 from Francois-Xavier Coudert  ---
(In reply to Steve Kargl from comment #15)
> See comment #6.

Thanks Steve, I had missed that.

Given the history and reasons, I've committed the patch to restore build on
mingw32. Marking as fixed on trunk.


[Bug rtl-optimization/67145] [6 Regression] associativity from psuedo-reg ordering

2015-08-09 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67145

Alan Modra  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-08-10
Summary|[6 Regression] Innefective  |[6 Regression]
   |plus-minus simplification   |associativity from
   ||psuedo-reg ordering
 Ever confirmed|0   |1

--- Comment #1 from Alan Modra  ---
This is what is really going on.  Shown below are the first two differences at
expand, shorn of irrelevant insn numbering, clobbers etc.

r224767 r224768
(set (reg:SI 143)   (set (reg:SI 143)
(plus:SI (reg/v/f:SI 134 [ in ])(plus:SI (reg/v/f:SI 134 [ in ])
(reg/v:SI 139 [ x ])))  (reg:SI 142)))
(set (reg/f:SI 144) (set (reg/f:SI 144)
(plus:SI (reg:SI 143)   (plus:SI (reg:SI 143)
(reg:SI 142)))  (reg/v:SI 139 [ x ])))
...
(set (reg:SI 151)   (set (reg:SI 151)
(plus:SI (reg/v/f:SI 134 [ in ])(plus:SI (reg/v/f:SI 134 [ in ])
(reg/v:SI 139 [ x ])))  (reg:SI 150)))
(set (reg/f:SI 152) (set (reg/f:SI 152)
(plus:SI (reg:SI 151)   (plus:SI (reg:SI 151)
(reg:SI 150)))  (reg/v:SI 139 [ x ])))

It isn't too hard to see why fwprop sees an optimisation opportunity for one
but not the other.

The questions I have are:
1) Why isn't "in + x" hoisted out of the loop?
2) If we care about associativity, isn't the r224768 ordering correct in that
it follows the gimple association?  See gimple below.
3) If we want reverse associativity at the rtl level, isn't relying on sorting
done according to pseudo reg numbering deep inside a function simplifying
additive expressions, just a little bit fragile?

  # ivtmp.7_47 = PHI 
  _11 = *pretmp_53;
  _13 = _11 + x_12(D);
  _14 = (sizetype) _13;
  _16 = in_15(D) + _14;
  _17 = *_16;
  MEM[base: out_4(D), index: ivtmp.7_47, offset: 0B] = _17;
  _21 = *pretmp_54;
  _22 = x_12(D) + _21;
  _28 = *pretmp_57;
  _29 = _22 + _28;
  _30 = (sizetype) _29;
  _31 = in_15(D) + _30;
  _32 = *_31;
  MEM[base: out_4(D), index: ivtmp.7_47, offset: 1B] = _32;


[Bug rtl-optimization/67145] [6 Regression] associativity from psuedo-reg ordering

2015-08-09 Thread amodra at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67145

--- Comment #2 from Alan Modra  ---
Note that r224768 was specifically about keeping register order (association
and commutation) when simplify_plus_minus does not simplify an expression,
because ordering matters for machine insn matching when an expression contains
fixed regs.

It would be possible to modify the r224768 change so that expressions not
containing fixed regs are sorted, but I think that would be the wrong fix due
to points (2) and (3) above.


[Bug tree-optimization/67153] [5/6 Regression] integer optimizations 53% slower than std::bitset<>

2015-08-09 Thread ncm at cantrip dot org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67153

--- Comment #3 from ncm at cantrip dot org ---
Created attachment 36159
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36159&action=edit
bitset, but using an inlined container adapter, not lambdas, and slow

This version compiles just as badly as the integer version, even by gcc-4.9.


[Bug c/39121] strange behavior in chained operations

2015-08-09 Thread frankhb1989 at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39121

frankhb1989 at gmail dot com changed:

   What|Removed |Added

 CC||frankhb1989 at gmail dot com

--- Comment #9 from frankhb1989 at gmail dot com ---
This should work since C++11 because the rules of builtin assignment were
modified (CWG 222; see also CWG 637). However, it is still undefined in C11,
even if the new "sequenced before" wording has been copied from C++11
(WG21/N1944).
Not sure if any diagnostics should be changed.


[Bug fortran/64022] [F2003][IEEE] ieee_support_flag does not handle kind=10 and kind=16 REAL variables

2015-08-09 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64022

--- Comment #12 from uros at gcc dot gnu.org ---
Author: uros
Date: Mon Aug 10 05:13:01 2015
New Revision: 226755

URL: https://gcc.gnu.org/viewcvs?rev=226755&root=gcc&view=rev
Log:
PR fortran/64022
* gfortran.dg/ieee/large_4.f90: New test.


Added:
trunk/gcc/testsuite/gfortran.dg/ieee/large_4.f90
Modified:
trunk/gcc/testsuite/ChangeLog