# Data Options

This section contains descriptions for compiler options that pertain to the treatment of data.

Parent topic: Compiler Options

- align
  Determines whether variables and arrays are naturally aligned.
- auto-ilp32, Qauto-ilp32
  Instructs the compiler to analyze the program to determine if there are 64-bit pointers that can be safely shrunk into 32-bit pointers and if there are 64-bit longs (on Linux* systems) that can be safely shrunk into 32-bit longs.
- auto-p32
  Instructs the compiler to analyze the program to determine if there are 64-bit pointers that can be safely shrunk to 32-bit pointers.
- check-pointers, Qcheck-pointers
  Determines whether the compiler checks bounds for memory access through pointers.
- check-pointers-dangling, Qcheck-pointers-dangling
  Determines whether the compiler checks for dangling pointer references.
- check-pointers-mpx, Qcheck-pointers-mpx
  Determines whether the compiler checks bounds for memory access through pointers on processors that support Intel® Memory Protection Extensions (Intel® MPX).
- check-pointers-narrowing, Qcheck-pointers-narrowing
  Determines whether the compiler enables or disables the narrowing of pointers to structure fields.
- check-pointers-undimensioned, Qcheck-pointers-undimensioned
  Determines whether the compiler checks bounds for memory access through arrays that are declared without dimensions.
- falign-functions, Qfnalign
  Tells the compiler to align functions on an optimal byte boundary.
- falign-loops, Qalign-loops
  Aligns loops to a power-of-two byte boundary.
- falign-stack
  Tells the compiler the stack alignment to use on entry to routines. This is a deprecated option that may be removed in a future release.
- fcommon
  Determines whether the compiler treats common symbols as global definitions.
- fextend-arguments, Qextend-arguments
  Controls how scalar integer arguments are extended in calls to unprototyped and varargs functions.
- fkeep-static-consts, Qkeep-static-consts
  Tells the compiler to preserve allocation of variables that are not referenced in the source.
- fmath-errno
  Tells the compiler that errno can be reliably tested after calls to standard math library functions.
- fminshared
  Specifies that a compilation unit is a component of a main program and should not be linked as part of a shareable object.
- fmudflap
  Tells the compiler to instrument risky pointer operations to prevent buffer overflows and invalid heap use. This is a deprecated option that may be removed in a future release.
- fpack-struct
  Specifies that structure members should be packed together.
- fpascal-strings
  Tells the compiler to allow for Pascal-style string literals.
- fpic
  Determines whether the compiler generates position-independent code.
- fpie
  Tells the compiler to generate position-independent code. The generated code can only be linked into executables.
- freg-struct-return
  Tells the compiler to return struct and union values in registers when possible.
- fstack-protector
  Enables or disables stack overflow security checks for certain (or all) routines.
- fstack-security-check
  Determines whether the compiler generates code that detects some buffer overruns.
- fvisibility
  Specifies the default visibility for global symbols or the visibility for symbols in a file.
- fvisibility-inlines-hidden
  Causes inline member functions (those defined in the class declaration) to be marked hidden.
- fzero-initialized-in-bss, Qzero-initialized-in-bss
  Determines whether the compiler places in the DATA section any variables explicitly initialized with zeros.
- GA
  Enables faster access to certain thread-local storage (TLS) variables.
- Gs
  Lets you control the threshold at which the stack checking routine is called or not called.
- GS
  Determines whether the compiler generates code that detects some buffer overruns.
- GT
  Enables fiber-safe thread-local storage of data.
- homeparams
  Tells the compiler to store parameters passed in registers to the stack.
- malign-double
  Determines whether double, long double, and long long types are naturally aligned. This option is equivalent to specifying option align.
- malign-mac68k
  Aligns structure fields on 2-byte boundaries (m68k compatible).
- malign-natural
  Aligns larger types on natural size-based boundaries (overrides ABI).
- malign-power
  Aligns based on ABI-specified alignment rules.
- mcmodel
  Tells the compiler to use a specific memory model to generate code and store data.
- mdynamic-no-pic
  Generates code that is not position-independent but has position-independent external references.
- mlong-double
  Lets you override the default configuration of the long double data type.
- no-bss-init, Qnobss-init
  Tells the compiler to place in the DATA section any uninitialized variables and explicitly zero-initialized variables. This is a deprecated option that may be removed in a future release.
- noBool
  Disables the bool keyword.
- Qlong-double
  Changes the default size of the long double data type.
- Qsfalign
  Specifies stack alignment for functions. This is a deprecated option that may be removed in a future release.