Mercurial > hg > CbC > CbC_gcc
comparison gcc/builtins.h @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 561a7518be6b |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* Expand builtin functions. | 1 /* Expand builtin functions. |
2 Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | 2 Copyright (C) 1988-2017 Free Software Foundation, Inc. |
3 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 | |
4 Free Software Foundation, Inc. | |
5 | 3 |
6 This file is part of GCC. | 4 This file is part of GCC. |
7 | 5 |
8 GCC is free software; you can redistribute it and/or modify it under | 6 GCC is free software; you can redistribute it and/or modify it under |
9 the terms of the GNU General Public License as published by the Free | 7 the terms of the GNU General Public License as published by the Free |
20 <http://www.gnu.org/licenses/>. */ | 18 <http://www.gnu.org/licenses/>. */ |
21 | 19 |
22 #ifndef GCC_BUILTINS_H | 20 #ifndef GCC_BUILTINS_H |
23 #define GCC_BUILTINS_H | 21 #define GCC_BUILTINS_H |
24 | 22 |
23 #include <mpc.h> | |
24 | |
25 /* Target-dependent globals. */ | 25 /* Target-dependent globals. */ |
26 struct target_builtins { | 26 struct target_builtins { |
27 /* For each register that may be used for calling a function, this | 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 | 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 | 29 the register is not used for calling a function. If the machine |
30 has register windows, this gives only the outbound registers. | 30 has register windows, this gives only the outbound registers. |
31 INCOMING_REGNO gives the corresponding inbound register. */ | 31 INCOMING_REGNO gives the corresponding inbound register. */ |
32 enum machine_mode x_apply_args_mode[FIRST_PSEUDO_REGISTER]; | 32 machine_mode x_apply_args_mode[FIRST_PSEUDO_REGISTER]; |
33 | 33 |
34 /* For each register that may be used for returning values, this gives | 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 | 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 | 36 register is not used for returning values. If the machine has |
37 register windows, this gives only the outbound registers. | 37 register windows, this gives only the outbound registers. |
38 INCOMING_REGNO gives the corresponding inbound register. */ | 38 INCOMING_REGNO gives the corresponding inbound register. */ |
39 enum machine_mode x_apply_result_mode[FIRST_PSEUDO_REGISTER]; | 39 machine_mode x_apply_result_mode[FIRST_PSEUDO_REGISTER]; |
40 }; | 40 }; |
41 | 41 |
42 extern GTY(()) struct target_builtins default_target_builtins; | 42 extern struct target_builtins default_target_builtins; |
43 #if SWITCHABLE_TARGET | 43 #if SWITCHABLE_TARGET |
44 extern struct target_builtins *this_target_builtins; | 44 extern struct target_builtins *this_target_builtins; |
45 #else | 45 #else |
46 #define this_target_builtins (&default_target_builtins) | 46 #define this_target_builtins (&default_target_builtins) |
47 #endif | 47 #endif |
48 | 48 |
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 called_as_built_in (tree); | |
54 extern bool get_object_alignment_1 (tree, unsigned int *, | |
55 unsigned HOST_WIDE_INT *); | |
56 extern unsigned int get_object_alignment (tree); | |
57 extern bool get_pointer_alignment_1 (tree, unsigned int *, | |
58 unsigned HOST_WIDE_INT *); | |
59 extern unsigned int get_pointer_alignment (tree); | |
60 extern tree c_strlen (tree, int); | |
61 extern void expand_builtin_setjmp_setup (rtx, rtx); | |
62 extern void expand_builtin_setjmp_receiver (rtx); | |
63 extern void expand_builtin_update_setjmp_buf (rtx); | |
64 extern tree mathfn_built_in (tree, enum built_in_function fn); | |
65 extern tree mathfn_built_in (tree, combined_fn); | |
66 extern rtx builtin_strncpy_read_str (void *, HOST_WIDE_INT, scalar_int_mode); | |
67 extern rtx builtin_memset_read_str (void *, HOST_WIDE_INT, scalar_int_mode); | |
68 extern rtx expand_builtin_saveregs (void); | |
69 extern tree std_build_builtin_va_list (void); | |
70 extern tree std_fn_abi_va_list (tree); | |
71 extern tree std_canonical_va_list_type (tree); | |
72 extern void std_expand_builtin_va_start (tree, rtx); | |
73 extern void expand_builtin_trap (void); | |
74 extern void expand_ifn_atomic_bit_test_and (gcall *); | |
75 extern void expand_ifn_atomic_compare_exchange (gcall *); | |
76 extern rtx expand_builtin (tree, rtx, rtx, machine_mode, int); | |
77 extern rtx expand_builtin_with_bounds (tree, rtx, rtx, machine_mode, int); | |
78 extern enum built_in_function builtin_mathfn_code (const_tree); | |
79 extern tree fold_builtin_expect (location_t, tree, tree, tree); | |
80 extern bool avoid_folding_inline_builtin (tree); | |
81 extern tree fold_call_expr (location_t, tree, bool); | |
82 extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *); | |
83 extern tree fold_builtin_n (location_t, tree, tree *, int, bool); | |
84 extern bool validate_gimple_arglist (const gcall *, ...); | |
85 extern rtx default_expand_builtin (tree, rtx, rtx, machine_mode, int); | |
86 extern bool fold_builtin_next_arg (tree, bool); | |
87 extern tree do_mpc_arg2 (tree, tree, tree, int, int (*)(mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t)); | |
88 extern tree fold_call_stmt (gcall *, bool); | |
89 extern void set_builtin_user_assembler_name (tree decl, const char *asmspec); | |
90 extern bool is_simple_builtin (tree); | |
91 extern bool is_inexpensive_builtin (tree); | |
92 | |
93 extern bool readonly_data_expr (tree exp); | |
94 extern bool init_target_chars (void); | |
95 extern unsigned HOST_WIDE_INT target_newline; | |
96 extern unsigned HOST_WIDE_INT target_percent; | |
97 extern char target_percent_s[3]; | |
98 extern char target_percent_c[3]; | |
99 extern char target_percent_s_newline[4]; | |
100 extern bool target_char_cst_p (tree t, char *p); | |
101 | |
102 extern internal_fn associated_internal_fn (tree); | |
103 extern internal_fn replacement_internal_fn (gcall *); | |
104 | |
49 #endif | 105 #endif |