[MLton] Port to HP-UX/IA64 done
    Ville Laurikari 
    ville at laurikari.net
       
    Mon Feb  4 03:56:32 PST 2008
    
    
  
On Thu, Jan 31, 2008 at 08:53:01AM -0600, Matthew Fluet wrote:
> I think these are all benign, although I am surprised that on a 32-bit
> build, GCC wants to give a struct of two 32-bit values 64-bit alignment.
According to [1] 32-bit ints should be aligned on a 4-byte boundary.
Structs should be aligned according to their most strictly aligned
component.  However, dynamically allocated regions (e.g. from
malloc()) must be aligned more strictly:
      size in bytes  |   alignment required
  -------------------+----------------------------
                  1  |   none
                  2  |   2-byte boundary
                3-4  |   4-byte boundary
                5-8  |   8-byte boundary
                9-   |  16-byte boundary
As far as I can tell from some mailing list discussions, GCC does not
always respect the 16-byte boundary requirement for large objects on
IA64.  This can be problematic when linking with code compiled with
the Intel C Compiler, which does things by the book in this respect.
The posts I read about this were a few years old, so this may have
changed by now.  I didn't check.
Misaligned accesses are supported, but "at a substantial penalty".
Anyway, at least we have MLton working on HPUX/IA64 now.  Some
applications are probably suffering from the misaligned access
penalty, but they are probably suffering even more from the C-codegen.
By the way, the IA64 binaries are now on http://mlton.org/Experimental.
[1] "Itanium Software Conventions and Runtime Architecture"
    http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801/?ciid=821ffd06ab1b7110VgnVCM100000275d6e10RCRD
--
http://www.iki.fi/vl/
    
    
More information about the MLton
mailing list