On Mon, Jun 4, 2012 at 4:52 PM, Richard Guenther <richard.guent...@gmail.com> wrote: > On Mon, Jun 4, 2012 at 4:50 PM, Steven Bosscher <stevenb....@gmail.com> wrote: >> On Mon, Jun 4, 2012 at 3:34 PM, Richard Guenther >> <richard.guent...@gmail.com> wrote: >>>> first_global_object_name: >>>> ada/gcc-interface/trans.c: first_global_object_name = ggc_strdup >>>> (IDENTIFIER_POINTER (t)); >>>> ada/gcc-interface/utils.c: ASM_FORMAT_PRIVATE_NAME (label, >>>> first_global_object_name, 0); >>>> >>>> This comes from here: >>>> >>>> /* Declare the name of the compilation unit as the first global >>>> name in order to make the middle-end fully deterministic. */ >>>> t = create_concat_name (Defining_Entity (Unit (gnat_root)), NULL); >>>> first_global_object_name = ggc_strdup (IDENTIFIER_POINTER (t)); >>>> >>>> Only the Ada front end has code like this. The other front ends set >>>> first_global_object_name via notice_global_symbol (which is called >>>> from varpool_finalize_decl and a few other places). It seems like a >>>> good idea to me, to make first_global_object_name deterministic. >>>> Perhaps it should be set to the top level translation unit by all >>>> front ends? That would also simplify notice_global_symbol and prevent >>>> it from accessing/creating DECL_RTL early. >>>> >>>> >>>> user_label_prefix: >>>> c-family/c-cppbuiltin.c: builtin_define_with_value >>>> ("__USER_LABEL_PREFIX__", user_label_prefix, 0); >>>> >>>> Because user_label_prefix is defined in toplev.c, I think its global >>>> decl should be moved from output.h to toplev.h. >>> >>> Sounds reasonable. >>> >>>> >>>> asm_out_file for ASM_OUTPUT_IDENT: >>>> c-family/c-lex.c:#include "output.h" /* for asm_out_file */ >>>> c-family/c-lex.c: ASM_OUTPUT_IDENT (asm_out_file, (const char >>>> *) cstr.text); >>>> ada/gcc-interface/trans.c: (asm_out_file, >>>> >>>> I am not sure how to fix this. Maybe also write this out via a version >>>> of build_constant_desc that puts the data in a specific section (that >>>> would be required for MIPS' version of ASM_OUTPUT_IDENT). >>> >>> Hm. The docs for -fno-ident say >>> >>> @item -fno-ident >>> @opindex fno-ident >>> Ignore the @samp{#ident} directive. >>> >>> And the CPP docs: >>> >>> @findex #ident >>> @findex #sccs >>> The @samp{#ident} directive takes one argument, a string constant. On >>> some systems, that string constant is copied into a special segment of >>> the object file. On other systems, the directive is ignored. The >>> @samp{#sccs} directive is a synonym for @samp{#ident}. >>> >>> I suppose make ASM_OUTPUT_IDENT a target hook instead. >> >> This doesn't really help: You'd now have a target hook called from the >> front end that writes to asm_out_file. I want front ends to stop >> writing to asm_out_file at all. > > I mean make the whole "write #ident" a target hook.
Another possibility would be to generate a toplevel asm at this point ... Richard.