This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: msp430 port
- From: DJ Delorie <dj at redhat dot com>
- To: Jeff Law <law at redhat dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Fri, 19 Jul 2013 18:27:19 -0400
- Subject: Re: msp430 port
- References: <51E700D1 dot 702 at redhat dot com>
> GPL + exception seems like the way to go, except in those cases where
> the code is coming from a 3rd party.
Already pointed out and fixed, but I'll double check that they're all
GPL+E.
> I'm assuming you documented all the MSP430 options. I didn't check them
> closely. I'm also assuming the libgcc functions are reasonably correct.
I did.
> For popm, why not define a new output modifier instead of using %I, per
> the comments. That seems cleaner to me.
Done.
> movqihi seems wrong. You really should determine why the standard
> methods for handling automatic elimination of extensions when loading
> from memory isn't working. I believe most RISC port in GCC uses those
> mechanisms successfully.
I went through every reference to LOAD_EXTEND_OP in the gcc sources,
added printfs, and for each that got hit, either it was looking for a
SUBREG (don't have one at that point) or was looking at the load and
zero_extend as separate insns (had nothing to do) or was related to
reload (nothing got reloaded).
I checked sparc, and they basically did what I did - they included a
pattern for load+extend (zero_extendqisi2_insn), despite setting
LOAD_EXTEND_OP to ZERO_EXTEND and having WORD_REGISTER_OPERATIONS set.
Same for mn10300.
So... I'm thinking, since every QImode operation has an implicit
zero_extend, for each of those I need a variant that includes a
zero_extend operation as well?