http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56351



--- Comment #1 from Seth LaForge <sethml at google dot com> 2013-02-15 20:16:43 
UTC ---

Ugh, my attachment was a bit mangled.  Here's the source to stimulate the issue

- gcc_bug.c:



#include <stdio.h>



void PrintDouble(double v) __attribute__((noinline));

void PrintDouble(double v) {

  union { double d; int i[2]; } u = { v };

  printf("%f (0x%08X:%08X)", v, u.i[0], u.i[1]);

}



struct { double val; } __attribute__((packed)) unaligned_double;



void PrintAndStoreUnaligned(double v) __attribute__((noinline));

void PrintAndStoreUnaligned(double v) {

  PrintDouble(v);

  unaligned_double.val = v;

}



int main() {

  double val = 1.234567;

  printf("val is: ");

  PrintDouble(val);

  printf("\nCalling PrintAndStoreUnaligned: ");

  PrintAndStoreUnaligned(val);

  printf("\nunaligned_double.val is: ");

  PrintDouble(unaligned_double.val);

  printf("\n");

  return 0;

}

Reply via email to