summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/arm/20031108-1.c
blob: d9b6006f4429e9c553e7fed61c1dda899c4a70d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* PR optimization/10467  */
/* { dg-do compile } */
/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
/* { dg-options "-O2 -mthumb" } */

typedef enum {Ident_1} Enumeration;

typedef struct record
{
    struct record *Ptr_Comp;
    Enumeration Discr;
    union {
	struct {
	    Enumeration Enum_Comp;
	    int Int_Comp;
	    char Str_Comp [31];
        } var_1;
    } variant;
} *Rec_Pointer;

Rec_Pointer Ptr_Glob;

Proc_1 (Ptr_Val_Par)
    Rec_Pointer Ptr_Val_Par;
{
    Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;

    *Ptr_Val_Par->Ptr_Comp = *Ptr_Glob;

    if (Next_Record->Discr == Ident_1)
    {
	Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
		&Next_Record->variant.var_1.Int_Comp);
    }
}