On Tue, Jan 20, 2015 at 09:26:12AM -0500, David Edelsohn wrote: > On Tue, Jan 20, 2015 at 12:41 AM, Alan Modra <amo...@gmail.com> wrote: > > On Mon, Jan 19, 2015 at 10:43:29PM -0500, David Edelsohn wrote: > >> On Fri, Jan 17, 2014 at 10:58 PM, Alan Modra <amo...@gmail.com> wrote: > >> > This patch cures PR59828 by translating all the -mcpu options at once, > >> > in order, to their equivalent assembler -m options by using a new spec > >> > function. In the process this removes some duplication. > >> > >> ASM_CPU_SPEC is too fragile a mechanism. I would much prefer to > >> expand on the ".machine" directive that I added to > >> rs6000_file_start(). The initial implementation explicitly avoids > >> .machine when -mcpu= or --with-cpu= is present as a conservative > >> start. > >> > >> It seems much better to select a .machine directive based on the > >> actual target ISA flag bits enabled than translating CPU command line > >> options to ASM options. Patches to replace ASM_CPU_SPEC with .machine > >> and expand functionality for AIX are welcome. > > > > This might make sense when looking only at gcc, but when considering > > the whole toolchain I think you'll run into difficulty. gas and other > > powerpc assemblers have always been invoked with -m options to select > > the cpu, so if you do away with ASM_CPU_SPEC and rely on .machine then > > you will be exercising the assembler in a new way. I am sure that > > this will not work for all powerpc assemblers currently in use. > > It is stressing .machine more than that feature has been in the past, > but it is functionality that is suppose to work. .machine already has > been stressed more with IFUNC pushing and popping ISAs. > > Are you concerned about the fundamental functionality of the pseudo-op > or a particular GAS release missing support for a particular ISA? AIX > supports .machine, but I think that it expects slightly different > processor names. I am not certain about LLVM-AS, but it normally is > not fed external assembly language files.
I'm concerned about initialisation that might happen based on a -m option that doesn't happen with .machine. A quick look over the gas source showed we currently have at least one case like this: ppc_dwarf2_line_min_insn_length is only set from command line -m options. This means that if you want debug with VLE insns, you cannot currently invoke gas without -mvle. ".machine vle" by itself won't work. I think there may be other similar problems with setting the bfd arch/mach pair. -- Alan Modra Australia Development Lab, IBM