annotate gcc/testsuite/g++.dg/opt/pr36187.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 /* { dg-do run } */
kono
parents:
diff changeset
2 /* { dg-options "-O2" } */
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 extern "C" void abort (void);
kono
parents:
diff changeset
5 enum SbxDataType { SbxINTEGER, SbxDECIMAL, SbxBYREF = 0x4000 };
kono
parents:
diff changeset
6 struct SbxValues {
kono
parents:
diff changeset
7 union {
kono
parents:
diff changeset
8 float nSingle;
kono
parents:
diff changeset
9 float* pSingle;
kono
parents:
diff changeset
10 };
kono
parents:
diff changeset
11 SbxDataType eType;
kono
parents:
diff changeset
12 };
kono
parents:
diff changeset
13 static bool ImpPutDoubleFoo( SbxValues* p)
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 bool bRet = false;
kono
parents:
diff changeset
16 SbxValues aTmp;
kono
parents:
diff changeset
17 int count = 0;
kono
parents:
diff changeset
18 start:
kono
parents:
diff changeset
19 switch( p->eType ) {
kono
parents:
diff changeset
20 case SbxINTEGER:
kono
parents:
diff changeset
21 if (count++ > 0)
kono
parents:
diff changeset
22 abort ();
kono
parents:
diff changeset
23 aTmp.pSingle = &p->nSingle; goto direct;
kono
parents:
diff changeset
24 case SbxBYREF | SbxDECIMAL:
kono
parents:
diff changeset
25 bRet = false;
kono
parents:
diff changeset
26 break;
kono
parents:
diff changeset
27 direct:
kono
parents:
diff changeset
28 aTmp.eType = SbxDataType( p->eType | SbxBYREF );
kono
parents:
diff changeset
29 p = &aTmp; goto start;
kono
parents:
diff changeset
30 case SbxBYREF | SbxINTEGER:
kono
parents:
diff changeset
31 break;
kono
parents:
diff changeset
32 default:
kono
parents:
diff changeset
33 bRet =true;
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35 return bRet;
kono
parents:
diff changeset
36 }
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 int main( int argc, char** argv )
kono
parents:
diff changeset
39 {
kono
parents:
diff changeset
40 SbxValues aTmp;
kono
parents:
diff changeset
41 aTmp.eType = SbxINTEGER;
kono
parents:
diff changeset
42 if ( ImpPutDoubleFoo( &aTmp ) )
kono
parents:
diff changeset
43 abort ();
kono
parents:
diff changeset
44 return 0;
kono
parents:
diff changeset
45 }