Bernd Schmidt <bschm...@redhat.com> writes: > On 10/05/2015 04:47 PM, Richard Sandiford wrote: >> @@ -9536,7 +9520,7 @@ fold_builtin_classify (location_t loc, tree fndecl, >> tree arg, int builtin_index) >> { >> r = TREE_REAL_CST (arg); >> if (real_isinf (&r)) >> - return real_compare (GT_EXPR, &r, &dconst0) >> + return real_compare (GT_EXPR, &r, &dconst<0> ()) >> ? integer_one_node : integer_minus_one_node; >> else >> return integer_zero_node; > > So... are the templates magic enough not to make us create a new > temporary every time this is used?
Yeah, the static variables become comdat objects keyed off the full name (dconst<...>::value). They're shared between calls and between TUs. Thanks, Richard