Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/ia64/ia64-c.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | a06113de4d67 |
children | 04ced10e8804 |
rev | line source |
---|---|
0 | 1 /* Definitions of C specific functions for GNU compiler. |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
2 Copyright (C) 2002, 2003, 2004, 2005, 2007, 2010 |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
3 Free Software Foundation, Inc. |
0 | 4 Contributed by Steve Ellcey <sje@cup.hp.com> |
5 | |
6 This file is part of GCC. | |
7 | |
8 GCC is free software; you can redistribute it and/or modify | |
9 it under the terms of the GNU General Public License as published by | |
10 the Free Software Foundation; either version 3, or (at your option) | |
11 any later version. | |
12 | |
13 GCC is distributed in the hope that it will be useful, | |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 GNU General Public License for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with GCC; see the file COPYING3. If not see | |
20 <http://www.gnu.org/licenses/>. */ | |
21 | |
22 #include "config.h" | |
23 #include "system.h" | |
24 #include "coretypes.h" | |
25 #include "tm.h" | |
26 #include "tree.h" | |
27 #include "cpplib.h" | |
67
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
28 #include "c-family/c-common.h" |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
29 #include "c-family/c-pragma.h" |
f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
30 #include "diagnostic-core.h" |
0 | 31 #include "tm_p.h" |
32 | |
33 static void ia64_hpux_add_pragma_builtin (tree func); | |
34 | |
35 void | |
36 ia64_hpux_handle_builtin_pragma (cpp_reader *pfile ATTRIBUTE_UNUSED) | |
37 { | |
38 /* #pragma builtin name, name, name */ | |
39 | |
40 enum cpp_ttype type; | |
41 tree x; | |
42 | |
43 type = pragma_lex (&x); | |
44 while (type == CPP_NAME) | |
45 { | |
46 ia64_hpux_add_pragma_builtin (x); | |
47 type = pragma_lex (&x); | |
48 if (type == CPP_COMMA) | |
49 type = pragma_lex (&x); | |
50 } | |
51 if (type != CPP_EOF) | |
52 warning (OPT_Wpragmas, "malformed #pragma builtin"); | |
53 } | |
54 | |
55 /* List of standard math functions which do not set matherr by default | |
56 and which have a different version which does set errno and which we | |
57 want to call *if* we have seen an extern for the routine and we have | |
58 asked for strict C89 compatibility. */ | |
59 | |
60 typedef struct c89_mathlib_names | |
61 { | |
62 const char *realname; /* User visible function name. */ | |
63 const char *c89name; /* libm special name needed to set errno. */ | |
64 } c89_mathlib_names; | |
65 | |
66 static const c89_mathlib_names c89_mathlib_name_list [] = | |
67 { | |
68 {"acos", "_Acos_e#"}, | |
69 {"acosd", "_Acosd_e#"}, | |
70 {"acosdf", "_Acosdf_e#"}, | |
71 {"acosdl", "_Acosdl_e#"}, | |
72 {"acosdw", "_Acosdw_e#"}, | |
73 {"acosf", "_Acosf_e#"}, | |
74 {"acosh", "_Acosh_e#"}, | |
75 {"acoshf", "_Acoshf_e#"}, | |
76 {"acoshl", "_Acoshl_e#"}, | |
77 {"acoshw", "_Acoshw_e#"}, | |
78 {"acosl", "_Acosl_e#"}, | |
79 {"acosw", "_Acosw_e#"}, | |
80 {"asin", "_Asin_e#"}, | |
81 {"asind", "_Asind_e#"}, | |
82 {"asindf", "_Asindf_e#"}, | |
83 {"asindl", "_Asindl_e#"}, | |
84 {"asindw", "_Asindw_e#"}, | |
85 {"asinf", "_Asinf_e#"}, | |
86 {"asinl", "_Asinl_e#"}, | |
87 {"asinw", "_Asinw_e#"}, | |
88 {"atanh", "_Atanh_e#"}, | |
89 {"atanhf", "_Atanhf_e#"}, | |
90 {"atanhl", "_Atanhl_e#"}, | |
91 {"atanhw", "_Atanhw_e#"}, | |
92 {"cosh", "_Cosh_e#"}, | |
93 {"coshf", "_Coshf_e#"}, | |
94 {"coshl", "_Coshl_e#"}, | |
95 {"coshw", "_Coshw_e#"}, | |
96 {"exp2", "_Exp2_e#"}, | |
97 {"exp2f", "_Exp2f_e#"}, | |
98 {"exp2l", "_Exp2l_e#"}, | |
99 {"exp2w", "_Exp2w_e#"}, | |
100 {"exp", "_Exp_e#"}, | |
101 {"expf", "_Expf_e#"}, | |
102 {"expl", "_Expl_e#"}, | |
103 {"expm1", "_Expm1_e#"}, | |
104 {"expm1f", "_Expm1f_e#"}, | |
105 {"expm1l", "_Expm1l_e#"}, | |
106 {"expm1w", "_Expm1w_e#"}, | |
107 {"expw", "_Expw_e#"}, | |
108 {"fmod", "_Fmod_e#"}, | |
109 {"fmodf", "_Fmodf_e#"}, | |
110 {"fmodl", "_Fmodl_e#"}, | |
111 {"fmodw", "_Fmodw_e#"}, | |
112 {"gamma", "_Gamma_e#"}, | |
113 {"gammaf", "_Gammaf_e#"}, | |
114 {"gammal", "_Gammal_e#"}, | |
115 {"gammaw", "_Gammaw_e#"}, | |
116 {"ldexp", "_Ldexp_e#"}, | |
117 {"ldexpf", "_Ldexpf_e#"}, | |
118 {"ldexpl", "_Ldexpl_e#"}, | |
119 {"ldexpw", "_Ldexpw_e#"}, | |
120 {"lgamma", "_Lgamma_e#"}, | |
121 {"lgammaf", "_Lgammaf_e#"}, | |
122 {"lgammal", "_Lgammal_e#"}, | |
123 {"lgammaw", "_Lgammaw_e#"}, | |
124 {"log10", "_Log10_e#"}, | |
125 {"log10f", "_Log10f_e#"}, | |
126 {"log10l", "_Log10l_e#"}, | |
127 {"log10w", "_Log10w_e#"}, | |
128 {"log1p", "_Log1p_e#"}, | |
129 {"log1pf", "_Log1pf_e#"}, | |
130 {"log1pl", "_Log1pl_e#"}, | |
131 {"log1pw", "_Log1pw_e#"}, | |
132 {"log2", "_Log2_e#"}, | |
133 {"log2f", "_Log2f_e#"}, | |
134 {"log2l", "_Log2l_e#"}, | |
135 {"log2w", "_Log2w_e#"}, | |
136 {"log", "_Log_e#"}, | |
137 {"logb", "_Logb_e#"}, | |
138 {"logbf", "_Logbf_e#"}, | |
139 {"logbl", "_Logbl_e#"}, | |
140 {"logbw", "_Logbw_e#"}, | |
141 {"logf", "_Logf_e#"}, | |
142 {"logl", "_Logl_e#"}, | |
143 {"logw", "_Logw_e#"}, | |
144 {"nextafter", "_Nextafter_e#"}, | |
145 {"nextafterf", "_Nextafterf_e#"}, | |
146 {"nextafterl", "_Nextafterl_e#"}, | |
147 {"nextafterw", "_Nextafterw_e#"}, | |
148 {"pow", "_Pow_e#"}, | |
149 {"powf", "_Powf_e#"}, | |
150 {"powl", "_Powl_e#"}, | |
151 {"poww", "_Poww_e#"}, | |
152 {"remainder", "_Remainder_e#"}, | |
153 {"remainderf", "_Remainderf_e#"}, | |
154 {"remainderl", "_Remainderl_e#"}, | |
155 {"remainderw", "_Remainderw_e#"}, | |
156 {"scalb", "_Scalb_e#"}, | |
157 {"scalbf", "_Scalbf_e#"}, | |
158 {"scalbl", "_Scalbl_e#"}, | |
159 {"scalbw", "_Scalbw_e#"}, | |
160 {"sinh", "_Sinh_e#"}, | |
161 {"sinhf", "_Sinhf_e#"}, | |
162 {"sinhl", "_Sinhl_e#"}, | |
163 {"sinhw", "_Sinhw_e#"}, | |
164 {"sqrt", "_Sqrt_e#"}, | |
165 {"sqrtf", "_Sqrtf_e#"}, | |
166 {"sqrtl", "_Sqrtl_e#"}, | |
167 {"sqrtw", "_Sqrtw_e#"}, | |
168 {"tgamma", "_Tgamma_e#"}, | |
169 {"tgammaf", "_Tgammaf_e#"}, | |
170 {"tgammal", "_Tgammal_e#"}, | |
171 {"tgammaw", "_Tgammaw_e#"} | |
172 }; | |
173 | |
174 static void | |
175 ia64_hpux_add_pragma_builtin (tree func) | |
176 { | |
177 size_t i; | |
178 | |
179 if (!flag_isoc94 && flag_iso) | |
180 { | |
181 for (i = 0; i < ARRAY_SIZE (c89_mathlib_name_list); i++) | |
182 { | |
183 if (!strcmp(c89_mathlib_name_list[i].realname, | |
184 IDENTIFIER_POINTER (func))) | |
185 { | |
186 add_to_renaming_pragma_list(func, | |
187 get_identifier(c89_mathlib_name_list[i].c89name)); | |
188 } | |
189 } | |
190 } | |
191 } |