1 /* go-c.h -- Header file for go frontend gcc C interface. 2 Copyright (C) 2009-2021 Free Software Foundation, Inc. 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 GO_GO_C_H 21 #define GO_GO_C_H 22 23 #define GO_EXTERN_C 24 25 class Linemap; 26 class Backend; 27 28 /* Functions defined in the Go frontend proper called by the GCC 29 interface. */ 30 31 extern int go_enable_dump (const char*); 32 extern int go_enable_optimize (const char*, int); 33 34 extern void go_add_search_path (const char*); 35 36 struct go_create_gogo_args 37 { 38 int int_type_size; 39 int pointer_size; 40 const char* pkgpath; 41 const char* prefix; 42 const char* relative_import_path; 43 const char* c_header; 44 const char* embedcfg; 45 Backend* backend; 46 Linemap* linemap; 47 bool check_divide_by_zero; 48 bool check_divide_overflow; 49 bool compiling_runtime; 50 int debug_escape_level; 51 const char* debug_escape_hash; 52 int64_t nil_check_size_threshold; 53 bool debug_optimization; 54 bool need_eqtype; 55 }; 56 57 extern void go_create_gogo (const struct go_create_gogo_args*); 58 59 extern void go_parse_input_files (const char**, unsigned int, 60 bool only_check_syntax, 61 bool require_return_statement); 62 extern void go_write_globals (void); 63 64 /* Functions defined in the GCC interface called by the Go frontend 65 proper. */ 66 67 extern void go_preserve_from_gc (tree); 68 69 extern bool saw_errors (void); 70 71 extern const char *go_localize_identifier (const char*); 72 73 extern unsigned int go_field_alignment (tree); 74 75 extern void go_imported_unsafe (void); 76 77 extern void go_write_export_data (const char *, unsigned int); 78 79 extern const char *go_read_export_data (int, off_t, char **, size_t *, int *); 80 81 extern GTY(()) tree go_non_zero_struct; 82 83 #endif /* !defined(GO_GO_C_H) */ 84