[Bug c++/57047] [4.7/4.8/4.9 Regression] [C++11] stl_pair.h:137:64: internal compiler error: Segmentation fault in constexpr constructor

2013-05-10 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57047

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org

--- Comment #11 from Jason Merrill jason at gcc dot gnu.org ---
Fixed.


[Bug c++/57047] [4.7/4.8/4.9 Regression] [C++11] stl_pair.h:137:64: internal compiler error: Segmentation fault in constexpr constructor

2013-04-23 Thread jakub at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57047



Jakub Jelinek jakub at gcc dot gnu.org changed:



   What|Removed |Added



 CC||jason at gcc dot gnu.org

   Target Milestone|--- |4.7.4

Summary|[C++11] stl_pair.h:137:64:  |[4.7/4.8/4.9 Regression]

   |internal compiler error:|[C++11] stl_pair.h:137:64:

   |Segmentation fault in   |internal compiler error:

   |constexpr constructor   |Segmentation fault in

   ||constexpr constructor



--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2013-04-23 
15:10:32 UTC ---

Reduced testcase:

template typename

struct A;

template typename T

struct A T 

{

  typedef T type;

};

template typename T

constexpr T  foo (typename A T::type  __t) noexcept

{

  return static_cast T (__t);

}

template class T1, class T2

struct B

{

  T1 t1;

  T2 t2;

  template class U

  constexpr B (U  __x, const T2  __y) : t1 (foo U (__x)), t2 (__y) {}

};

static inline constexpr bool

fn1 (const char c)

{

  return ('0' = c)  (c = '9');

}

static inline constexpr bool

fn2 (const char c)

{

  return (('A' = c)  (c = 'Z')) || (('a' = c)  (c = 'z'));

}

static constexpr bool

fn3 (const char *const x)

{

  return (x[1] == '\0'  x[0] == ']') ? true : (!fn1 (x[0])) ? false : fn3

(x[1]);

}

static constexpr bool

fn4 (const char *const x)

{

  return (x[0] == '\0') ? fn3 (x[1]) : fn4 (x[1]);

}

static inline constexpr bool

fn5 (const char *const x)

{

  return fn2 (x[0]) ? fn4 (x) : false;

}

struct C final

{

  constexpr C (const char *const t1) : c (fn5 (t1) ? 199 : 69) {}

  unsigned c;

};

B C, C p (a, b);



Started to ICE in between r175000 and r175062.