[GHC] #2917: alloca and allocaArray do not respect alignment

GHC cvs-ghc at haskell.org
Mon Dec 27 18:53:47 CET 2010


#2917: alloca and allocaArray do not respect alignment
-----------------------------+----------------------------------------------
  Reporter:  guest           |          Owner:                  
      Type:  bug             |         Status:  new             
  Priority:  normal          |      Milestone:  _|_             
 Component:  Compiler (FFI)  |        Version:  6.12.3          
Resolution:                  |       Keywords:                  
  Testcase:                  |      Blockedby:                  
Difficulty:  Unknown         |             Os:  Unknown/Multiple
  Blocking:                  |   Architecture:  Unknown/Multiple
   Failure:  None/Unknown    |  
-----------------------------+----------------------------------------------

Comment(by Lemming):

 For a wrapper around 'malloc' we could waste less memory, if we would
 require that 'free' has a Storable constraint and requires that its
 pointer type matches the one of the corresponding 'malloc'. With the size
 and alignment information, 'malloc' and 'free' could decide whether to pad
 at all. Even if they pad, they can save memory by putting the pointer to
 full allocated block ''after'' the block of aligned data. E.g. compare the
 layout, where 'p' is a byte of the pointer to the full allocated block,
 'a' is a byte of 16-byte aligned data, and '*' is allocated but unused
 (=wasted) padding byte.
 {{{
 0           0   1               2              2
 0           C   0               0              F
 ************ppppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

 0               1               2  2
 0               0               0  3
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapppp
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2917#comment:25>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the Glasgow-haskell-bugs mailing list