https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101393

--- Comment #15 from Franz Sirl <sirl at gcc dot gnu.org> ---
(In reply to Segher Boessenkool from comment #14)
> (In reply to Franz Sirl from comment #12)
> > The emitted .machine is easy to fix, what's not so easy to fix is the
> > intention behind Segher's change that caused the wrong .machine.
> > 
> > Consider this source compiled with -mcpu=7400:
> > 
> > void ppcaltivecfunc (void) __attribute__ ((__target__ 
> > ("cpu=7400,altivec")));
> > void ppcaltivecfunc (void)
> > {
> >   asm ("lvx 0,0,11");
> > }
> > 
> > 
> > void ppc403func (void) __attribute__ ((__target__ ("cpu=403")));
> > void ppc403func (void)
> > {
> >   asm ("lvx 0,0,11");
> > }
> 
> "7400" and "403" are not supported target attribute values, fwiw (says the
> manual).

Hmm, I don't understand what you mean. As I read the manual any -mcpu= option
is allowed? And certainly this seems to do something as you can see in the
assembler source. The only strange thing is that -mppc is passed to the
assembler for -mcpu=7400, but in the assembler source it selects ".machine
power7"?

> > That's why I suggested more control over the sticky flags via .machine
> > pseudo-ops, -mdotmachine-realcpu-resets-sticky or similar. That way the
> > users of pure assembly sources won't see a change in behaviour, but the
> > compiler still gains the full control it needs.
> 
> We should just make this stuff work better / more intuitively :-)  We do
> not need to preserve unworkable (or buggy) semantics, in general.

In that case I'll send a minimum patch for now.

Reply via email to