Skip to content
  • Simon Marlow's avatar
    [project @ 2005-11-08 12:56:04 by simonmar] · 03341842
    Simon Marlow authored
    gcc's -fstrict-aliasing is biting us when we use the stack to store
    different types of objects.  For example:
    
      *((StgDouble*)((W_)Sp-8)) = *((StgDouble*)((W_)Sp+8));
      Sp[1] = (W_)&s1Cx_info;
    
    gcc feels free to reorder these two lines, because they refer to
    differently typed objects, even though the assignment to Sp[1] clearly
    aliases the read from the same location.
    
    Trying to fix this by accessing locations using union types might be
    possible, but I took the sledgehammer approach of
    -fno-strict-aliasing.  This is justified to a certain extent because
    our generated C code is derived from a very weakly-typed internal
    language (C--).
    03341842