test: Make 7l-struct-any-size-array-simple compatible with default ARM gcc.
[mes.git] / lib / libtcc1.c
1 /* -*-comment-start: "//";comment-end:""-*-
2  * GNU Mes --- Maxwell Equations of Software
3  * Copyright © 2017,2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of GNU Mes.
6  *
7  * GNU Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * GNU Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #include <mes/lib.h>
22
23 double
24 __divdi3 (double a, double b)
25 {
26   static int stub = 0;
27   if (__mes_debug () && !stub)
28     eputs ("__divdi3 stub\n");
29   stub = 1;
30   return ((long) a / (long) b);
31 }
32
33 double
34 __moddi3 (double a, double b)
35 {
36   static int stub = 0;
37   if (__mes_debug () && !stub)
38     eputs ("__moddi3 stub\n");
39   stub = 1;
40   return ((long) a % (long) b);
41 }
42
43 #if HAVE_LONG_LONG
44 unsigned long long
45 __udivdi3 (unsigned long long a, unsigned long long b)
46 #else
47 unsigned long
48 __udivdi3 (unsigned long a, long ah, unsigned long b)
49 #endif
50 {
51   static int stub = 0;
52   if (__mes_debug () && !stub)
53     eputs ("__udivdi3 stub\n");
54   stub = 1;
55   if (!b)
56     return 0;
57   unsigned long ai = a;
58   unsigned long bi = b;
59   return ai / bi;
60 }
61
62 #if HAVE_LONG_LONG
63 unsigned long long
64 __umoddi3 (unsigned long long a, unsigned long long b)
65 #else
66 unsigned long
67 __umoddi3 (unsigned long a, long ah, unsigned long b)
68 #endif
69 {
70   static int stub = 0;
71   if (__mes_debug () && !stub)
72     eputs ("__umoddi3 stub\n");
73   stub = 1;
74   unsigned long ai = a;
75   unsigned long bi = b;
76   return ai % bi;
77 }
78
79 #if HAVE_LONG_LONG
80 unsigned long long
81 __lshrdi3 (unsigned long long a, long b)
82 #else
83 unsigned long
84 __lshrdi3 (unsigned long a, long ah, long b)
85 #endif
86 {
87   static int stub = 0;
88   if (__mes_debug () && !stub)
89     eputs ("__lshrdi3 stub\n");
90   stub = 1;
91 #if 0 // In some instances, this recurses
92   return a >> b;
93 #else
94   for (int i = 0; i < b; i++)
95     a /= 2;
96   return a;
97 #endif
98 }
99
100 #if HAVE_LONG_LONG
101 long long
102 __ashldi3 (long long a, long b)
103 #else
104 long
105 __ashldi3 (long a, long ah, long b)
106 #endif
107 {
108   static int stub = 0;
109   if (__mes_debug () && !stub)
110     eputs ("__ashldi3 stub\n");
111   stub = 1;
112 #if 0 // In some instances, this recurses
113   return a << b;
114 #else
115   for (int i = 0; i < b; i++)
116     a += a;
117   return a;
118 #endif
119 }
120
121 #if HAVE_LONG_LONG
122 long long
123 __ashrdi3 (long long a, long b)
124 #else
125 long
126 __ashrdi3 (long a, long ah, long b)
127 #endif
128 {
129   static int stub = 0;
130   if (__mes_debug () && !stub)
131     eputs ("__ashrdi3 stub\n");
132   stub = 1;
133 #if 0 // In some instances, this recurses
134   return a >> b;
135 #else
136   for (int i = 0; i < b; i++)
137     a /= 2;
138   return a;
139 #endif
140 }
141
142 #if HAVE_LONG_LONG && HAVE_FLOAT
143 long double
144 __floatundixf (unsigned long long a)
145 #else
146 double
147 __floatundixf (unsigned long a)
148 #endif
149 {
150   static int stub = 0;
151   if (__mes_debug () && !stub)
152     eputs ("__floatundixf stub\n");
153   stub = 1;
154   return 0;
155 }
156
157 #if HAVE_LONG_LONG
158 unsigned long long
159 #else
160 unsigned long
161 #endif
162 __fixunsxfdi (double a1)
163 {
164   static int stub = 0;
165   if (__mes_debug () && !stub)
166     eputs ("__fixunsxfdi stub\n");
167   stub = 1;
168   return 0;
169 }
170
171 #if __TINYC__ == 9226
172 long
173 #elif __TINYC__
174 int
175 #else // !__TINYCC__
176 long long
177 #endif // !__TINYCC__
178 __fixdfdi (double a1)
179 {
180   static int stub = 0;
181   if (__mes_debug () && !stub)
182     eputs ("__fixdfdi stub\n");
183   stub = 1;
184   return 0;
185 }
186
187 #if HAVE_LONG_LONG
188 unsigned long long
189 __fixxfdi (double a1)
190 #else
191 unsigned long
192 __fixxfdi (double a1)
193 #endif
194 {
195   static int stub = 0;
196   if (__mes_debug () && !stub)
197     eputs ("__fixxfdi stub\n");
198   stub = 1;
199   return 0;
200 }
201
202 #if HAVE_LONG_LONG
203 long long
204 #else
205 long
206 #endif
207 __fixsfdi (double a1)
208 {
209   static int stub = 0;
210   if (__mes_debug () && !stub)
211     eputs ("__fixsfdi stub\n");
212   stub = 1;
213   return 0;
214 }