annotate gcc/testsuite/gcc.c-torture/compile/20071114-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR tree-optimization/34046 */
kono
parents:
diff changeset
2 /* Origin: dcb <dcb314@hotmail.com> */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 typedef unsigned char bool8;
kono
parents:
diff changeset
5 typedef unsigned char uint8_t;
kono
parents:
diff changeset
6 typedef unsigned short int uint16_t;
kono
parents:
diff changeset
7 typedef unsigned int uint32_t;
kono
parents:
diff changeset
8 typedef uint8_t uint8;
kono
parents:
diff changeset
9 typedef uint16_t uint16;
kono
parents:
diff changeset
10 typedef uint32_t uint32;
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 struct SIAPU
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 uint8 *PC;
kono
parents:
diff changeset
15 uint8 *RAM;
kono
parents:
diff changeset
16 uint8 Bit;
kono
parents:
diff changeset
17 uint32 Address;
kono
parents:
diff changeset
18 uint8 *WaitAddress1;
kono
parents:
diff changeset
19 uint8 *WaitAddress2;
kono
parents:
diff changeset
20 uint8 _Carry;
kono
parents:
diff changeset
21 };
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 struct SAPU
kono
parents:
diff changeset
24 {
kono
parents:
diff changeset
25 bool8 ShowROM;
kono
parents:
diff changeset
26 uint8 OutPorts [4];
kono
parents:
diff changeset
27 uint8 ExtraRAM [64];
kono
parents:
diff changeset
28 uint16 TimerTarget [3];
kono
parents:
diff changeset
29 };
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 struct SAPU APU;
kono
parents:
diff changeset
32 struct SIAPU IAPU;
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 void S9xSetAPUControl (uint8 byte);
kono
parents:
diff changeset
35 void S9xSetAPUDSP (uint8 byte);
kono
parents:
diff changeset
36 uint8 S9xGetAPUDSP ();
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 uint8 S9xAPUGetByte (uint32 Address)
kono
parents:
diff changeset
39 {
kono
parents:
diff changeset
40 Address &= 0xffff;
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 if (Address <= 0xff && Address >= 0xf0)
kono
parents:
diff changeset
43 {
kono
parents:
diff changeset
44 if (Address >= 0xf4 && Address <= 0xf7)
kono
parents:
diff changeset
45 {
kono
parents:
diff changeset
46 IAPU.WaitAddress2 = IAPU.WaitAddress1;
kono
parents:
diff changeset
47 IAPU.WaitAddress1 = IAPU.PC;
kono
parents:
diff changeset
48 return (IAPU.RAM [Address]);
kono
parents:
diff changeset
49 }
kono
parents:
diff changeset
50 else if (Address == 0xf3)
kono
parents:
diff changeset
51 return (S9xGetAPUDSP ());
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 if (Address >= 0xfd)
kono
parents:
diff changeset
54 {
kono
parents:
diff changeset
55 IAPU.WaitAddress2 = IAPU.WaitAddress1;
kono
parents:
diff changeset
56 IAPU.WaitAddress1 = IAPU.PC;
kono
parents:
diff changeset
57 uint8 t = IAPU.RAM [Address];
kono
parents:
diff changeset
58 IAPU.RAM [Address] = 0;
kono
parents:
diff changeset
59 return (t);
kono
parents:
diff changeset
60 }
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 return (IAPU.RAM [Address]);
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64 else
kono
parents:
diff changeset
65 return (IAPU.RAM [Address]);
kono
parents:
diff changeset
66 }
kono
parents:
diff changeset
67
kono
parents:
diff changeset
68 void S9xAPUSetByte (uint8 byte, uint32 Address)
kono
parents:
diff changeset
69 {
kono
parents:
diff changeset
70 Address &= 0xffff;
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 if (Address <= 0xff && Address >= 0xf0)
kono
parents:
diff changeset
73 {
kono
parents:
diff changeset
74 if (Address == 0xf3)
kono
parents:
diff changeset
75 S9xSetAPUDSP (byte);
kono
parents:
diff changeset
76 else if (Address >= 0xf4 && Address <= 0xf7)
kono
parents:
diff changeset
77 APU.OutPorts [Address - 0xf4] = byte;
kono
parents:
diff changeset
78 else if (Address == 0xf1)
kono
parents:
diff changeset
79 S9xSetAPUControl (byte);
kono
parents:
diff changeset
80 else if (Address < 0xfd)
kono
parents:
diff changeset
81 {
kono
parents:
diff changeset
82 IAPU.RAM [Address] = byte;
kono
parents:
diff changeset
83 if (Address >= 0xfa)
kono
parents:
diff changeset
84 {
kono
parents:
diff changeset
85 if (byte == 0)
kono
parents:
diff changeset
86 APU.TimerTarget [Address - 0xfa] = 0x100;
kono
parents:
diff changeset
87 else
kono
parents:
diff changeset
88 APU.TimerTarget [Address - 0xfa] = byte;
kono
parents:
diff changeset
89 }
kono
parents:
diff changeset
90 }
kono
parents:
diff changeset
91 }
kono
parents:
diff changeset
92 else
kono
parents:
diff changeset
93 {
kono
parents:
diff changeset
94 if (Address < 0xffc0)
kono
parents:
diff changeset
95 IAPU.RAM [Address] = byte;
kono
parents:
diff changeset
96 else
kono
parents:
diff changeset
97 {
kono
parents:
diff changeset
98 APU.ExtraRAM [Address - 0xffc0] = byte;
kono
parents:
diff changeset
99 if (!APU.ShowROM)
kono
parents:
diff changeset
100 IAPU.RAM [Address] = byte;
kono
parents:
diff changeset
101 }
kono
parents:
diff changeset
102 }
kono
parents:
diff changeset
103 }
kono
parents:
diff changeset
104
kono
parents:
diff changeset
105 void ApuCA ()
kono
parents:
diff changeset
106 {
kono
parents:
diff changeset
107 IAPU.Address = *(uint16 *) (IAPU.PC + 1);
kono
parents:
diff changeset
108 IAPU.Bit = (uint8)(IAPU.Address >> 13);
kono
parents:
diff changeset
109 if ((IAPU._Carry))
kono
parents:
diff changeset
110 S9xAPUSetByte (S9xAPUGetByte (IAPU.Address) | (1 << IAPU.Bit), IAPU.Address);
kono
parents:
diff changeset
111 else
kono
parents:
diff changeset
112 S9xAPUSetByte (S9xAPUGetByte (IAPU.Address) & ~(1 << IAPU.Bit), IAPU.Address);
kono
parents:
diff changeset
113 }