libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr109652.c
blob8a6524d2212e8aef972fb18bb8db6a6e241cb3a9
1 /* { dg-do compile } */
3 typedef int UInt;
4 UInt skeletal_RI5_instr;
5 __attribute__((__noreturn__)) void vex_assert_fail();
6 typedef struct {
7 union {
8 struct {
9 UInt imm5;
10 } I5;
11 } ARMri5;
12 } ARMRI5;
13 typedef enum { ARMin_Alu, ARMin_Shift } ARMInstrTag;
14 void iregEnc();
15 static UInt skeletal_RI5(ARMRI5 *ri) {
16 UInt imm5 = ri->ARMri5.I5.imm5;
17 __builtin_expect(imm5, 1) ?: vex_assert_fail();
18 iregEnc(ri->ARMri5);
19 return skeletal_RI5_instr;
21 ARMInstrTag emit_ARMInstr_i_0;
22 void *emit_ARMInstr_disp_cp_chain_me_to_slowEP() {
23 switch (emit_ARMInstr_i_0) {
24 case ARMin_Alu:
25 UInt instr, subopc;
26 UInt rD, rN;
27 goto bad;
28 instr |= subopc | rN;
29 case ARMin_Shift:
30 rD = 0;
31 UInt rM = 0;
32 ARMRI5 argR;
33 instr = skeletal_RI5(&argR);
34 instr |= rD | rM;
35 goto done;
37 bad:
38 done:
39 return 0;