aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-align-1.h
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-align-1.h
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-align-1.h')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-align-1.h180
1 files changed, 180 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-align-1.h b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-align-1.h
new file mode 100644
index 000000000..d9006c741
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/compat/struct-align-1.h
@@ -0,0 +1,180 @@
+/* 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