From b4e4b68dbefa746bfe525d6bf06b3f256c590d24 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Fri, 3 Aug 2007 09:47:49 +0000 Subject: [PATCH] fehler56 [r15446] --- ir/be/test/fehler56.c | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ir/be/test/fehler56.c diff --git a/ir/be/test/fehler56.c b/ir/be/test/fehler56.c new file mode 100644 index 000000000..739c57197 --- /dev/null +++ b/ir/be/test/fehler56.c @@ -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; +} -- 2.20.1