On 13 February 2013 14:10, Iain Buclaw <ibuc...@ubuntu.com> wrote: > On 13 February 2013 13:26, Johannes Pfau <nos...@example.com> wrote: > >> Am Tue, 12 Feb 2013 18:16:31 +0000 >> schrieb Iain Buclaw <ibuc...@ubuntu.com>: >> >> > TREE_ADDRESSABLE should be sufficient. I can't think any reason off >> > the top of my head why not. >> > >> >> maybe TREE_ADDRESSABLE is too strong: It generates errors in the >> backend if the frontend produces non-lvalues: >> --- >> auto b = Date(); >> a(b); >> --- >> >> works, but >> --- >> a(Date()); >> --- >> >> fails in gimplify.c. Do we really have to rewrite such cases so that >> non-PODs get a temporary variable? And how would this be done? It seems >> we would have to use the frontend for this, as maybeMakeTemp and >> makeTemp refuse to work for TREE_ADDRESSABLE types. >> > > Don't set it on the variable, set it on the type. > > TypeStruct::toCtype() > { > TYPE_ADDRESSABLE(ctype) = !isPOD(); >
TREE_ADDRESSABLE (ctype) = !sym->isPOD() even :-) Regards -- Iain Buclaw *(p < e ? p++ : p) = (c & 0x0f) + '0';