This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFA: Ada variable-sized objects, bit_size_type == TImode, and divti3


Hello,

Ada builds are currently failing on s390x due to missing __divti3.

Now, I guess we could add 128-bit division routines to libgcc.
However, the question is whether this should really be needed.

What appears to happen is that the Ada source in question defines
a variable-sized object with non-standard alignment requirements,
and Ada reflects this by building a DECL_SIZE_UNIT tree containing
various mult_expr and div_expr nodes.  As alignment is counted in
bits, those have type bit_size_type, which on 64-bit platforms
corresponds to TImode. When expanding that tree, the backend emits
calls to __divti3.

However, I'm wondering:

- does bit_size_type really need to be TImode
- if so, shouldn't these special cases be implemented more efficiently
  somewhere (we divide by an integer constant 8 here)
- in general, are we really supposed to need TImode division

How does this work on other 64-bit platforms?


Mit freundlichen Gruessen / Best Regards

Ulrich Weigand

--
  Dr. Ulrich Weigand
  Linux for S/390 Design & Development
  IBM Deutschland Entwicklung GmbH, Schoenaicher Str. 220, 71032 Boeblingen
  Phone: +49-7031/16-3727   ---   Email: Ulrich dot Weigand at de dot ibm dot com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]