]>
Commit | Line | Data |
---|---|---|
fa19795e | 1 | /* Expand builtin functions. |
23a5b65a | 2 | Copyright (C) 1988-2014 Free Software Foundation, Inc. |
fa19795e RS |
3 | |
4 | This file is part of GCC. | |
5 | ||
6 | GCC is free software; you can redistribute it and/or modify it under | |
7 | the terms of the GNU General Public License as published by the Free | |
8 | Software Foundation; either version 3, or (at your option) any later | |
9 | version. | |
10 | ||
11 | GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
12 | WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
13 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
14 | for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with GCC; see the file COPYING3. If not see | |
18 | <http://www.gnu.org/licenses/>. */ | |
19 | ||
20 | #ifndef GCC_BUILTINS_H | |
21 | #define GCC_BUILTINS_H | |
22 | ||
9b2b7279 AM |
23 | #include <mpc.h> |
24 | ||
fa19795e RS |
25 | /* Target-dependent globals. */ |
26 | struct target_builtins { | |
27 | /* For each register that may be used for calling a function, this | |
28 | gives a mode used to copy the register's value. VOIDmode indicates | |
29 | the register is not used for calling a function. If the machine | |
30 | has register windows, this gives only the outbound registers. | |
31 | INCOMING_REGNO gives the corresponding inbound register. */ | |
32 | enum machine_mode x_apply_args_mode[FIRST_PSEUDO_REGISTER]; | |
33 | ||
34 | /* For each register that may be used for returning values, this gives | |
35 | a mode used to copy the register's value. VOIDmode indicates the | |
36 | register is not used for returning values. If the machine has | |
37 | register windows, this gives only the outbound registers. | |
38 | INCOMING_REGNO gives the corresponding inbound register. */ | |
39 | enum machine_mode x_apply_result_mode[FIRST_PSEUDO_REGISTER]; | |
40 | }; | |
41 | ||
42 | extern GTY(()) struct target_builtins default_target_builtins; | |
43 | #if SWITCHABLE_TARGET | |
44 | extern struct target_builtins *this_target_builtins; | |
45 | #else | |
46 | #define this_target_builtins (&default_target_builtins) | |
47 | #endif | |
48 | ||
9b2b7279 AM |
49 | /* Non-zero if __builtin_constant_p should be folded right away. */ |
50 | extern bool force_folding_builtin_constant_p; | |
51 | ||
52 | extern bool is_builtin_fn (tree); | |
53 | extern bool get_object_alignment_1 (tree, unsigned int *, | |
54 | unsigned HOST_WIDE_INT *); | |
55 | extern unsigned int get_object_alignment (tree); | |
56 | extern bool get_pointer_alignment_1 (tree, unsigned int *, | |
57 | unsigned HOST_WIDE_INT *); | |
58 | extern unsigned int get_pointer_alignment (tree); | |
59 | extern tree c_strlen (tree, int); | |
60 | extern void expand_builtin_setjmp_setup (rtx, rtx); | |
61 | extern void expand_builtin_setjmp_receiver (rtx); | |
62 | extern tree mathfn_built_in (tree, enum built_in_function fn); | |
63 | extern rtx builtin_strncpy_read_str (void *, HOST_WIDE_INT, enum machine_mode); | |
64 | extern rtx builtin_memset_read_str (void *, HOST_WIDE_INT, enum machine_mode); | |
65 | extern rtx expand_builtin_saveregs (void); | |
66 | extern tree std_build_builtin_va_list (void); | |
67 | extern tree std_fn_abi_va_list (tree); | |
68 | extern tree std_canonical_va_list_type (tree); | |
69 | extern void std_expand_builtin_va_start (tree, rtx); | |
70 | extern void expand_builtin_trap (void); | |
71 | extern rtx expand_builtin (tree, rtx, rtx, enum machine_mode, int); | |
72 | extern enum built_in_function builtin_mathfn_code (const_tree); | |
73 | extern tree fold_builtin_expect (location_t, tree, tree, tree); | |
74 | extern tree fold_builtin_strcpy (location_t, tree, tree, tree, tree); | |
75 | extern tree fold_builtin_strncpy (location_t, tree, tree, tree, tree, tree); | |
76 | extern tree fold_fma (location_t, tree, tree, tree, tree); | |
77 | extern bool avoid_folding_inline_builtin (tree); | |
78 | extern tree fold_call_expr (location_t, tree, bool); | |
79 | extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *); | |
1fe37220 | 80 | extern bool validate_gimple_arglist (const_gimple, ...); |
9b2b7279 AM |
81 | extern rtx default_expand_builtin (tree, rtx, rtx, enum machine_mode, int); |
82 | extern tree fold_builtin_strcat (location_t, tree, tree, tree); | |
83 | extern tree fold_builtin_fputs (location_t, tree, tree, bool, bool, tree); | |
84 | extern bool fold_builtin_next_arg (tree, bool); | |
85 | extern tree fold_builtin_memory_chk (location_t, tree, tree, tree, tree, tree, | |
86 | tree, bool, enum built_in_function); | |
87 | extern tree fold_builtin_stxcpy_chk (location_t, tree, tree, tree, tree, tree, | |
88 | bool, enum built_in_function); | |
89 | extern tree fold_builtin_stxncpy_chk (location_t, tree, tree, tree, tree, tree, | |
90 | bool, enum built_in_function); | |
91 | extern tree gimple_fold_builtin_snprintf_chk (gimple, tree, | |
92 | enum built_in_function); | |
93 | extern tree do_mpc_arg2 (tree, tree, tree, int, int (*)(mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t)); | |
94 | extern tree fold_call_stmt (gimple, bool); | |
95 | extern void set_builtin_user_assembler_name (tree decl, const char *asmspec); | |
96 | extern bool is_simple_builtin (tree); | |
97 | extern bool is_inexpensive_builtin (tree); | |
1fe37220 | 98 | |
fa19795e | 99 | #endif |