> From: Eric Christopher [mailto:[email protected]] > Sent: Monday, June 17, 2013 2:32 PM > To: Robinson, Paul > Cc: Adrian Prantl; Nadav Rotem; [email protected] > Subject: Re: r183597 - Debug info: An if condition now creates a lexical > scope of its own. > > On Mon, Jun 17, 2013 at 2:29 PM, Robinson, Paul > <[email protected]> wrote: > >> From: [email protected] [mailto:cfe-commits- > >> [email protected]] On Behalf Of Eric Christopher > >> Sent: Monday, June 10, 2013 4:05 PM > >> To: Adrian Prantl > >> Cc: Nadav Rotem; [email protected] > >> Subject: Re: r183597 - Debug info: An if condition now creates a > lexical > >> scope of its own. > >> > >> On Mon, Jun 10, 2013 at 3:56 PM, Adrian Prantl <[email protected]> > >> wrote: > >> > (CC'ing John because he understands the intricacies of LexicalScope > >> better than I do) > >> > > >> > On the first glimpse LexicalScope appears to be a subclass of > >> RunCleanupsScope that additionally emits a (DebugInfo-)LexicalScope. > But > >> looking at the destructors it appears that they have slightly > different > >> semantics: ~LexicalScope runs ForceCleanup and ~RunCleanupsScope > >> apparently doesn't. > >> > > >> > I'm wary that switching to Lexicalscope in > >> CodeGenFunction::EmitIfStmt() might lead to tricky ARC or EH-related > >> problems because of that. > >> > > >> > Does anyone have an opinion on that? > >> > >> That bit was added here: > >> > >> commit 495cfa46300979642acde8d93a1f21c9291dac98 > >> Author: Nadav Rotem <[email protected]> > >> Date: Sat Mar 23 06:43:35 2013 +0000 > >> > >> Make clang to mark static stack allocations with lifetime markers > >> to enable a more aggressive stack coloring. > >> Patch by John McCall with help by Shuxin Yang. > >> rdar://13115369 > >> > >> > >> and oddly not to RunCleanupsScope. > >> > >> Nadav? > >> > >> -eric > > > > Looks like ~LexicalScope() just wants RunCleanupsScope::ForceCleanup() > > to happen before rescopeLabels(). All the right stuff happens in the > right > > order if you change the RunCleanupsScope instance to LexicalScope. > > (RunCleanupsScope::ForceCleanup() does pretty much exactly the same > thing > > as ~RunCleanupsScope() so it works out. It could be done in a more > obvious > > way, but functionally they're equivalent.) > > > > Agreed. I was just curious why Nadav changed one, but not the other. > > Nadav? :) > > -eric
Because rescopeLabels() is part of LexicalScope and not RunCleanupsScope? I don't see what there would be to change in ~RunCleanupsScope. --paulr _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
