================
Comment at: lib/Sema/SemaLambda.cpp:101
@@ -98,1 +100,3 @@
+ (isa<FunctionDecl>(CurContext) &&
+ Context.getTargetInfo().getCXXABI().isMicrosoft())) {
ManglingContextDecl = 0;
----------------
Eli Friedman wrote:
> Why do you need to number anything in a function which isn't inline? CodeGen
> can mangle static variables etc. however it wants because they aren't
> externally visible.
I'm using these to number bits in a bitfield, not to mangle. I have to use
this mechanism to number the bits of inline functions, so it makes sense to use
it to number bits of non inline functions too. Otherwise I have to add back
the CXXABIFunctionState code I had in the first version of this patch.
I'm having a very hard time extracting this function from Sema and moving it
over to AST/ItaniumCXXABI.cpp as John suggested. It accesses a bunch of Sema
fields. Do you have any thoughts on how this should look in the long run?
I expect I will also need to number other things like scopes to handle your
example of:
int bar();
inline void foo() {
static int f = bar();
{ static int f = bar(); }
}
These are differentiated by mangling in the current scope depth. The first f
is at level 2 (global 0?, param, local) and the second f is at level 3 (+1
local scope). MicrosoftCXXNameMangler::mangleLocalName() attempts to implement
this, but it is wrong.
http://llvm-reviews.chandlerc.com/D1416
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits