Hi, In gcc/cp/mangle.c (write_unscoped_name) we have:
/* If not, it should be either in the global namespace, or directly in a local function scope. */ gcc_assert (context == global_namespace || context != NULL || TREE_CODE (context) == FUNCTION_DECL); Which doesn't look like a thought-out assert: e.g. TREE_CODE (context) will segfault when context==NULL. According to the comment before the assert supposed to look more like: gcc_assert (context == global_namespace || (context != NULL && TREE_CODE (context) == FUNCTION_DECL)); But it gives us an ICE with g++.dg/cpp0x/lambda/lambda-defarg3.C BTW: First the check was "|| context == NULL", then it was removed by r149964 and then came back as "|| context != NULL" by r153768. May be I am missing something here? Could somebody clarify that peace of code please. --Alexander