X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fbe.h;h=10af37ab9a9e0f6f8f7a6cda924c3c52b6445dd0;hb=b8d367e5b2b7d647a7e9660f64fa75ab6058e69a;hp=41d5454eb8d879b921b4a84defda565b70240ee2;hpb=d217f68a9e53ec6e800ae31ca3af8ed8b6f9ece9;p=libfirm diff --git a/include/libfirm/be.h b/include/libfirm/be.h index 41d5454eb..10af37ab9 100644 --- a/include/libfirm/be.h +++ b/include/libfirm/be.h @@ -69,6 +69,31 @@ typedef enum asm_constraint_flags_t { } asm_constraint_flags_t; ENUM_BITSET(asm_constraint_flags_t) +/** Dwarf source language codes. */ +typedef enum { + DW_LANG_C89 = 0x0001, + DW_LANG_C = 0x0002, + DW_LANG_Ada83 = 0x0003, + DW_LANG_C_plus_plus = 0x0004, + DW_LANG_Cobol74 = 0x0005, + DW_LANG_Cobol85 = 0x0006, + DW_LANG_Fortran77 = 0x0007, + DW_LANG_Fortran90 = 0x0008, + DW_LANG_Pascal83 = 0x0009, + DW_LANG_Modula2 = 0x000a, + DW_LANG_Java = 0x000b, + DW_LANG_C99 = 0x000c, + DW_LANG_Ada95 = 0x000d, + DW_LANG_Fortran95 = 0x000e, + DW_LANG_PLI = 0x000f, + DW_LANG_ObjC = 0x0010, + DW_LANG_ObjC_plus_plus = 0x0011, + DW_LANG_UPC = 0x0012, + DW_LANG_D = 0x0013, + DW_LANG_Python = 0x0014, + DW_LANG_Go = 0x0016, +} dwarf_source_language; + /** * Build a Trampoline for the closure. * @param block the block where to build the trampoline @@ -152,6 +177,35 @@ typedef struct backend_params { */ FIRM_API int be_parse_arg(const char *arg); +/** + * Returns 1 if the backend uses big-endian byte ordering + * and 0 for little-endian. + */ +FIRM_API int be_is_big_endian(void); + +/** + * Returns size of machine words. This is usually the size + * of the general purpose integer registers. + */ +FIRM_API unsigned be_get_machine_size(void); + +/** + * Returns supported float arithmetic mode or NULL if mode_D and mode_F + * are supported natively. + * Some backends like x87 can only do arithmetic in a specific float + * mode (load/store are still done in the "normal" float/double modes). + */ +FIRM_API ir_mode *be_get_mode_float_arithmetic(void); + +/** Returns type used for long long or NULL if none available. */ +FIRM_API ir_type *be_get_type_long_long(void); + +/** Returns type used for unsigned long long or NULL if none available. */ +FIRM_API ir_type *be_get_type_unsigned_long_long(void); + +/** Returns type used for long double or NULL if none available. */ +FIRM_API ir_type *be_get_type_long_double(void); + /** * Returns the backend configuration parameter. * @@ -193,6 +247,17 @@ FIRM_API asm_constraint_flags_t be_parse_asm_constraints(const char *constraints */ FIRM_API int be_is_valid_clobber(const char *clobber); +/** + * Sets source language for dwarf debug information. + */ +FIRM_API void be_dwarf_set_source_language(dwarf_source_language language); + +/** + * Sets working directory of the compiler (or directory where the compiler + * searched for sources) for dwarf debug information. + */ +FIRM_API void be_dwarf_set_compilation_directory(const char *directory); + /** @} */ #include "end.h"