> 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.) And as long as the DWARF lexical scope tag is omitted if there aren't any actual declarations, I have no debug-info-size concerns. --paulr _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
