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

            Bug ID: 117563
           Summary: RISC-V: -mcpu is ignored when -march has been
                    specified.
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rdapp at gcc dot gnu.org
                CC: kito.cheng at gmail dot com, law at gcc dot gnu.org,
                    palmer at dabbelt dot com, vineetg at rivosinc dot com
  Target Milestone: ---
            Target: riscv

As discussed yesterday, here's the bug for documentation and discussion
purposes.

When e.g. specifying -march=rv64gcv -mcpu=rv64gcv_zvl256b the zvl256b is
silently ignored because -march takes precedence over -mcpu.

This behavior is documented (invoke.texi) so we're behaving as specified:
"Note that @option{-mcpu} does not override @option{-march} or
@option{-mtune}."

I'd still argue that it is surprising to the user.  It's often the case that a
Makefile sets a default -march in which case a manually specified -mcpu just
sets -mtune.  (At least I hope it does)  

IMHO better options are to:
- Combine/merge both options.
- Issue a warning.
- As -mcpu is basically -march + -mtune, have the rightmost one take precedence
over previous ones.

As Kito mentioned the strongest reason not to change anything is that LLVM has
the same behavior and we don't want to be incompatible.

Reply via email to