------- Comment #21 from pinskia at gcc dot gnu dot org 2010-07-14 16:44 ------- (In reply to comment #20) > (In reply to comment #15) > > I found the similar case with gcc 4.4.4 of MacPorts and gcc 4.4.0 of MinGW. > I think the code in comment #15 is invalid and voilates C/C++ aliasing rules.
Even if it did not voilate aliasing rules, the IR looks good: D.4999_70 = VIEW_CONVERT_EXPR<const union u>(D.4995_68).i; D.4863_25 = VIEW_CONVERT_EXPR<union u>(D.4999_70).e[3]; D.4864_26 = VIEW_CONVERT_EXPR<union u>(D.4999_70).e[2]; D.4865_27 = VIEW_CONVERT_EXPR<union u>(D.4999_70).e[1]; D.4866_28 = VIEW_CONVERT_EXPR<union u>(D.4999_70).e[0]; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44900