GCC Middle and Back End API Reference
defaults.h File Reference

Go to the source code of this file.

Macros

#define ASM_COMMENT_START   ";#"
#define ASM_PN_FORMAT   "%s.%lu"
#define ASM_FORMAT_PRIVATE_NAME(OUTPUT, NAME, LABELNO)
#define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH)
#define IFUNC_ASM_TYPE   "gnu_indirect_function"
#define TLS_COMMON_ASM_OP   ".tls_common"
#define TARGET_DEFERRED_OUTPUT_DEFS(DECL, TARGET)   false
#define ASM_OUTPUT_LABEL(FILE, NAME)
#define ASM_OUTPUT_FUNCTION_LABEL(FILE, NAME, DECL)   ASM_OUTPUT_LABEL ((FILE), (NAME))
#define ASM_OUTPUT_INTERNAL_LABEL(FILE, NAME)
#define ASM_OUTPUT_LABELREF(FILE, NAME)
#define ASM_OUTPUT_DEBUG_LABEL(FILE, PREFIX, NUM)   (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM)
#define SUPPORTS_WEAK   0
#define TARGET_SUPPORTS_WEAK   (SUPPORTS_WEAK)
#define SUPPORTS_DISCRIMINATOR   0
#define SUPPORTS_ONE_ONLY   0
#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC   0
#define TARGET_USES_WEAK_UNWIND_INFO   0
#define USER_LABEL_PREFIX   ""
#define TARGET_ATTRIBUTE_WEAK
#define MULTIPLE_SYMBOL_SPACES   0
#define SUPPORTS_INIT_PRIORITY   1
#define EH_TABLES_CAN_BE_READ_ONLY   0
#define TARGET_USE_JCR_SECTION   0
#define DWARF_FRAME_REGISTERS   FIRST_PSEUDO_REGISTER
#define DWARF_CIE_DATA_ALIGNMENT   ((int) UNITS_PER_WORD)
#define DWARF_FRAME_RETURN_COLUMN   DWARF_FRAME_REGISTERS
#define DBX_REGISTER_NUMBER(REGNO)   (REGNO)
#define DWARF_FRAME_REGNUM(REG)   DBX_REGISTER_NUMBER (REG)
#define DWARF2_FRAME_REG_OUT(REGNO, FOR_EH)   (REGNO)
#define DWARF2_ADDR_SIZE   (POINTER_SIZE / BITS_PER_UNIT)
#define DWARF_OFFSET_SIZE   4
#define DWARF_TYPE_SIGNATURE_SIZE   8
#define BITS_PER_UNIT   8
#define BITS_PER_WORD   (BITS_PER_UNIT * UNITS_PER_WORD)
#define CHAR_TYPE_SIZE   BITS_PER_UNIT
#define BOOL_TYPE_SIZE   CHAR_TYPE_SIZE
#define SHORT_TYPE_SIZE   (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
#define INT_TYPE_SIZE   BITS_PER_WORD
#define LONG_TYPE_SIZE   BITS_PER_WORD
#define LONG_LONG_TYPE_SIZE   (BITS_PER_WORD * 2)
#define WCHAR_TYPE_SIZE   INT_TYPE_SIZE
#define FLOAT_TYPE_SIZE   BITS_PER_WORD
#define DOUBLE_TYPE_SIZE   (BITS_PER_WORD * 2)
#define LONG_DOUBLE_TYPE_SIZE   (BITS_PER_WORD * 2)
#define DECIMAL32_TYPE_SIZE   32
#define DECIMAL64_TYPE_SIZE   64
#define DECIMAL128_TYPE_SIZE   128
#define SHORT_FRACT_TYPE_SIZE   BITS_PER_UNIT
#define FRACT_TYPE_SIZE   (BITS_PER_UNIT * 2)
#define LONG_FRACT_TYPE_SIZE   (BITS_PER_UNIT * 4)
#define LONG_LONG_FRACT_TYPE_SIZE   (BITS_PER_UNIT * 8)
#define SHORT_ACCUM_TYPE_SIZE   (SHORT_FRACT_TYPE_SIZE * 2)
#define ACCUM_TYPE_SIZE   (FRACT_TYPE_SIZE * 2)
#define LONG_ACCUM_TYPE_SIZE   (LONG_FRACT_TYPE_SIZE * 2)
#define LONG_LONG_ACCUM_TYPE_SIZE   (LONG_LONG_FRACT_TYPE_SIZE * 2)
#define SIZE_TYPE   "long unsigned int"
#define SIZETYPE   SIZE_TYPE
#define PID_TYPE   "int"
#define CHAR16_TYPE   "short unsigned int"
#define CHAR32_TYPE   "unsigned int"
#define WCHAR_TYPE   "int"
#define MODIFIED_WCHAR_TYPE   (flag_short_wchar ? "short unsigned int" : WCHAR_TYPE)
#define PTRDIFF_TYPE   "long int"
#define WINT_TYPE   "unsigned int"
#define INTMAX_TYPE
#define UINTMAX_TYPE
#define SIG_ATOMIC_TYPE   ((const char *) NULL)
#define INT8_TYPE   ((const char *) NULL)
#define INT16_TYPE   ((const char *) NULL)
#define INT32_TYPE   ((const char *) NULL)
#define INT64_TYPE   ((const char *) NULL)
#define UINT8_TYPE   ((const char *) NULL)
#define UINT16_TYPE   ((const char *) NULL)
#define UINT32_TYPE   ((const char *) NULL)
#define UINT64_TYPE   ((const char *) NULL)
#define INT_LEAST8_TYPE   ((const char *) NULL)
#define INT_LEAST16_TYPE   ((const char *) NULL)
#define INT_LEAST32_TYPE   ((const char *) NULL)
#define INT_LEAST64_TYPE   ((const char *) NULL)
#define UINT_LEAST8_TYPE   ((const char *) NULL)
#define UINT_LEAST16_TYPE   ((const char *) NULL)
#define UINT_LEAST32_TYPE   ((const char *) NULL)
#define UINT_LEAST64_TYPE   ((const char *) NULL)
#define INT_FAST8_TYPE   ((const char *) NULL)
#define INT_FAST16_TYPE   ((const char *) NULL)
#define INT_FAST32_TYPE   ((const char *) NULL)
#define INT_FAST64_TYPE   ((const char *) NULL)
#define UINT_FAST8_TYPE   ((const char *) NULL)
#define UINT_FAST16_TYPE   ((const char *) NULL)
#define UINT_FAST32_TYPE   ((const char *) NULL)
#define UINT_FAST64_TYPE   ((const char *) NULL)
#define INTPTR_TYPE   ((const char *) NULL)
#define UINTPTR_TYPE   ((const char *) NULL)
#define POINTER_SIZE   BITS_PER_WORD
#define PIC_OFFSET_TABLE_REGNUM   INVALID_REGNUM
#define PIC_OFFSET_TABLE_REG_CALL_CLOBBERED   0
#define TARGET_DLLIMPORT_DECL_ATTRIBUTES   0
#define TARGET_DECLSPEC   0
#define ACCUMULATE_OUTGOING_ARGS   0
#define NEXT_OBJC_RUNTIME   0
#define PUSH_ARGS   0
#define PUSH_ARGS_REVERSED   0
#define MALLOC_ABI_ALIGNMENT   BITS_PER_WORD
#define PREFERRED_STACK_BOUNDARY   STACK_BOUNDARY
#define INCOMING_STACK_BOUNDARY   PREFERRED_STACK_BOUNDARY
#define TARGET_DEFAULT_PACK_STRUCT   0
#define TARGET_VTABLE_ENTRY_ALIGN   POINTER_SIZE
#define TARGET_VTABLE_DATA_ENTRY_DISTANCE   1
#define TARGET_USE_LOCAL_THUNK_ALIAS_P(DECL)   0
#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)   DW_EH_PE_absptr
#define TARGET_PTRMEMFUNC_VBIT_LOCATION
#define DEFAULT_GDB_EXTENSIONS   1
#define PREFERRED_DEBUGGING_TYPE   NO_DEBUG
#define LARGEST_EXPONENT_IS_NORMAL(SIZE)   0
#define ROUND_TOWARDS_ZERO   0
#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON)   false
#define TARGET_LIB_INT_CMP_BIASED   (true)
#define FLOAT_WORDS_BIG_ENDIAN   WORDS_BIG_ENDIAN
#define REG_WORDS_BIG_ENDIAN   WORDS_BIG_ENDIAN
#define TARGET_FLT_EVAL_METHOD   0
#define TARGET_FLT_EVAL_METHOD_NON_DEFAULT   0
#define TARGET_DEC_EVAL_METHOD   2
#define HAS_LONG_COND_BRANCH   0
#define HAS_LONG_UNCOND_BRANCH   0
#define DEFAULT_USE_CXA_ATEXIT   0
#define USE_MD_CONSTRAINTS
#define TARGET_HAS_BIONIC   0
#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)   0
#define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)   0
#define STORE_FLAG_VALUE   1
#define MOVE_MAX_PIECES   MOVE_MAX
#define MAX_MOVE_MAX   MOVE_MAX
#define MIN_UNITS_PER_WORD   UNITS_PER_WORD
#define MAX_BITS_PER_WORD   BITS_PER_WORD
#define STACK_POINTER_OFFSET   0
#define LOCAL_REGNO(REGNO)   0
#define EXIT_IGNORE_STACK   0
#define CASE_VECTOR_PC_RELATIVE   0
#define TRAMPOLINE_ALIGNMENT   FUNCTION_BOUNDARY
#define INCOMING_REGNO(N)   (N)
#define OUTGOING_REGNO(N)   (N)
#define SHIFT_COUNT_TRUNCATED   0
#define LEGITIMATE_PIC_OPERAND_P(X)   1
#define TARGET_MEM_CONSTRAINT   'm'
#define REVERSIBLE_CC_MODE(MODE)   0
#define MAX_OFILE_ALIGNMENT   BIGGEST_ALIGNMENT
#define FRAME_GROWS_DOWNWARD   0
#define ARG_POINTER_CFA_OFFSET(FNDECL)   (FIRST_PARM_OFFSET (FNDECL) + crtl->args.pretend_args_size)
#define CFA_FRAME_BASE_OFFSET(FNDECL)   0
#define INCOMING_FRAME_SP_OFFSET   0
#define HARD_REGNO_NREGS_HAS_PADDING(REGNO, MODE)   0
#define HARD_REGNO_NREGS_WITH_PADDING(REGNO, MODE)   -1
#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE)   0
#define MAX_STACK_ALIGNMENT   STACK_BOUNDARY
#define MAX_SUPPORTED_STACK_ALIGNMENT   PREFERRED_STACK_BOUNDARY
#define SUPPORTS_STACK_ALIGNMENT   (MAX_STACK_ALIGNMENT > STACK_BOUNDARY)
#define LOCAL_ALIGNMENT(TYPE, ALIGNMENT)   ALIGNMENT
#define STACK_SLOT_ALIGNMENT(TYPE, MODE, ALIGN)   ((TYPE) ? LOCAL_ALIGNMENT ((TYPE), (ALIGN)) : (ALIGN))
#define LOCAL_DECL_ALIGNMENT(DECL)   LOCAL_ALIGNMENT (TREE_TYPE (DECL), DECL_ALIGN (DECL))
#define MINIMUM_ALIGNMENT(EXP, MODE, ALIGN)   (ALIGN)
#define ATTRIBUTE_ALIGNED_VALUE   BIGGEST_ALIGNMENT
#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN)   STRICT_ALIGNMENT
#define CONSTANT_ADDRESS_P(X)   (CONSTANT_P (X) && GET_CODE (X) != CONST_DOUBLE)
#define MAX_FIXED_MODE_SIZE   GET_MODE_BITSIZE (DImode)
#define DEFAULT_PCC_STRUCT_RETURN   1

Macro Definition Documentation

#define ACCUM_TYPE_SIZE   (FRACT_TYPE_SIZE * 2)

Referenced by get_callee_fndecl().

#define ACCUMULATE_OUTGOING_ARGS   0

By default, the preprocessor should be invoked the same way in C++ as in C.

Referenced by check_argument_store().

#define ARG_POINTER_CFA_OFFSET (   FNDECL)    (FIRST_PARM_OFFSET (FNDECL) + crtl->args.pretend_args_size)

On most machines, the CFA coincides with the first incoming parm.

#define ASM_COMMENT_START   ";#"

Definitions of various defaults for tm.h macros. Copyright (C) 1992-2013 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@m.nosp@m.onke.nosp@m.ys.co.nosp@m.m)

This file is part of GCC.

GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.

GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation.

You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see http://www.gnu.org/licenses/. How to start an assembler comment.

Referenced by dw2_asm_output_data_sleb128_raw(), dw2_asm_output_data_uleb128_raw(), dw2_asm_output_nstring(), output_cfi(), and print_version().

#define ASM_FORMAT_PRIVATE_NAME (   OUTPUT,
  NAME,
  LABELNO 
)
Value:
do { const char *const name_ = (NAME); \
char *const output_ = (OUTPUT) = \
(char *) alloca (strlen (name_) + 32); \
sprintf (output_, ASM_PN_FORMAT, name_, (unsigned long)(LABELNO)); \
} while (0)

Referenced by lhd_set_decl_assembler_name().

#define ASM_OUTPUT_ASCII (   MYFILE,
  MYSTRING,
  MYLENGTH 
)

Choose a reasonable default for ASM_OUTPUT_ASCII.

#define ASM_OUTPUT_DEBUG_LABEL (   FILE,
  PREFIX,
  NUM 
)    (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM)

Allow target to print debug info labels specially. This is useful for VLIW targets, since debug info labels should go into the middle of instruction bundles instead of breaking them.

Referenced by decls_for_scope().

#define ASM_OUTPUT_FUNCTION_LABEL (   FILE,
  NAME,
  DECL 
)    ASM_OUTPUT_LABEL ((FILE), (NAME))

This is how to output the definition of a user-level label named NAME, such as the label on a function.

#define ASM_OUTPUT_INTERNAL_LABEL (   FILE,
  NAME 
)
Value:
do { \
assemble_name_raw ((FILE), (NAME)); \
fputs (":\n", (FILE)); \
} while (0)

Output the definition of a compiler-generated label named NAME.

Referenced by default_unique_section().

#define ASM_OUTPUT_LABEL (   FILE,
  NAME 
)
Value:
do { \
assemble_name ((FILE), (NAME)); \
fputs (":\n", (FILE)); \
} while (0)

This is how to output the definition of a user-level label named NAME, such as the label on variable NAME.

Referenced by assemble_align(), contains_pointers_p(), and get_named_section().

#define ASM_OUTPUT_LABELREF (   FILE,
  NAME 
)
Value:
do { \
fputs (user_label_prefix, (FILE)); \
fputs ((NAME), (FILE)); \
} while (0);

This is how to output a reference to a user-level label named NAME.

#define ASM_PN_FORMAT   "%s.%lu"

Store in OUTPUT a string (made with alloca) containing an assembler-name for a local static variable or function named NAME. LABELNO is an integer which is different for each call.

#define ASM_PREFERRED_EH_DATA_FORMAT (   CODE,
  GLOBAL 
)    DW_EH_PE_absptr

Select a format to encode pointers in exception handling data. We prefer those that result in fewer dynamic relocations. Assume no special support here and encode direct references.

Referenced by push_sleb128(), and stripattributes().

#define ATTRIBUTE_ALIGNED_VALUE   BIGGEST_ALIGNMENT

Alignment value for attribute ((aligned)).

#define BOOL_TYPE_SIZE   CHAR_TYPE_SIZE

`bool' has size and alignment `1', on almost all platforms.

Referenced by expand_builtin_compare_and_swap().

#define CASE_VECTOR_PC_RELATIVE   0

Assume that case vectors are not pc-relative.

#define CFA_FRAME_BASE_OFFSET (   FNDECL)    0

On most machines, we use the CFA as DW_AT_frame_base.

#define CHAR16_TYPE   "short unsigned int"

If GCC knows the exact uint_least16_t and uint_least32_t types from <stdint.h>, use them for char16_t and char32_t. Otherwise, use these guesses; getting the wrong type of a given width will not affect C++ name mangling because in C++ these are distinct types not typedefs.

#define CHAR32_TYPE   "unsigned int"
#define CHAR_TYPE_SIZE   BITS_PER_UNIT
#define CLZ_DEFINED_VALUE_AT_ZERO (   MODE,
  VALUE 
)    0

Indicate that CLZ and CTZ are undefined at zero.

Referenced by address_of_int_loc_descriptor(), fold_builtin_cbrt(), and simplify_const_unary_operation().

#define CONSTANT_ADDRESS_P (   X)    (CONSTANT_P (X) && GET_CODE (X) != CONST_DOUBLE)

For most ports anything that evaluates to a constant symbolic or integer value is acceptable as a constant address.

Referenced by output_asm_operand_names().

#define CTZ_DEFINED_VALUE_AT_ZERO (   MODE,
  VALUE 
)    0
#define DBX_REGISTER_NUMBER (   REGNO)    (REGNO)

How to renumber registers for dbx and gdb. If not defined, assume no renumbering is necessary.

Referenced by is_base_type().

#define DECIMAL128_TYPE_SIZE   128
#define DECIMAL32_TYPE_SIZE   32
#define DECIMAL64_TYPE_SIZE   64
#define DEFAULT_GDB_EXTENSIONS   1
#define DEFAULT_PCC_STRUCT_RETURN   1

Nonzero if structures and unions should be returned in memory.

This should only be defined if compatibility with another compiler or with an ABI is needed, because it results in slower code.

#define DEFAULT_USE_CXA_ATEXIT   0

Determine whether __cxa_atexit, rather than atexit, is used to register C++ destructors for local statics and global objects.

#define DOUBLE_TYPE_SIZE   (BITS_PER_WORD * 2)
#define DWARF2_ADDR_SIZE   (POINTER_SIZE / BITS_PER_UNIT)

The size of addresses as they appear in the Dwarf 2 data. Some architectures use word addresses to refer to code locations, but Dwarf 2 info always uses byte addresses. On such machines, Dwarf 2 addresses need to be larger than the architecture's pointers.

Referenced by dwarf2_build_local_stub(), and loc_descr_equal_p_1().

#define DWARF2_FRAME_REG_OUT (   REGNO,
  FOR_EH 
)    (REGNO)

Map register numbers held in the call frame info that gcc has collected using DWARF_FRAME_REGNUM to those that should be output in .debug_frame and .eh_frame.

#define DWARF_CIE_DATA_ALIGNMENT   ((int) UNITS_PER_WORD)

Offsets recorded in opcodes are a multiple of this alignment factor.

#define DWARF_FRAME_REGISTERS   FIRST_PSEUDO_REGISTER

Number of hardware registers that go into the DWARF-2 unwind info. If not defined, equals FIRST_PSEUDO_REGISTER

#define DWARF_FRAME_REGNUM (   REG)    DBX_REGISTER_NUMBER (REG)

The mapping from gcc register number to DWARF 2 CFA column number. By default, we just provide columns for all registers.

#define DWARF_FRAME_RETURN_COLUMN   DWARF_FRAME_REGISTERS

The DWARF 2 CFA column which tracks the return address. Normally this is the column for PC, or the first column after all of the hard registers.

Referenced by dwarf2out_frame_debug_cfa_window_save(), dwf_regno(), and expand_builtin_dwarf_sp_column().

#define DWARF_OFFSET_SIZE   4

The size in bytes of a DWARF field indicating an offset or length relative to a debug info section, specified to be 4 bytes in the DWARF-2 specification. The SGI/MIPS ABI defines it to be the same as PTR_SIZE.

Referenced by optimize_external_refs_1().

#define DWARF_TYPE_SIGNATURE_SIZE   8

The size in bytes of a DWARF 4 type signature.

#define EH_TABLES_CAN_BE_READ_ONLY   0

If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that the rest of the DWARF 2 frame unwind support is also provided. If we have named sections, and we're using crtstuff to run ctors, use them for registering eh frame information. On many systems, different EH table encodings are used under difference circumstances. Some will require runtime relocations; some will not. For those that do not require runtime relocations, we would like to make the table read-only. However, since the read-only tables may need to be combined with read-write tables that do require runtime relocation, it is not safe to make the tables read-only unless the linker will merge read-only and read-write sections into a single read-write section. If your linker does not have this ability, but your system is such that no encoding used with non-PIC code will ever require a runtime relocation, then you can define EH_TABLES_CAN_BE_READ_ONLY to 1 in your target configuration file.

Referenced by push_sleb128().

#define EXIT_IGNORE_STACK   0

EXIT_IGNORE_STACK should be nonzero if, when returning from a function, the stack pointer does not matter. The value is tested only in functions that have frame pointers.

Referenced by discard_pending_stack_adjust().

#define FLOAT_LIB_COMPARE_RETURNS_BOOL (   MODE,
  COMPARISON 
)    false
#define FLOAT_TYPE_SIZE   BITS_PER_WORD
#define FLOAT_WORDS_BIG_ENDIAN   WORDS_BIG_ENDIAN

If FLOAT_WORDS_BIG_ENDIAN is not defined in the header files, then the word-endianness is the same as for integers.

Referenced by expand_abs(), and expand_builtin_assume_aligned().

#define FRACT_TYPE_SIZE   (BITS_PER_UNIT * 2)

Referenced by decl_type_context().

#define FRAME_GROWS_DOWNWARD   0
#define HARD_REGNO_NREGS_HAS_PADDING (   REGNO,
  MODE 
)    0
#define HARD_REGNO_NREGS_WITH_PADDING (   REGNO,
  MODE 
)    -1
#define HAS_LONG_COND_BRANCH   0
#define HAS_LONG_UNCOND_BRANCH   0
#define IFUNC_ASM_TYPE   "gnu_indirect_function"

This is how we tell the assembler to equate two values.

#define INCOMING_FRAME_SP_OFFSET   0

The offset from the incoming value of sp to the top of the stack frame for the current function.

#define INCOMING_REGNO (   N)    (N)

Register mappings for target machines without register windows.

Referenced by apply_args_size().

#define INCOMING_STACK_BOUNDARY   PREFERRED_STACK_BOUNDARY

Set INCOMING_STACK_BOUNDARY to PREFERRED_STACK_BOUNDARY if it is not defined.

#define INT16_TYPE   ((const char *) NULL)
#define INT32_TYPE   ((const char *) NULL)
#define INT64_TYPE   ((const char *) NULL)
#define INT8_TYPE   ((const char *) NULL)
#define INT_FAST16_TYPE   ((const char *) NULL)
#define INT_FAST32_TYPE   ((const char *) NULL)
#define INT_FAST64_TYPE   ((const char *) NULL)
#define INT_FAST8_TYPE   ((const char *) NULL)
#define INT_LEAST16_TYPE   ((const char *) NULL)
#define INT_LEAST32_TYPE   ((const char *) NULL)
#define INT_LEAST64_TYPE   ((const char *) NULL)
#define INT_LEAST8_TYPE   ((const char *) NULL)
#define INT_TYPE_SIZE   BITS_PER_WORD
#define INTMAX_TYPE
Value:
? "int" \
? "long int" \
: "long long int"))
#define INTPTR_TYPE   ((const char *) NULL)
#define LARGEST_EXPONENT_IS_NORMAL (   SIZE)    0
#define LEGITIMATE_PIC_OPERAND_P (   X)    1
#define LOCAL_ALIGNMENT (   TYPE,
  ALIGNMENT 
)    ALIGNMENT
#define LOCAL_DECL_ALIGNMENT (   DECL)    LOCAL_ALIGNMENT (TREE_TYPE (DECL), DECL_ALIGN (DECL))
#define LOCAL_REGNO (   REGNO)    0
#define LONG_ACCUM_TYPE_SIZE   (LONG_FRACT_TYPE_SIZE * 2)

Referenced by get_callee_fndecl().

#define LONG_DOUBLE_TYPE_SIZE   (BITS_PER_WORD * 2)
#define LONG_FRACT_TYPE_SIZE   (BITS_PER_UNIT * 4)

Referenced by decl_type_context().

#define LONG_LONG_ACCUM_TYPE_SIZE   (LONG_LONG_FRACT_TYPE_SIZE * 2)

Referenced by get_callee_fndecl().

#define LONG_LONG_FRACT_TYPE_SIZE   (BITS_PER_UNIT * 8)

Referenced by decl_type_context().

#define LONG_LONG_TYPE_SIZE   (BITS_PER_WORD * 2)
#define LONG_TYPE_SIZE   BITS_PER_WORD
#define MALLOC_ABI_ALIGNMENT   BITS_PER_WORD

Default value for the alignment (in bits) a C conformant malloc has to provide. This default is intended to be safe and always correct.

#define MAX_BITS_PER_WORD   BITS_PER_WORD
#define MAX_FIXED_MODE_SIZE   GET_MODE_BITSIZE (DImode)

Referenced by store_bit_field().

#define MAX_MOVE_MAX   MOVE_MAX
#define MAX_OFILE_ALIGNMENT   BIGGEST_ALIGNMENT

Biggest alignment supported by the object file format of this machine.

Referenced by vect_load_lanes_supported().

#define MAX_STACK_ALIGNMENT   STACK_BOUNDARY

MAX_STACK_ALIGNMENT is the maximum stack alignment guaranteed by the backend. MAX_SUPPORTED_STACK_ALIGNMENT is the maximum best effort stack alignment supported by the backend. If the backend supports stack alignment, MAX_SUPPORTED_STACK_ALIGNMENT and MAX_STACK_ALIGNMENT are the same. Otherwise, the incoming stack boundary will limit the maximum guaranteed stack alignment.

Referenced by vect_load_lanes_supported().

#define MIN_UNITS_PER_WORD   UNITS_PER_WORD
#define MINIMUM_ALIGNMENT (   EXP,
  MODE,
  ALIGN 
)    (ALIGN)
#define MODIFIED_WCHAR_TYPE   (flag_short_wchar ? "short unsigned int" : WCHAR_TYPE)

WCHAR_TYPE gets overridden by -fshort-wchar.

#define MOVE_MAX_PIECES   MOVE_MAX

This macro is used to determine what the largest unit size that move_by_pieces can use is. MOVE_MAX_PIECES is the number of bytes at a time which we can move efficiently, as opposed to MOVE_MAX which is the maximum number of bytes we can move with a single instruction.

Referenced by alignment_for_piecewise_move(), and inline_forbidden_p_stmt().

#define MULTIPLE_SYMBOL_SPACES   0

By default we can assume that all global symbols are in one namespace, across all shared libraries.

#define NEXT_OBJC_RUNTIME   0

By default, use the GNU runtime for Objective C.

#define OUTGOING_REG_PARM_STACK_SPACE (   FNTYPE)    0
#define OUTGOING_REGNO (   N)    (N)
#define PIC_OFFSET_TABLE_REG_CALL_CLOBBERED   0

Referenced by rtx_unstable_p(), and rtx_varies_p().

#define PIC_OFFSET_TABLE_REGNUM   INVALID_REGNUM
#define PID_TYPE   "int"
#define POINTER_SIZE   BITS_PER_WORD

Width in bits of a pointer. Mind the value of the macro `Pmode'.

Referenced by size_of_sleb128(), ultimate_transparent_alias_target(), and weak_finish_1().

#define PREFERRED_DEBUGGING_TYPE   NO_DEBUG

If more than one debugging type is supported, you must define PREFERRED_DEBUGGING_TYPE to choose the default. No debugging format is supported by this target.

Referenced by handle_param().

#define PREFERRED_STACK_BOUNDARY   STACK_BOUNDARY

If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY. STACK_BOUNDARY is required.

Referenced by allocate_dynamic_stack_space(), and get_stack_local_alignment().

#define PTRDIFF_TYPE   "long int"
#define PUSH_ARGS   0

Supply a default definition for PUSH_ARGS.

#define PUSH_ARGS_REVERSED   0

Decide whether a function's arguments should be processed from first to last or from last to first.

They should if the stack and args grow in opposite directions, but only if we have push insns.

#define REG_WORDS_BIG_ENDIAN   WORDS_BIG_ENDIAN
#define REVERSIBLE_CC_MODE (   MODE)    0
#define ROUND_TOWARDS_ZERO   0
#define SHIFT_COUNT_TRUNCATED   0
#define SHORT_ACCUM_TYPE_SIZE   (SHORT_FRACT_TYPE_SIZE * 2)

Referenced by get_callee_fndecl().

#define SHORT_FRACT_TYPE_SIZE   BITS_PER_UNIT

Referenced by decl_type_context().

#define SHORT_TYPE_SIZE   (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2))
#define SIG_ATOMIC_TYPE   ((const char *) NULL)

There are no default definitions of these <stdint.h> types.

#define SIZE_TYPE   "long unsigned int"

We let tm.h override the types used here, to handle trivial differences such as the choice of unsigned int or long unsigned int for size_t. When machines start needing nontrivial differences in the size type, it would be best to do something here to figure out automatically from other information what type to use.

#define SIZETYPE   SIZE_TYPE
#define SLOW_UNALIGNED_ACCESS (   MODE,
  ALIGN 
)    STRICT_ALIGNMENT

Referenced by lowpart_bit_field_p().

#define STACK_POINTER_OFFSET   0
#define STACK_SLOT_ALIGNMENT (   TYPE,
  MODE,
  ALIGN 
)    ((TYPE) ? LOCAL_ALIGNMENT ((TYPE), (ALIGN)) : (ALIGN))

Referenced by frame_offset_overflow().

#define STORE_FLAG_VALUE   1

Provide a default value for STORE_FLAG_VALUE.

Referenced by emit_cstore(), end_ifcvt_sequence(), simplify_set(), and subst().

#define SUPPORTS_DISCRIMINATOR   0

This determines whether or not we support the discriminator attribute in the .loc directive.

#define SUPPORTS_INIT_PRIORITY   1

If the target supports init_priority C++ attribute, give SUPPORTS_INIT_PRIORITY a nonzero value.

#define SUPPORTS_ONE_ONLY   0

This determines whether or not we support link-once semantics.

#define SUPPORTS_STACK_ALIGNMENT   (MAX_STACK_ALIGNMENT > STACK_BOUNDARY)
#define SUPPORTS_WEAK   0

This is how we tell the assembler that a symbol is weak. This is how we tell the assembler that a symbol is a weak alias to another symbol that doesn't require the other symbol to be defined. Uses of the former will turn into weak uses of the latter, i.e., uses that, in case the latter is undefined, will not cause errors, and will add it to the symbol table as weak undefined. However, if the latter is referenced directly, a strong reference prevails. How to emit a .type directive. How to emit a .size directive. This determines whether or not we support weak symbols. SUPPORTS_WEAK must be a preprocessor constant.

#define TARGET_ATTRIBUTE_WEAK

If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to provide a weak attribute. Else define it to nothing.

This would normally belong in ansidecl.h, but SUPPORTS_WEAK is not available at that time.

Note, this is only for use by target files which we know are to be compiled by GCC.

#define TARGET_DEC_EVAL_METHOD   2
#define TARGET_DECLSPEC   0
#define TARGET_DEFAULT_PACK_STRUCT   0
#define TARGET_DEFERRED_OUTPUT_DEFS (   DECL,
  TARGET 
)    false

Decide whether to defer emitting the assembler output for an equate of two values. The default is to not defer output.

#define TARGET_DLLIMPORT_DECL_ATTRIBUTES   0
#define TARGET_FLT_EVAL_METHOD   0
#define TARGET_FLT_EVAL_METHOD_NON_DEFAULT   0
#define TARGET_HAS_BIONIC   0

Determin whether the target runtime library is Bionic

#define TARGET_LIB_INT_CMP_BIASED   (true)

True if the targets integer-comparison functions return { 0, 1, 2 } to indicate { <, ==, > }. False if { -1, 0, 1 } is used instead. The libgcc routines are biased.

#define TARGET_MEM_CONSTRAINT   'm'
#define TARGET_PTRMEMFUNC_VBIT_LOCATION
Value:

By default, the C++ compiler will use the lowest bit of the pointer to function to indicate a pointer-to-member-function points to a virtual member function. However, if FUNCTION_BOUNDARY indicates function addresses aren't always even, the lowest bit of the delta field will be used.

#define TARGET_SUPPORTS_WEAK   (SUPPORTS_WEAK)

This determines whether or not we support weak symbols during target code generation. TARGET_SUPPORTS_WEAK can be any valid C expression.

Referenced by output_constructor_bitfield().

#define TARGET_USE_JCR_SECTION   0

If we have named section and we support weak symbols, then use the .jcr section for recording java classes which need to be registered at program start-up time. This decision to use a .jcr section can be overridden by defining USE_JCR_SECTION to 0 in target file. This is necessary if target can define JCR_SECTION_NAME but does not have crtstuff or linker support for .jcr section.

#define TARGET_USE_LOCAL_THUNK_ALIAS_P (   DECL)    0

Decide whether it is safe to use a local alias for a virtual function when constructing thunks.

#define TARGET_USES_WEAK_UNWIND_INFO   0

This determines whether or not we need linkonce unwind information.

Referenced by fde_needed_for_eh_p().

#define TARGET_VTABLE_DATA_ENTRY_DISTANCE   1

There are a few non-descriptor entries in the vtable at offsets below zero. If these entries must be padded (say, to preserve the alignment specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number of words in each data entry.

#define TARGET_VTABLE_ENTRY_ALIGN   POINTER_SIZE

By default, the vtable entries are void pointers, the so the alignment is the same as pointer alignment. The value of this macro specifies the alignment of the vtable entry in bits. It should be defined only when special alignment is necessary.

#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC   0

This determines whether weak symbols must be left out of a static archive's table of contents. Defining this macro to be nonzero has the consequence that certain symbols will not be made weak that otherwise would be. The C++ ABI requires this macro to be zero; see the documentation.

#define TLS_COMMON_ASM_OP   ".tls_common"
#define TRAMPOLINE_ALIGNMENT   FUNCTION_BOUNDARY

Assume that trampolines need function alignment.

#define UINT16_TYPE   ((const char *) NULL)
#define UINT32_TYPE   ((const char *) NULL)
#define UINT64_TYPE   ((const char *) NULL)
#define UINT8_TYPE   ((const char *) NULL)
#define UINT_FAST16_TYPE   ((const char *) NULL)
#define UINT_FAST32_TYPE   ((const char *) NULL)
#define UINT_FAST64_TYPE   ((const char *) NULL)
#define UINT_FAST8_TYPE   ((const char *) NULL)
#define UINT_LEAST16_TYPE   ((const char *) NULL)
#define UINT_LEAST32_TYPE   ((const char *) NULL)
#define UINT_LEAST64_TYPE   ((const char *) NULL)
#define UINT_LEAST8_TYPE   ((const char *) NULL)
#define UINTMAX_TYPE
Value:
? "unsigned int" \
? "long unsigned int" \
: "long long unsigned int"))
#define UINTPTR_TYPE   ((const char *) NULL)
#define USE_MD_CONSTRAINTS

If none of these macros are defined, the port must use the new technique of defining constraints in the machine description. tm_p.h will define those macros that machine-independent code still uses.

#define USER_LABEL_PREFIX   ""

By default, there is no prefix on user-defined symbols.

#define WCHAR_TYPE   "int"
#define WCHAR_TYPE_SIZE   INT_TYPE_SIZE
#define WINT_TYPE   "unsigned int"