OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gcc.dg/] [compat/] [struct-align-1.h] - Rev 689

Compare with Previous | Blame | View Log

/* Define several variants of a struct for which the alignment differs
   between powerpc64-linux and powerpc64-aix.  This might be interesting
   for other targets as well.  */
 
#define DESC_orig "original"
struct B1_orig {
  char c;
  double d;
};
 
struct A2_orig {
  double d;
};
 
struct B2_orig {
  char c;
  struct A2_orig a2;
};
 
struct A3_orig {
  double d;
  int i;
};
 
struct B3_orig {
  char c;
  struct A3_orig a3;
};
 
#ifndef SKIP_ATTRIBUTE
#define DESC_p_all "packed attribute for all"
struct B1_p_all {
  char c;
  double d;
} __attribute__ ((packed));
 
struct A2_p_all {
  double d;
} __attribute__ ((packed));
 
struct B2_p_all {
  char c;
  struct A2_p_all a2;
} __attribute__ ((packed));
 
struct A3_p_all {
  double d;
  int i;
} __attribute__ ((packed));
 
struct B3_p_all {
  char c;
  struct A3_p_all a3;
} __attribute__ ((packed));
 
#define DESC_p_inner "packed attribute for inner"
struct B1_p_inner {
  char c;
  double d;
};
 
struct A2_p_inner {
  double d;
} __attribute__ ((packed));
 
struct B2_p_inner {
  char c;
  struct A2_p_inner a2;
};
 
struct A3_p_inner {
  double d;
  int i;
} __attribute__ ((packed));
 
struct B3_p_inner {
  char c;
  struct A3_p_inner a3;
};
 
#define DESC_p_outer "packed attribute for outer"
struct B1_p_outer {
  char c;
  double d;
} __attribute__ ((packed));
 
struct A2_p_outer {
  double d;
};
 
struct B2_p_outer {
  char c;
  struct A2_p_outer a2;
} __attribute__ ((packed));
 
struct A3_p_outer {
  double d;
  int i;
};
 
struct B3_p_outer {
  char c;
  struct A3_p_outer a3;
} __attribute__ ((packed));
 
#define DESC_a_max "maximum useful struct alignment for all"
struct B1_a_max {
  char c;
  double d;
} __attribute__ ((aligned));
 
struct A2_a_max {
  double d;
} __attribute__ ((aligned));
 
struct B2_a_max {
  char c;
  struct A2_a_max a2;
} __attribute__ ((aligned));
 
struct A3_a_max {
  double d;
  int i;
} __attribute__ ((aligned));
 
struct B3_a_max {
  char c;
  struct A3_a_max a3;
} __attribute__ ((aligned));
 
#define DESC_m_outer_p_inner "maximum alignment for outer, packed inner"
struct B1_m_outer_p_inner {
  char c;
  double d;
} __attribute__ ((aligned)) __attribute__ ((packed));
 
struct A2_m_outer_p_inner {
  double d;
} __attribute__ ((packed));
 
struct B2_m_outer_p_inner {
  char c;
  struct A2_m_outer_p_inner a2;
} __attribute__ ((aligned));
 
struct A3_m_outer_p_inner {
  double d;
  int i;
} __attribute__ ((packed));
 
struct B3_m_outer_p_inner {
  char c;
  struct A3_m_outer_p_inner a3;
} __attribute__ ((aligned));
 
#define DESC_m_inner_p_outer "maximum alignment for inner, packed outer"
struct B1_m_inner_p_outer {
  char c;
  double d;
} __attribute__ ((aligned)) __attribute__ ((packed));
 
struct A2_m_inner_p_outer {
  double d;
} __attribute__ ((aligned));
 
struct B2_m_inner_p_outer {
  char c;
  struct A2_m_inner_p_outer a2;
} __attribute__ ((packed));
 
struct A3_m_inner_p_outer {
  double d;
  int i;
} __attribute__ ((aligned));
 
struct B3_m_inner_p_outer {
  char c;
  struct A3_m_inner_p_outer a3;
} __attribute__ ((packed));
#endif
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.