Commit fe79fc06 by Paolo Carlini Committed by Paolo Carlini

re PR c++/58176 (ICE in output_constant, at varasm.c:4658)

2013-11-07  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58176
	* varasm.c (output_constant): Handle NULLPTR_TYPE.

/testsuite
2013-11-07  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58176
	* g++.dg/cpp0x/nullptr30.C: New.

From-SVN: r204514
parent cb9426fc
2013-11-07 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58176
* varasm.c (output_constant): Handle NULLPTR_TYPE.
2013-11-07 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (ix86_expand_set_or_movmem): Don't set
2013-11-07 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58176
* g++.dg/cpp0x/nullptr30.C: New.
2013-11-07 Yury Gribov <y.gribov@samsung.com>
Jakub Jelinek <jakub@redhat.com>
......
// PR c++/58176
// { dg-do compile { target c++11 } }
// Nil
struct nil_ { constexpr nil_ () {} };
constexpr nil_ nil;
// Cons
template <class H, class T = nil_>
struct cons_ {
using head_ = H;
using tail_ = T;
H head;
T tail;
constexpr cons_() {}
constexpr cons_(H const &h, T const &t) : head(h), tail(t) {}
};
template <class H, class T = nil_>
constexpr cons_<H, T> cons (H const &h, T const &t = nil) { return
cons_<H,T>(h,t); }
// List
template <class... T> struct list_s;
template <class H, class... T>
struct list_s<H, T...> {
using type = cons_<H, typename list_s<T...>::type>;
};
template <>
struct list_s<> {
using type = nil_;
};
template <class... T>
using list_ = typename list_s<T...>::type;
constexpr nil_ list () { return nil; }
template <class H, class... T>
constexpr list_<H, T...> list (H h, T... t) { return cons(h, list(t...)); }
constexpr auto l1 = list("monkey", 123.4, cons(1, 2), nullptr);
......@@ -4685,6 +4685,7 @@ output_constant (tree exp, unsigned HOST_WIDE_INT size, unsigned int align)
case OFFSET_TYPE:
case FIXED_POINT_TYPE:
case POINTER_BOUNDS_TYPE:
case NULLPTR_TYPE:
if (! assemble_integer (expand_expr (exp, NULL_RTX, VOIDmode,
EXPAND_INITIALIZER),
MIN (size, thissize), align, 0))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment