annotate gcc/testsuite/gcc.dg/pr27861-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 target/27861 */
kono
parents:
diff changeset
2 /* The following code used to cause an ICE during RTL expansion, as
kono
parents:
diff changeset
3 expand shift was stripping the SUBREG of a rotate shift count, and
kono
parents:
diff changeset
4 later producing a VAR_DECL tree whose DECL_RTL's mode didn't match
kono
parents:
diff changeset
5 the VAR_DECL's type's mode. */
kono
parents:
diff changeset
6 /* { dg-do compile } */
kono
parents:
diff changeset
7 /* { dg-options "-O2" } */
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 typedef struct sim_state *SIM_DESC;
kono
parents:
diff changeset
10 typedef enum
kono
parents:
diff changeset
11 {
kono
parents:
diff changeset
12 SIM_OPEN_STANDALONE, SIM_OPEN_DEBUG
kono
parents:
diff changeset
13 }
kono
parents:
diff changeset
14 SIM_RC;
kono
parents:
diff changeset
15 typedef unsigned int unsigned32 __attribute__ ((__mode__ (__SI__)));
kono
parents:
diff changeset
16 typedef unsigned int unsigned64 __attribute__ ((__mode__ (__DI__)));
kono
parents:
diff changeset
17 typedef unsigned32 unsigned_address;
kono
parents:
diff changeset
18 typedef unsigned_address address_word;
kono
parents:
diff changeset
19 static __inline__ unsigned64
kono
parents:
diff changeset
20 __attribute__ ((__unused__)) ROTR64 (unsigned64 val, int shift)
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 unsigned64 result;
kono
parents:
diff changeset
23 result = (((val) >> (shift)) | ((val) << ((64) - (shift))));
kono
parents:
diff changeset
24 return result;
kono
parents:
diff changeset
25 }
kono
parents:
diff changeset
26 typedef struct _sim_cpu sim_cpu;
kono
parents:
diff changeset
27 enum
kono
parents:
diff changeset
28 {
kono
parents:
diff changeset
29 TRACE_MEMORY_IDX, TRACE_MODEL_IDX, TRACE_ALU_IDX, TRACE_CORE_IDX,
kono
parents:
diff changeset
30 };
kono
parents:
diff changeset
31 typedef struct _trace_data
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 char trace_flags[32];
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35 TRACE_DATA;
kono
parents:
diff changeset
36 typedef enum
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 nr_watchpoint_types,
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40 watchpoint_type;
kono
parents:
diff changeset
41 typedef struct _sim_watchpoints
kono
parents:
diff changeset
42 {
kono
parents:
diff changeset
43 TRACE_DATA trace_data;
kono
parents:
diff changeset
44 }
kono
parents:
diff changeset
45 sim_cpu_base;
kono
parents:
diff changeset
46 struct _sim_cpu
kono
parents:
diff changeset
47 {
kono
parents:
diff changeset
48 sim_cpu_base base;
kono
parents:
diff changeset
49 };
kono
parents:
diff changeset
50 struct sim_state
kono
parents:
diff changeset
51 {
kono
parents:
diff changeset
52 sim_cpu cpu[1];
kono
parents:
diff changeset
53 };
kono
parents:
diff changeset
54 typedef address_word instruction_address;
kono
parents:
diff changeset
55 void trace_result_word1 ();
kono
parents:
diff changeset
56 int
kono
parents:
diff changeset
57 do_dror (SIM_DESC sd, instruction_address cia, int MY_INDEX, unsigned64 x,
kono
parents:
diff changeset
58 unsigned64 y)
kono
parents:
diff changeset
59 {
kono
parents:
diff changeset
60 unsigned64 result;
kono
parents:
diff changeset
61 result = ROTR64 (x, y);
kono
parents:
diff changeset
62 {
kono
parents:
diff changeset
63 if ((((-1) & (1 << (TRACE_ALU_IDX))) != 0
kono
parents:
diff changeset
64 && (((&(((&(sd)->cpu[0])))->base.trace_data))->
kono
parents:
diff changeset
65 trace_flags)[TRACE_ALU_IDX] != 0))
kono
parents:
diff changeset
66 trace_result_word1 (sd, ((&(sd)->cpu[0])), TRACE_ALU_IDX, (result));
kono
parents:
diff changeset
67 }
kono
parents:
diff changeset
68 }
kono
parents:
diff changeset
69