--- /dev/null
+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;
+}