This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [C++ PATCH] Fix PR 55418


Hi,

On 11/22/2012 04:06 PM, Jakub Jelinek wrote:
On Thu, Nov 22, 2012 at 02:28:18PM +0100, Paolo Carlini wrote:
On 11/22/2012 01:06 PM, Markus Trippelsdorf wrote:
The fix is trivial. I would appreciate if someone could commit this.
I agree it qualifies as obvious and I mean to commit the patch on
your behalf before the end of the day if nobody objects. To be
super-safe, I guess I will also run the testsuite with the current
code and trivial_p initialized to true at the beginning of the
function.
I think trivial_p used to be uninitialized only for deleted_p functions,
not sure if those are considered trivial or not (and whether it matters)...
I think that the Valgrind complain is benign and, by the way, I just run the testsuite with current code + trivial_p initialized to true with no regressions. In detail what is happening is that, as you say, in the special case of deleted_p true and lambdas, we return from synthesized_method_walk and trivial_p is still uninitialized. Then we have:

  if (!trivial_p && type_has_trivial_fn (type, kind))
    type_set_nontrivial_flag (type, kind);

which, if trivial_p is is still uninitialized may not do its job of forcing nontrivial set in type: I don't think this is a serious problem for lambdas (in any case, when code elsewhere detects deleted shouldn't bother anyway of checking triviality; testsuite passes with trivial_p initialized to true too), but Markus (and me ;) proposes anyway to initialize trivial_p to false, thus we should be fine (way below trivial_p is used again but only when deleted_p is false).

Paolo.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]