Tal Agmon wrote:
I see many references in gcc code to SImode. Isn't this problematic for
ports such as this when SImode does not represent the natural int?

In the gcc dir, "grep SImode *.[ch] | wc" shows only 67 lines.  That
isn't a large number relatively speaking.  Many of these are in
comments, and some are correct because they relate to libgcc functions.

It does look like loop-iv.c is broken though.  Every
simplify_gen_relational call uses SImode.  That probably should be
word_mode instead.  You might want to submit a bug report for that.

I would like to define PSImode for 36-bit accumulators. Yet, when I'm
using attribute mode to define PSImode variable, gcc Is choosing SImode which is the smallest mode for it defined through wider_mode table. I want to define different behavior for PSImode Variables, how can I make sure this mode is actually attached to a
variable?

I'm not sure if anyone has ever done this before.  The
assembler/linker/etc have no support for odd sized variables.  Usually
the partial int modes were just used internal to gcc.  For instance, if
you have 24-bit address registers, you would use 32-bit pointers, and
convert on input/output to the 24-bit PSImode internally, but no user
variable would ever be PSImode.

Anyways, I assume you are talking about the code in stor-layout.c in
layout_type that calls smallest_mode_for_size.  This uses
TYPE_PRECISION.  Have you defined a built-in type with an appropriate
size for your PSImode variables?  There is certainly no standard type
with odd sizes that will work here.

Reply via email to