fehler56
authorMatthias Braun <matze@braunis.de>
Fri, 3 Aug 2007 09:47:49 +0000 (09:47 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 3 Aug 2007 09:47:49 +0000 (09:47 +0000)
[r15446]

ir/be/test/fehler56.c [new file with mode: 0644]

diff --git a/ir/be/test/fehler56.c b/ir/be/test/fehler56.c
new file mode 100644 (file)
index 0000000..739c571
--- /dev/null
@@ -0,0 +1,55 @@
+typedef union rtunion_def
+{
+       int rtwint;
+       int rtint;
+       char *str;
+       struct rtx_def *rtx;
+} rtunion;
+
+typedef struct rtx_def
+{
+       unsigned short code;
+       int mode : 8;
+       unsigned int jump : 1;
+       unsigned int call : 1;
+       unsigned int unchanging : 1;
+       unsigned int volatil : 1;
+       unsigned int in_struct : 1;
+       unsigned int used : 1;
+       unsigned int integrated : 1;
+       rtunion fld[1];
+} *rtx;
+
+enum machine_mode {
+       PSImode,
+       SImode,
+       PDImode,
+       DImode,
+       TImode,
+       OImode,
+       QImode,
+       HImode,
+       VOIDmode
+};
+
+#define GET_MODE(RTX)       ((RTX)->mode)
+#define PUT_MODE(RTX, MODE) ((RTX)->mode = (MODE))
+
+struct rtx_def bla;
+
+void t(int did_elimination, int n_reloads) {
+       rtx insn = &bla;
+
+       printf("Before: mode %d, fldint: %d\n", insn->fld[0].rtint);
+       PUT_MODE(insn, (did_elimination ? QImode
+                               : n_reloads ? HImode
+                               : GET_MODE (insn) == DImode ? DImode
+                               : VOIDmode));
+       printf("After: mode %d, fldint: %d\n", insn->fld[0].rtint);
+}
+
+int main()
+{
+       t(1, 1);
+       return 0;
+}