OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-7.1/] [gdb/] [testsuite/] [gdb.base/] [varargs.c] - Blame information for rev 227

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 227 jeremybenn
/* varargs.c -
2
 * (Added as part of fix for bug 15306 - "call" to varargs functions fails)
3
 * This program is intended to let me try out "call" to varargs functions
4
 * with varying numbers of declared args and various argument types.
5
 * - RT 9/27/95
6
 */
7
 
8
#include <stdio.h>
9
#include <stdarg.h>
10
 
11
int find_max1(int, ...);
12
int find_max2(int, int, ...);
13
double find_max_double(int, double, ...);
14
 
15
char ch;
16
unsigned char uc;
17
short s;
18
unsigned short us;
19
int a,b,c,d;
20
int max_val;
21
long long ll;
22
float fa,fb,fc,fd;
23
double da,db,dc,dd;
24
double dmax_val;
25
 
26
int main() {
27
  c = -1;
28
  uc = 1;
29
  s = -2;
30
  us = 2;
31
  a = 1;
32
  b = 60;
33
  max_val = find_max1(1, 60);
34
  max_val = find_max1(a, b);
35
  a = 3;
36
  b = 1;
37
  c = 4;
38
  d = 2;
39
  max_val = find_max1(3, 1, 4, 2);
40
  max_val = find_max2(a, b, c, d);
41
  da = 3.0;
42
  db = 1.0;
43
  dc = 4.0;
44
  dd = 2.0;
45
  dmax_val = find_max_double(3, 1.0, 4.0, 2.0);
46
  dmax_val = find_max_double(a, db, dc, dd);
47
 
48
  return 0;
49
}
50
 
51
/* Integer varargs, 1 declared arg */
52
 
53
int find_max1(int num_vals, ...) {
54
  int max_val = 0;
55
  int x;
56
  int i;
57
  va_list argp;
58
  va_start(argp, num_vals);
59
  printf("find_max(%d,", num_vals);
60
  for (i = 0; i < num_vals; i++) {
61
    x = va_arg(argp, int);
62
    if (max_val < x) max_val = x;
63
    if (i < num_vals - 1)
64
      printf(" %d,", x);
65
    else
66
      printf(" %d)", x);
67
  }
68
  printf(" returns %d\n", max_val);
69
  return max_val;
70
}
71
 
72
/* Integer varargs, 2 declared args */
73
 
74
int find_max2(int num_vals, int first_val, ...) {
75
  int max_val = 0;
76
  int x;
77
  int i;
78
  va_list argp;
79
  va_start(argp, first_val);
80
  x = first_val;
81
  if (max_val < x) max_val = x;
82
  printf("find_max(%d, %d", num_vals, first_val);
83
  for (i = 1; i < num_vals; i++) {
84
    x = va_arg(argp, int);
85
    if (max_val < x) max_val = x;
86
    printf(", %d", x);
87
  }
88
  printf(") returns %d\n", max_val);
89
  return max_val;
90
}
91
 
92
/* Double-float varargs, 2 declared args */
93
 
94
double find_max_double(int num_vals, double first_val, ...) {
95
  double max_val = 0;
96
  double x;
97
  int i;
98
  va_list argp;
99
  va_start(argp, first_val);
100
  x = first_val;
101
  if (max_val < x) max_val = x;
102
  printf("find_max(%d, %f", num_vals, first_val);
103
  for (i = 1; i < num_vals; i++) {
104
    x = va_arg(argp, double);
105
    if (max_val < x) max_val = x;
106
    printf(", %f", x);
107
  }
108
  printf(") returns %f\n", max_val);
109
  return max_val;
110
}
111
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.