source: branches/libc-0.6/testcase/optlink/tst2.cpp

Last change on this file was 678, checked in by bird, 22 years ago

Fixed testcase.

  • Property cvs2svn:cvs-rev set to 1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1/* $Id: tst2.cpp 678 2003-09-09 19:21:51Z bird $ */
2/** @file
3 *
4 * Testcase no.2
5 * Testing the mixing of args for regs and args which doesn't go into regs.
6 *
7 * InnoTek Systemberatung GmbH confidential
8 *
9 * Copyright (c) 2003 InnoTek Systemberatung GmbH
10 * Author: knut st. osmundsen <bird-srcspam@anduin.net>
11 *
12 * All Rights Reserved
13 *
14 */
15
16#include <stdio.h>
17#ifdef __cplusplus
18extern "C"
19#else
20extern
21#endif
22int _Optlink asmfoo(int i1, struct sss s1, void *pv, float rf1, struct sss s2);
23
24struct sss
25{
26 int a;
27 int b;
28};
29
30
31int _Optlink foo(int i1, struct sss s1, void *pv, float rf1, struct sss s2)
32{
33 if (i1 != 1)
34 return 1;
35 if (s1.a != 2)
36 return 2;
37 if (s1.b != 3)
38 return 3;
39 if (pv != (void*)4)
40 return 4;
41 if (rf1 != (float)1.5)
42 return 5;
43 if (s2.a != 6)
44 return 6;
45 if (s2.b != 7)
46 return 7;
47 return 0;
48}
49
50int main()
51{
52 int rcRet = 0;
53 int rc;
54 struct sss s1 = {2, 3};
55 struct sss s2 = {6, 7};
56
57 /* calling vac generated code */
58 rc = asmfoo(1, s1, (void*)4, 1.5, s2);
59 switch (rc)
60 {
61 case 0: printf("tst2: asmfoo: success.\n"); break;
62 case 1: printf("tst2: asmfoo: i1 check failed.\n"); break;
63 case 2: printf("tst2: asmfoo: s1.a check failed.\n"); break;
64 case 3: printf("tst2: asmfoo: s1.b check failed.\n"); break;
65 case 4: printf("tst2: asmfoo: pv check failed.\n"); break;
66 case 5: printf("tst2: asmfoo: rf1 check failed.\n"); break;
67 case 6: printf("tst2: asmfoo: s2.a check failed.\n"); break;
68 case 7: printf("tst2: asmfoo: s2.b check failed.\n"); break;
69 default:
70 printf("tst2: asmfoo: failed test %d - internal error\n", rc);
71 break;
72 }
73 if (rc && !rcRet)
74 rcRet = rc;
75
76 /* all gcc */
77 rc = foo(1, s1, (void*)4, 1.5, s2);
78 switch (rc)
79 {
80 case 0: printf("tst2: foo: success.\n"); break;
81 case 1: printf("tst2: foo: asmfoo: i1 check failed.\n"); break;
82 case 2: printf("tst2: foo: asmfoo: s1.a check failed.\n"); break;
83 case 3: printf("tst2: foo: asmfoo: s1.b check failed.\n"); break;
84 case 4: printf("tst2: foo: asmfoo: pv check failed.\n"); break;
85 case 5: printf("tst2: foo: asmfoo: rf1 check failed.\n"); break;
86 case 6: printf("tst2: foo: asmfoo: s2.a check failed.\n"); break;
87 case 7: printf("tst2: foo: asmfoo: s2.b check failed.\n"); break;
88 default:
89 printf("tst2: foo: failed test %d - internal error\n", rc);
90 break;
91 }
92 if (rc && !rcRet)
93 rcRet = rc;
94
95 return rcRet;
96}
Note: See TracBrowser for help on using the repository browser.