gcc manual reference

Upload: fanta

Post on 05-Apr-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 GCC Manual Reference

    1/764

    Using the GNU Compiler CollectionFor gcc version 4.7.0

    (GCC)

    Richard M. Stallman and the GCC Developer Community

  • 8/2/2019 GCC Manual Reference

    2/764

    Published by:

    GNU Press Website: www.gnupress.orga division o the General: [email protected] Sotware Foundation Orders: [email protected] Franklin Street, Fith Floor Tel 617-542-5942Boston, MA 02110-1301 USA Fax 617-542-2652

    Last printed October 2003 or GCC 3.3.1.Printed copies are available or $45 each.

    Copyright c 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Sotware Foundation, Inc.

    Permission is granted to copy, distribute and/or modiy this document under the terms othe GNU Free Documentation License, Version 1.3 or any later version published by theFree Sotware Foundation; with the Invariant Sections being Funding Free Sotware, theFront-Cover Texts being (a) (see below), and with the Back-Cover Texts being (b) (seebelow). A copy o the license is included in the section entitled GNU Free DocumentationLicense.

    (a) The FSFs Front-Cover Text is:

    A GNU Manual

    (b) The FSFs Back-Cover Text is:

    You have reedom to copy and modiy this GNU Manual, like GNU sotware. Copiespublished by the Free Sotware Foundation raise unds or GNU development.

  • 8/2/2019 GCC Manual Reference

    3/764

    i

    Short Contents

    Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1 Programming Languages Supported by GCC. . . . . . . . . . . . . . .

    32 Language Standards Supported by GCC . . . . . . . . . . . . . . . . . . 5

    3 GCC Command Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    4 C Implementation-defned behavior . . . . . . . . . . . . . . . . . . . . . 297

    5 C++ Implementation-defned behavior . . . . . . . . . . . . . . . . . . 305

    6 Extensions to the C Language Family . . . . . . . . . . . . . . . . . . . 307

    7 Extensions to the C++ Language . . . . . . . . . . . . . . . . . . . . . . 619

    8 GNU Objective-C eatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

    9 Binary Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647

    10 gcova Test Coverage Program. . . . . . . . . . . . . . . . . . . . . . .

    65111 Known Causes o Trouble with GCC. . . . . . . . . . . . . . . . . . . . 659

    12 Reporting Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675

    13 How To Get Help with GCC . . . . . . . . . . . . . . . . . . . . . . . . . . 677

    14 Contributing to GCC Development . . . . . . . . . . . . . . . . . . . . . 679

    Funding Free Sotware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681

    The GNU Project and GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . 683

    GNU General Public License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685

    GNU Free Documentation License . . . . . . . . . . . . . . . . . . . . . . . . . 697

    Contributors to GCC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    705Option Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

    Keyword Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

  • 8/2/2019 GCC Manual Reference

    4/764

  • 8/2/2019 GCC Manual Reference

    5/764

    iii

    Table o Contents

    Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1 Programming Languages Supported by GCC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 Language Standards Supported by GCC . . . . . 52.1 C language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 C++ language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Objective-C and Objective-C++ languages . . . . . . . . . . . . . . . . . . . . . 72.4 Go language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Reerences or other languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3 GCC Command Options . . . . . . . . . . . . . . . . . . . . . . . 93.1 Option Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2 Options Controlling the Kind o Output . . . . . . . . . . . . . . . . . . . . . . . 233.3 Compiling C++ Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.4 Options Controlling C Dialect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5 Options Controlling C++ Dialect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.6 Options Controlling Objective-C and Objective-C++ Dialects . . 453.7 Options to Control Diagnostic Messages Formatting . . . . . . . . . . . 483.8 Options to Request or Suppress Warnings . . . . . . . . . . . . . . . . . . . . . 493.9 Options or Debugging Your Program or GCC. . . . . . . . . . . . . . . . . 72

    3.10 Options That Control Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . 923.11 Options Controlling the Preprocessor. . . . . . . . . . . . . . . . . . . . . . . . 1423.12 Passing Options to the Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . 1533.13 Options or Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1543.14 Options or Directory Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1573.15 Speciying subprocesses and the switches to pass to them . . . . 1593.16 Speciying Target Machine and Compiler Version . . . . . . . . . . . . 1663.17 Hardware Models and Congurations . . . . . . . . . . . . . . . . . . . . . . . 167

    3.17.1 Adapteva Epiphany Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 1673.17.2 ARM Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1693.17.3 AVR Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

    3.17.3.1 EIND and Devices with more than 128 Ki Bytes o Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

    3.17.3.2 AVR Built-in Macros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1783.17.4 Blackn Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1793.17.5 C6X Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1823.17.6 CRIS Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1823.17.7 CR16 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1843.17.8 Darwin Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1843.17.9 DEC Alpha Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

  • 8/2/2019 GCC Manual Reference

    6/764

    iv Using the GNU Compiler Collection (GCC)

    3.17.10 DEC Alpha/VMS Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1933.17.11 FR30 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1933.17.12 FRV Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1933.17.13 GNU/Linux Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1973.17.14 H8/300 Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1973.17.15 HPPA Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.17.16 Intel 386 and AMD x86-64 Options . . . . . . . . . . . . . . . . . . . 2013.17.17 i386 and x86-64 Windows Options . . . . . . . . . . . . . . . . . . . . 2143.17.18 IA-64 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2153.17.19 IA-64/VMS Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.17.20 LM32 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.17.21 M32C Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2193.17.22 M32R/D Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2203.17.23 M680x0 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2213.17.24 MCore Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2263.17.25 MeP Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2273.17.26 MicroBlaze Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

    3.17.27 MIPS Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2303.17.28 MMIX Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2413.17.29 MN10300 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2423.17.30 PDP-11 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2433.17.31 picoChip Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2453.17.32 PowerPC Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2453.17.33 RL78 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2453.17.34 IBM RS/6000 and PowerPC Options . . . . . . . . . . . . . . . . . . 2463.17.35 RX Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2603.17.36 S/390 and zSeries Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2623.17.37 Score Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653.17.38 SH Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

    3.17.39 Solaris 2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2703.17.40 SPARC Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2713.17.41 SPU Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2753.17.42 Options or System V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2773.17.43 TILE-Gx Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2783.17.44 TILEPro Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2783.17.45 V850 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2783.17.46 VAX Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2793.17.47 VxWorks Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2803.17.48 x86-64 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2803.17.49 Xstormy16 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2803.17.50 Xtensa Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2803.17.51 zSeries Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

    3.18 Options or Code Generation Conventions . . . . . . . . . . . . . . . . . . . 2823.19 Environment Variables Afecting GCC . . . . . . . . . . . . . . . . . . . . . . 2903.20 Using Precompiled Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

  • 8/2/2019 GCC Manual Reference

    7/764

    v

    4 C Implementation-dened behavior . . . . . . . . 2974.1 Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2974.2 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2974.3 Identiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2974.4 Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

    4.5 Integers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    2984.6 Floating point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2994.7 Arrays and pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3004.8 Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3014.9 Structures, unions, enumerations, and bit-elds . . . . . . . . . . . . . . . 3014.10 Qualiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.11 Declarators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.12 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.13 Preprocessing directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.14 Library unctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3034.15 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3034.16 Locale-specic behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

    5 C++ Implementation-dened behavior . . . . 3055.1 Conditionally-supported behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3055.2 Exception handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

    6 Extensions to the C Language Family . . . . . . 3076.1 Statements and Declarations in Expressions . . . . . . . . . . . . . . . . . . 3076.2 Locally Declared Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3086.3 Labels as Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3096.4 Nested Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3106.5 Constructing Function Calls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

    6.6 Reerring to a Type with typeof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3146.7 Conditionals with Omitted Operands . . . . . . . . . . . . . . . . . . . . . . . . . 3156.8 128-bits integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3166.9 Double-Word Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3166.10 Complex Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3166.11 Additional Floating Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3176.12 Hal-Precision Floating Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3176.13 Decimal Floating Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3186.14 Hex Floats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3186.15 Fixed-Point Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3196.16 Named Address Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

    6.16.1 AVR Named Address Spaces. . . . . . . . . . . . . . . . . . . . . . . . . . .

    3206.16.2 M32C Named Address Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . 3226.16.3 RL78 Named Address Spaces. . . . . . . . . . . . . . . . . . . . . . . . . . . 3226.16.4 SPU Named Address Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

    6.17 Arrays o Length Zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3226.18 Structures With No Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3246.19 Arrays o Variable Length. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3246.20 Macros with a Variable Number o Arguments. . . . . . . . . . . . . . . 325

  • 8/2/2019 GCC Manual Reference

    8/764

    vi Using the GNU Compiler Collection (GCC)

    6.21 Slightly Looser Rules or Escaped Newlines . . . . . . . . . . . . . . . . . . 3256.22 Non-Lvalue Arrays May Have Subscripts . . . . . . . . . . . . . . . . . . . . 3266.23 Arithmetic on void- and Function-Pointers . . . . . . . . . . . . . . . . . . 3266.24 Non-Constant Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3266.25 Compound Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3266.26 Designated Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3276.27 Case Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3286.28 Cast to a Union Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3296.29 Mixed Declarations and Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3296.30 Declaring Attributes o Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 3296.31 Attribute Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3586.32 Prototypes and Old-Style Function Denitions . . . . . . . . . . . . . . 3616.33 C++ Style Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3626.34 Dollar Signs in Identier Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3626.35 The Character ESC in Constants. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3626.36 Speciying Attributes o Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

    6.36.1 AVR Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

    6.36.2 Blackn Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3686.36.3 M32R/D Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 3686.36.4 MeP Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3686.36.5 i386 Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3696.36.6 PowerPC Variable Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . 3716.36.7 SPU Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3716.36.8 Xstormy16 Variable Attributes . . . . . . . . . . . . . . . . . . . . . . . . . 371

    6.37 Speciying Attributes o Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3716.37.1 ARM Type Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3766.37.2 MeP Type Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3766.37.3 i386 Type Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3766.37.4 PowerPC Type Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376

    6.37.5 SPU Type Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3776.38 Inquiring on Alignment o Types or Variables . . . . . . . . . . . . . . . 3776.39 An Inline Function is As Fast As a Macro . . . . . . . . . . . . . . . . . . . 3776.40 When is a Volatile Object Accessed? . . . . . . . . . . . . . . . . . . . . . . . . 3796.41 Assembler Instructions with C Expression Operands . . . . . . . . . 380

    6.41.1 Size o an asm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3866.41.2 i386 oating point asm operands . . . . . . . . . . . . . . . . . . . . . . . 386

    6.42 Constraints or asm Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3876.42.1 Simple Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3876.42.2 Multiple Alternative Constraints . . . . . . . . . . . . . . . . . . . . . . . 3906.42.3 Constraint Modier Characters. . . . . . . . . . . . . . . . . . . . . . . . . 3906.42.4 Constraints or Particular Machines . . . . . . . . . . . . . . . . . . . . 391

    6.43 Controlling Names Used in Assembler Code . . . . . . . . . . . . . . . . . 4156.44 Variables in Specied Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

    6.44.1 Dening Global Register Variables . . . . . . . . . . . . . . . . . . . . . 4166.44.2 Speciying Registers or Local Variables . . . . . . . . . . . . . . . . 417

    6.45 Alternate Keywords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4186.46 Incomplete enum Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4186.47 Function Names as Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

  • 8/2/2019 GCC Manual Reference

    9/764

    vii

    6.48 Getting the Return or Frame Address o a Function . . . . . . . . . 4196.49 Using vector instructions through built-in unctions . . . . . . . . . 4206.50 Ofseto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4226.51 Legacy sync built-in unctions or atomic memory access. . . 4236.52 Built-in unctions or memory model aware atomic operations

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4256.53 Object Size Checking Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4296.54 Other built-in unctions provided by GCC. . . . . . . . . . . . . . . . . . . 4306.55 Built-in Functions Specic to Particular Target Machines . . . . 439

    6.55.1 Alpha Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4396.55.2 ARM iWMMXt Built-in Functions . . . . . . . . . . . . . . . . . . . . . 4406.55.3 ARM NEON Intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

    6.55.3.1 Addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4436.55.3.2 Multiplication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4476.55.3.3 Multiply-accumulate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4486.55.3.4 Multiply-subtract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4496.55.3.5 Subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

    6.55.3.6 Comparison (equal-to) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4546.55.3.7 Comparison (greater-than-or-equal-to) . . . . . . . . . . . . . 4556.55.3.8 Comparison (less-than-or-equal-to) . . . . . . . . . . . . . . . . 4556.55.3.9 Comparison (greater-than) . . . . . . . . . . . . . . . . . . . . . . . . 4566.55.3.10 Comparison (less-than). . . . . . . . . . . . . . . . . . . . . . . . . . . 4576.55.3.11 Comparison (absolute greater-than-or-equal-to) . . . 4576.55.3.12 Comparison (absolute less-than-or-equal-to) . . . . . . 4586.55.3.13 Comparison (absolute greater-than) . . . . . . . . . . . . . . 4586.55.3.14 Comparison (absolute less-than). . . . . . . . . . . . . . . . . . 4586.55.3.15 Test bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4586.55.3.16 Absolute diference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4596.55.3.17 Absolute diference and accumulate. . . . . . . . . . . . . . . 460

    6.55.3.18 Maximum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4616.55.3.19 Minimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4616.55.3.20 Pairwise add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4626.55.3.21 Pairwise add, single opcode widen and accumulate

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4636.55.3.22 Folding maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4646.55.3.23 Folding minimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4646.55.3.24 Reciprocal step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4646.55.3.25 Vector shit let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4656.55.3.26 Vector shit let by constant . . . . . . . . . . . . . . . . . . . . . . 4686.55.3.27 Vector shit right by constant . . . . . . . . . . . . . . . . . . . . 4706.55.3.28 Vector shit right by constant and accumulate . . . . 4736.55.3.29 Vector shit right and insert . . . . . . . . . . . . . . . . . . . . . . 4746.55.3.30 Vector shit let and insert . . . . . . . . . . . . . . . . . . . . . . . 4756.55.3.31 Absolute value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4766.55.3.32 Negation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4776.55.3.33 Bitwise not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4786.55.3.34 Count leading sign bits . . . . . . . . . . . . . . . . . . . . . . . . . . . 4796.55.3.35 Count leading zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

  • 8/2/2019 GCC Manual Reference

    10/764

    viii Using the GNU Compiler Collection (GCC)

    6.55.3.36 Count number o set bits . . . . . . . . . . . . . . . . . . . . . . . . . 4796.55.3.37 Reciprocal estimate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4806.55.3.38 Reciprocal square-root estimate . . . . . . . . . . . . . . . . . . 4806.55.3.39 Get lanes rom a vector . . . . . . . . . . . . . . . . . . . . . . . . . . 4806.55.3.40 Set lanes in a vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4816.55.3.41 Create vector rom literal bit pattern . . . . . . . . . . . . . 4826.55.3.42 Set all lanes to the same value. . . . . . . . . . . . . . . . . . . . 4836.55.3.43 Combining vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4866.55.3.44 Splitting vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4866.55.3.45 Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4876.55.3.46 Move, single opcode narrowing . . . . . . . . . . . . . . . . . . . 4876.55.3.47 Move, single opcode long. . . . . . . . . . . . . . . . . . . . . . . . . 4886.55.3.48 Table lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4896.55.3.49 Extended table lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . 4896.55.3.50 Multiply, lane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4906.55.3.51 Long multiply, lane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4906.55.3.52 Saturating doubling long multiply, lane . . . . . . . . . . . 490

    6.55.3.53 Saturating doubling multiply high, lane . . . . . . . . . . 4916.55.3.54 Multiply-accumulate, lane . . . . . . . . . . . . . . . . . . . . . . . . 4916.55.3.55 Multiply-subtract, lane . . . . . . . . . . . . . . . . . . . . . . . . . . . 4926.55.3.56 Vector multiply by scalar. . . . . . . . . . . . . . . . . . . . . . . . . 4936.55.3.57 Vector long multiply by scalar. . . . . . . . . . . . . . . . . . . . 4936.55.3.58 Vector saturating doubling long multiply by scalar

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4936.55.3.59 Vector saturating doubling multiply high by scalar

    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4946.55.3.60 Vector multiply-accumulate by scalar . . . . . . . . . . . . . 4946.55.3.61 Vector multiply-subtract by scalar . . . . . . . . . . . . . . . . 4956.55.3.62 Vector extract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496

    6.55.3.63 Reverse elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4976.55.3.64 Bit selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4986.55.3.65 Transpose elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5006.55.3.66 Zip elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5016.55.3.67 Unzip elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5026.55.3.68 Element/structure loads, VLD1 variants . . . . . . . . . . 5036.55.3.69 Element/structure stores, VST1 variants . . . . . . . . . 5066.55.3.70 Element/structure loads, VLD2 variants . . . . . . . . . . 5086.55.3.71 Element/structure stores, VST2 variants . . . . . . . . . 5106.55.3.72 Element/structure loads, VLD3 variants . . . . . . . . . . 5126.55.3.73 Element/structure stores, VST3 variants . . . . . . . . . 5146.55.3.74 Element/structure loads, VLD4 variants . . . . . . . . . . 5166.55.3.75 Element/structure stores, VST4 variants . . . . . . . . . 5186.55.3.76 Logical operations (AND) . . . . . . . . . . . . . . . . . . . . . . . . 5206.55.3.77 Logical operations (OR). . . . . . . . . . . . . . . . . . . . . . . . . . 5216.55.3.78 Logical operations (exclusive OR) . . . . . . . . . . . . . . . . 5216.55.3.79 Logical operations (AND-NOT) . . . . . . . . . . . . . . . . . . 5226.55.3.80 Logical operations (OR-NOT) . . . . . . . . . . . . . . . . . . . . 5236.55.3.81 Reinterpret casts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524

  • 8/2/2019 GCC Manual Reference

    11/764

    ix

    6.55.4 AVR Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5296.55.5 Blackn Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5306.55.6 FR-V Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531

    6.55.6.1 Argument Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5316.55.6.2 Directly-mapped Integer Functions . . . . . . . . . . . . . . . . 5316.55.6.3 Directly-mapped Media Functions . . . . . . . . . . . . . . . . . 5326.55.6.4 Raw read/write Functions . . . . . . . . . . . . . . . . . . . . . . . . . 5346.55.6.5 Other Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 534

    6.55.7 X86 Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5346.55.8 MIPS DSP Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 5546.55.9 MIPS Paired-Single Support . . . . . . . . . . . . . . . . . . . . . . . . . . . 5586.55.10 MIPS Loongson Built-in Functions . . . . . . . . . . . . . . . . . . . . 559

    6.55.10.1 Paired-Single Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . 5616.55.10.2 Paired-Single Built-in Functions . . . . . . . . . . . . . . . . . . 5616.55.10.3 MIPS-3D Built-in Functions . . . . . . . . . . . . . . . . . . . . . . 562

    6.55.11 picoChip Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 5656.55.12 Other MIPS Built-in Functions. . . . . . . . . . . . . . . . . . . . . . . . 565

    6.55.13 PowerPC AltiVec Built-in Functions. . . . . . . . . . . . . . . . . . . 5656.55.14 RX Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6006.55.15 SPARC VIS Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . 6026.55.16 SPU Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6046.55.17 TI C6X Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6056.55.18 TILE-Gx Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 6056.55.19 TILEPro Built-in Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

    6.56 Format Checks Specic to Particular Target Machines . . . . . . . 6066.56.1 Solaris Format Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6076.56.2 Darwin Format Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607

    6.57 Pragmas Accepted by GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6076.57.1 ARM Pragmas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607

    6.57.2 M32C Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6076.57.3 MeP Pragmas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6086.57.4 RS/6000 and PowerPC Pragmas . . . . . . . . . . . . . . . . . . . . . . . 6086.57.5 Darwin Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6096.57.6 Solaris Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6096.57.7 Symbol-Renaming Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6096.57.8 Structure-Packing Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6106.57.9 Weak Pragmas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6116.57.10 Diagnostic Pragmas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6116.57.11 Visibility Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6126.57.12 Push/Pop Macro Pragmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6126.57.13 Function Specic Option Pragmas . . . . . . . . . . . . . . . . . . . . . 613

    6.58 Unnamed struct/union elds within structs/unions . . . . . . . . . . 6146.59 Thread-Local Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615

    6.59.1 ISO/IEC 9899:1999 Edits or Thread-Local Storage. . . . . 6156.59.2 ISO/IEC 14882:1998 Edits or Thread-Local Storage. . . . 616

    6.60 Binary constants using the 0b prex . . . . . . . . . . . . . . . . . . . . . . . 617

  • 8/2/2019 GCC Manual Reference

    12/764

    x Using the GNU Compiler Collection (GCC)

    7 Extensions to the C++ Language . . . . . . . . . . 6197.1 When is a Volatile C++ Object Accessed? . . . . . . . . . . . . . . . . . . . 6197.2 Restricting Pointer Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6197.3 Vague Linkage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6207.4 #pragma interace and implementation. . . . . . . . . . . . . . . . . . . . . . . 621

    7.5 Wheres the Template?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    6227.6 Extracting the unction pointer rom a bound pointer to memberunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625

    7.7 C++-Specic Variable, Function, and Type Attributes . . . . . . . 6257.8 Namespace Association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6267.9 Type Traits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6267.10 Java Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6287.11 Deprecated Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6297.12 Backwards Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630

    8 GNU Objective-C eatures . . . . . . . . . . . . . . . . . . 6318.1 GNU Objective-C runtime API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631

    8.1.1 Modern GNU Objective-C runtime API . . . . . . . . . . . . . . . . . 6318.1.2 Traditional GNU Objective-C runtime API . . . . . . . . . . . . . . 632

    8.2 +load: Executing code beore main . . . . . . . . . . . . . . . . . . . . . . . . . . 6328.2.1 What you can and what you cannot do in +load . . . . . . . . . 633

    8.3 Type encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6348.3.1 Legacy type encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6368.3.2 @encode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6368.3.3 Method signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637

    8.4 Garbage Collection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6378.5 Constant string objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6388.6 compatibility alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639

    8.7 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6398.8 Synchronization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6418.9 Fast enumeration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641

    8.9.1 Using ast enumeration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6418.9.2 c99-like ast enumeration syntax . . . . . . . . . . . . . . . . . . . . . . . . . 6418.9.3 Fast enumeration details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6428.9.4 Fast enumeration protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643

    8.10 Messaging with the GNU Objective-C runtime . . . . . . . . . . . . . . 6448.10.1 Dynamically registering methods . . . . . . . . . . . . . . . . . . . . . . . 6448.10.2 Forwarding hook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644

    9 Binary Compatibility . . . . . . . . . . . . . . . . . . . . . . . . 647

    10 gcova Test Coverage Program . . . . . . . . . . . 65110.1 Introduction to gcov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65110.2 Invoking gcov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65110.3 Using gcov with GCC Optimization . . . . . . . . . . . . . . . . . . . . . . . . . 65710.4 Brie description ogcov data les . . . . . . . . . . . . . . . . . . . . . . . . . . 65810.5 Data le relocation to support cross-proling . . . . . . . . . . . . . . . . 658

  • 8/2/2019 GCC Manual Reference

    13/764

    xi

    11 Known Causes o Trouble with GCC . . . . . . 65911.1 Actual Bugs We Havent Fixed Yet . . . . . . . . . . . . . . . . . . . . . . . . . 65911.2 Cross-Compiler Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65911.3 Interoperation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65911.4 Incompatibilities o GCC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661

    11.5 Fixed Header Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    66411.6 Standard Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66411.7 Disappointments and Misunderstandings . . . . . . . . . . . . . . . . . . . . 66511.8 Common Misunderstandings with GNU C++ . . . . . . . . . . . . . . . 666

    11.8.1 Declare and Dene Static Members . . . . . . . . . . . . . . . . . . . . 66611.8.2 Name lookup, templates, and accessing members o base

    classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66711.8.3 Temporaries May Vanish Beore You Expect. . . . . . . . . . . . 66811.8.4 Implicit Copy-Assignment or Virtual Bases . . . . . . . . . . . . 669

    11.9 Certain Changes We Dont Want to Make . . . . . . . . . . . . . . . . . . . 67011.10 Warning Messages and Error Messages . . . . . . . . . . . . . . . . . . . . . 673

    12 Reporting Bugs. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    67512.1 Have You Found a Bug? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67512.2 How and where to Report Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675

    13 How To Get Help with GCC . . . . . . . . . . . . . . 677

    14 Contributing to GCC Development . . . . . . . 679

    Funding Free Sotware . . . . . . . . . . . . . . . . . . . . . . . . . . . 681

    The GNU Project and GNU/Linux. . . . . . . . . . . .

    683

    GNU General Public License . . . . . . . . . . . . . . . . . . . 685

    GNU Free Documentation License . . . . . . . . . . . . . 697ADDENDUM: How to use this License or your documents . . . . . . . . 704

    Contributors to GCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705

    Option Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    721

    Keyword Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

  • 8/2/2019 GCC Manual Reference

    14/764

  • 8/2/2019 GCC Manual Reference

    15/764

    Introduction 1

    Introduction

    This manual documents how to use the GNU compilers, as well as their eatures and incom-patibilities, and how to report bugs. It corresponds to the compilers (GCC) version 4.7.0.The internals o the GNU compilers, including how to port them to new targets and someinormation about how to write ront ends or new languages, are documented in a separatemanual. See Section Introduction in GNU Compiler Collection (GCC) Internals.

    http://gccint.pdf/http://gccint.pdf/http://gccint.pdf/
  • 8/2/2019 GCC Manual Reference

    16/764

  • 8/2/2019 GCC Manual Reference

    17/764

    Chapter 1: Programming Languages Supported by GCC 3

    1 Programming Languages Supported by GCC

    GCC stands or GNU Compiler Collection. GCC is an integrated distribution o compil-ers or several major programming languages. These languages currently include C, C++,Objective-C, Objective-C++, Java, Fortran, Ada, and Go.

    The abbreviation GCC has multiple meanings in common use. The current ocial mean-ing is GNU Compiler Collection, which reers generically to the complete suite o tools.The name historically stood or GNU C Compiler, and this usage is still common whenthe emphasis is on compiling C programs. Finally, the name is also used when speakingo the language-independent component o GCC: code shared among the compilers or allsupported languages.

    The language-independent component o GCC includes the majority o the optimizers,as well as the back ends that generate machine code or various processors.

    The part o a compiler that is specic to a particular language is called the ront end.In addition to the ront ends that are integrated components o GCC, there are severalother ront ends that are maintained separately. These support languages such as Pascal,Mercury, and COBOL. To use these, they must be built together with GCC proper.

    Most o the compilers or languages other than C have their own names. The C ++ compileris G++, the Ada compiler is GNAT, and so on. When we talk about compiling one o thoselanguages, we might reer to that compiler by its own name, or as GCC. Either is correct.

    Historically, compilers or many languages, including C++ and Fortran, have been im-plemented as preprocessors which emit another high level language such as C. None othe compilers included in GCC are implemented this way; they all generate machine codedirectly. This sort o preprocessor should not be conused with the C preprocessor, whichis an integral eature o the C, C++, Objective-C and Objective-C++ languages.

  • 8/2/2019 GCC Manual Reference

    18/764

  • 8/2/2019 GCC Manual Reference

    19/764

    Chapter 2: Language Standards Supported by GCC 5

    2 Language Standards Supported by GCC

    For each language compiled by GCC or which there is a standard, GCC attempts to ollowone or more versions o that standard, possibly with some exceptions, and possibly withsome extensions.

    2.1 C language

    GCC supports three versions o the C standard, although support or the most recent versionis not yet complete.

    The original ANSI C standard (X3.159-1989) was ratied in 1989 and published in 1990.This standard was ratied as an ISO standard (ISO/IEC 9899:1990) later in 1990. Therewere no technical diferences between these publications, although the sections o the ANSIstandard were renumbered and became clauses in the ISO standard. This standard, inboth its orms, is commonly known as C89, or occasionally as C90, rom the dates oratication. The ANSI standard, but not the ISO standard, also came with a Rationaledocument. To select this standard in GCC, use one o the options -ansi, -std=c90 or-std=iso9899:1990; to obtain all the diagnostics required by the standard, you shouldalso speciy -pedantic (or -pedantic-errors i you want them to be errors rather thanwarnings). See Section 3.4 [Options Controlling C Dialect], page 29.

    Errors in the 1990 ISO C standard were corrected in two Technical Corrigenda publishedin 1994 and 1996. GCC does not support the uncorrected version.

    An amendment to the 1990 standard was published in 1995. This amendment addeddigraphs and __STDC_VERSION__ to the language, but otherwise concerned the library. Thisamendment is commonly known as AMD1; the amended standard is sometimes known asC94 or C95. To select this standard in GCC, use the option -std=iso9899:199409 (with,as or other standard versions, -pedantic to receive all required diagnostics).

    A new edition o the ISO C standard was published in 1999 as ISO/IEC 9899:1999, andis commonly known as C99. GCC has incomplete support or this standard version; seehttp://gcc.gnu.org/gcc-4.7/c99status.html or details. To select this standard, use-std=c99 or -std=iso9899:1999. (While in development, drats o this standard versionwere reerred to as C9X.)

    Errors in the 1999 ISO C standard were corrected in three Technical Corrigenda publishedin 2001, 2004 and 2007. GCC does not support the uncorrected version.

    A ourth version o the C standard, known as C11, was published in 2011 as ISO/IEC9899:2011. GCC has limited incomplete support or parts o this standard, enabled with-std=c11 or -std=iso9899:2011. (While in development, drats o this standard versionwere reerred to as C1X.)

    By deault, GCC provides some extensions to the C language that on rare occasions con-ict with the C standard. See Chapter 6 [Extensions to the C Language Family], page 307.Use o the -std options listed above will disable these extensions where they conict withthe C standard version selected. You may also select an extended version o the C lan-guage explicitly with -std=gnu90 (or C90 with GNU extensions), -std=gnu99 (or C99with GNU extensions) or -std=gnu11 (or C11 with GNU extensions). The deault, ino C language dialect options are given, is -std=gnu90; this will change to -std=gnu99or -std=gnu11 in some uture release when the C99 or C11 support is complete. Some

    http://gcc.gnu.org/gcc-4.7/c99status.htmlhttp://gcc.gnu.org/gcc-4.7/c99status.html
  • 8/2/2019 GCC Manual Reference

    20/764

    6 Using the GNU Compiler Collection (GCC)

    eatures that are part o the C99 standard are accepted as extensions in C90 mode, andsome eatures that are part o the C11 standard are accepted as extensions in C90 and C99modes.

    The ISO C standard denes (in clause 4) two classes o conorming implementation. Aconorming hosted implementation supports the whole standard including all the library a-cilities; a conorming reestanding implementation is only required to provide certain libraryacilities: those in , , , and ; since AMD1,also those in ; since C99, also those in and ; and sinceC11, also those in and . In addition, complex types, addedin C99, are not required or reestanding implementations. The standard also denes twoenvironments or programs, a reestanding environment, required o all implementations andwhich may not have library acilities beyond those required o reestanding implementations,where the handling o program startup and termination are implementation-dened, and ahosted environment, which is not required, in which all the library acilities are providedand startup is through a unction int main (void) or int main (int, char *[]). An OS

    kernel would be a reestanding environment; a program using the acilities o an operatingsystem would normally be in a hosted implementation.

    GCC aims towards being usable as a conorming reestanding implementation, or as thecompiler or a conorming hosted implementation. By deault, it will act as the compiler or ahosted implementation, dening __STDC_HOSTED__ as 1 and presuming that when the nameso ISO C unctions are used, they have the semantics dened in the standard. To make it actas a conorming reestanding implementation or a reestanding environment, use the option-ffreestanding; it will then dene __STDC_HOSTED__ to 0 and not make assumptionsabout the meanings o unction names rom the standard library, with exceptions notedbelow. To build an OS kernel, you may well still need to make your own arrangements orlinking and startup. See Section 3.4 [Options Controlling C Dialect], page 29.

    GCC does not provide the library acilities required only o hosted implementations, noryet all the acilities required by C99 o reestanding implementations; to use the acilitieso a hosted environment, you will need to nd them elsewhere (or example, in the GNU Clibrary). See Section 11.6 [Standard Libraries], page 664.

    Most o the compiler support routines used by GCC are present in libgcc, but thereare a ew exceptions. GCC requires the reestanding environment provide memcpy, memmove,

    memset and memcmp. Finally, i__builtin_trap is used, and the target does not implementthe trap pattern, then GCC will emit a call to abort.

    For reerences to Technical Corrigenda, Rationale documents and inormation concerningthe history o C that is available online, see http://gcc.gnu.org/readings.html

    2.2 C++ languageGCC supports the original ISO C++ standard (1998) and contains experimental support orthe second ISO C++ standard (2011).

    The original ISO C++ standard was published as the ISO standard (ISO/IEC 14882:1998)and amended by a Technical Corrigenda published in 2003 (ISO/IEC 14882:2003). Thesestandards are reerred to as C++98 and C++03, respectively. GCC implements the majorityo C++98 (export is a notable exception) and most o the changes in C++03. To selectthis standard in GCC, use one o the options -ansi, -std=c++98, or -std=c++03; to

    http://gcc.gnu.org/readings.htmlhttp://gcc.gnu.org/readings.html
  • 8/2/2019 GCC Manual Reference

    21/764

    Chapter 2: Language Standards Supported by GCC 7

    obtain all the diagnostics required by the standard, you should also speciy -pedantic (or-pedantic-errors i you want them to be errors rather than warnings).

    A revised ISO C++ standard was published in 2011 as ISO/IEC 14882:2011, and is re-

    erred to as C++11; beore its publication it was commonly reerred to as C++0x. C++11contains several changes to the C++ language, most o which have been implemented in anexperimental C++11 mode in GCC. For inormation regarding the C++11 eatures avail-able in the experimental C++11 mode, see http://gcc.gnu.org/projects/cxx0x.html .To select this standard in GCC, use the option -std=c++11; to obtain all the diagnosticsrequired by the standard, you should also speciy -pedantic (or -pedantic-errors iyou want them to be errors rather than warnings).

    More inormation about the C++ standards is available on the ISO C++ committees website at http://www.open-std.org/jtc1/sc22/wg21/ .

    By deault, GCC provides some extensions to the C++ language; See Section 3.5 [C++Dialect Options], page 35. Use o the -std option listed above will disable these extensions.

    You may also select an extended version o the C++ language explicitly with -std=gnu++98(or C++98 with GNU extensions) or -std=gnu++11 (or C++11 with GNU extensions). Thedeault, i no C++ language dialect options are given, is -std=gnu++98.

    2.3 Objective-C and Objective-C++ languages

    GCC supports traditional Objective-C (also known as Objective-C 1.0) and containssupport or the Objective-C exception and synchronization syntax. It has also support ora number o Objective-C 2.0 language extensions, including properties, ast enumeration(only or Objective-C), method attributes and the @optional and @required keywords inprotocols. GCC supports Objective-C++ and eatures available in Objective-C are alsoavailable in Objective-C++.

    GCC by deault uses the GNU Objective-C runtime library, which is part o GCC andis not the same as the Apple/NeXT Objective-C runtime library used on Apple systems.There are a number o diferences documented in this manual. The options -fgnu-runtimeand -fnext-runtime allow you to switch between producing output that works with theGNU Objective-C runtime library and output that works with the Apple/NeXT Objective-C runtime library.

    There is no ormal written standard or Objective-C or Objective-C++. The authori-tative manual on traditional Objective-C (1.0) is Object-Oriented Programming and theObjective-C Language, available at a number o web sites:

    http://www.gnustep.org/resources/documentation/ObjectivCBook.pdf is theoriginal NeXTstep document;

    http://objc.toodarkpark.net is the same document in another ormat;

    http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/

    ObjectiveC/ has an updated version but make sure you search or Object OrientedProgramming and the Objective-C Programming Language 1.0, not documentationon the newer Objective-C 2.0 language

    The Objective-C exception and synchronization syntax (that is, the keywords @try,@throw, @catch, @nally and @synchronized) is supported by GCC and is enabled with the

    http://gcc.gnu.org/projects/cxx0x.htmlhttp://www.open-std.org/jtc1/sc22/wg21/http://www.gnustep.org/resources/documentation/ObjectivCBook.pdfhttp://objc.toodarkpark.net/http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/http://objc.toodarkpark.net/http://www.gnustep.org/resources/documentation/ObjectivCBook.pdfhttp://www.open-std.org/jtc1/sc22/wg21/http://gcc.gnu.org/projects/cxx0x.html
  • 8/2/2019 GCC Manual Reference

    22/764

    8 Using the GNU Compiler Collection (GCC)

    option -fobjc-exceptions. The syntax is briey documented in this manual and in theObjective-C 2.0 manuals rom Apple.

    The Objective-C 2.0 language extensions and eatures are automatically enabled; they

    include properties (via the@

    property,@

    synthesize and@

    dynamic keywords), ast enumera-tion (not available in Objective-C++), attributes or methods (such as deprecated, noreturn,sentinel, ormat), the unused attribute or method arguments, the @package keyword or in-stance variables and the @optional and @required keywords in protocols. You can disableall these Objective-C 2.0 language extensions with the option -fobjc-std=objc1, whichcauses the compiler to recognize the same Objective-C language syntax recognized by GCC4.0, and to produce an error i one o the new eatures is used.

    GCC has currently no support or non-ragile instance variables.

    The authoritative manual on Objective-C 2.0 is available rom Apple:

    http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/

    ObjectiveC/

    For more inormation concerning the history o Objective-C that is available online, seehttp://gcc.gnu.org/readings.html

    2.4 Go language

    The Go language continues to evolve as o this writing; see the current language speci-cations. At present there are no specic versions o Go, and there is no way to describethe language supported by GCC in terms o a specic version. In general GCC tracks theevolving specication closely, and any given release will support the language as o the datethat the release was rozen.

    2.5 Reerences or other languages

    See Section About This Guide in GNAT Reerence Manual, or inormation on standardconormance and compatibility o the Ada compiler.

    See Section Standards in The GNU Fortran Compiler, or details o standards sup-ported by GNU Fortran.

    See Section Compatibility with the Java Platorm in GNU gcj, or details o compati-bility between gcj and the Java Platorm.

    http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/http://gcc.gnu.org/readings.htmlhttp://golang.org/doc/go_spec.htmlhttp://golang.org/doc/go_spec.htmlhttp://gnat_rm.pdf/http://gnat_rm.pdf/http://gfortran.pdf/http://gfortran.pdf/http://gcj.pdf/http://gcj.pdf/http://gcj.pdf/http://gfortran.pdf/http://gnat_rm.pdf/http://golang.org/doc/go_spec.htmlhttp://golang.org/doc/go_spec.htmlhttp://gcc.gnu.org/readings.htmlhttp://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/
  • 8/2/2019 GCC Manual Reference

    23/764

    Chapter 3: GCC Command Options 9

    3 GCC Command Options

    When you invoke GCC, it normally does preprocessing, compilation, assembly and linking.The overall options allow you to stop this process at an intermediate stage. For example,the -c option says not to run the linker. Then the output consists o object les outputby the assembler.

    Other options are passed on to one stage o processing. Some options control the prepro-cessor and others the compiler itsel. Yet other options control the assembler and linker;most o these are not documented here, since you rarely need to use any o them.

    Most o the command-line options that you can use with GCC are useul or C programs;when an option is only useul with another language (usually C++), the explanation saysso explicitly. I the description or a particular option does not mention a source language,you can use that option with all supported languages.

    See Section 3.3 [Compiling C++ Programs], page 29, or a summary o special options or

    compiling C++ programs.The gcc program accepts options and le names as operands. Many options have multi-

    letter names; thereore multiple single-letter options may not be grouped: -dv is verydiferent rom -d -v.

    You can mix options and other arguments. For the most part, the order you use doesntmatter. Order does matter when you use several options o the same kind; or example, iyou speciy -L more than once, the directories are searched in the order specied. Also,the placement o the -l option is signicant.

    Many options have long names starting with -f or with -Wor example,-fmove-loop-invariants, -Wformat and so on. Most o these have both positive andnegative orms; the negative orm o -ffoo would be -fno-foo. This manual documents

    only one o these two orms, whichever one is not the deault.See [Option Index], page 721, or an index to GCCs options.

    3.1 Option Summary

    Here is a summary o all the options, grouped by type. Explanations are in the ollowingsections.

    Overall OptionsSee Section 3.2 [Options Controlling the Kind o Output], page 23.

    -c -S -E -o file -no-canonical-prefixes-pipe -pass-exit-codes-x language -v -### --help[=class [,...]] --target-help

    --version -wrapper @file -fplugin=file -fplugin-arg-name =arg-fdump-ada-spec[-slim] -fdump-go-spec=file

    C Language OptionsSee Section 3.4 [Options Controlling C Dialect], page 29.

    -ansi -std=standard -fgnu89-inline-aux-info filename -fallow-parameterless-variadic-functions-fno-asm -fno-builtin -fno-builtin-function

    -fhosted -ffreestanding -fopenmp -fms-extensions -fplan9-extensions-trigraphs -no-integrated-cpp -traditional -traditional-cpp

  • 8/2/2019 GCC Manual Reference

    24/764

    10 Using the GNU Compiler Collection (GCC)

    -fallow-single-precision -fcond-mismatch -flax-vector-conversions-fsigned-bitfields -fsigned-char-funsigned-bitfields -funsigned-char

    C++ Language Options

    See Section 3.5 [Options Controlling C++ Dialect], page 35.-fabi-version=n -fno-access-control -fcheck-new-fconserve-space -fconstexpr-depth=n -ffriend-injection-fno-elide-constructors-fno-enforce-eh-specs-ffor-scope -fno-for-scope -fno-gnu-keywords-fno-implicit-templates

    -fno-implicit-inline-templates-fno-implement-inlines -fms-extensions-fno-nonansi-builtins -fnothrow-opt -fno-operator-names-fno-optional-diags -fpermissive-fno-pretty-templates-frepo -fno-rtti -fstats -ftemplate-depth=n

    -fno-threadsafe-statics -fuse-cxa-atexit -fno-weak -nostdinc++

    -fno-default-inline -fvisibility-inlines-hidden-fvisibility-ms-compat-Wabi -Wconversion-null -Wctor-dtor-privacy-Wdelete-non-virtual-dtor -Wnarrowing -Wnoexcept-Wnon-virtual-dtor -Wreorder

    -Weffc++ -Wstrict-null-sentinel-Wno-non-template-friend -Wold-style-cast-Woverloaded-virtual -Wno-pmf-conversions-Wsign-promo

    Objective-C and Objective-C++ Language OptionsSee Section 3.6 [Options Controlling Objective-C and Objective-C++ Dialects],page 45.

    -fconstant-string-class=class-name

    -fgnu-runtime -fnext-runtime-fno-nil-receivers-fobjc-abi-version=n

    -fobjc-call-cxx-cdtors-fobjc-direct-dispatch-fobjc-exceptions-fobjc-gc-fobjc-nilcheck-fobjc-std=objc1-freplace-objc-classes-fzero-link

    -gen-decls-Wassign-intercept-Wno-protocol -Wselector-Wstrict-selector-match

    -Wundeclared-selector

    Language Independent OptionsSee Section 3.7 [Options to Control Diagnostic Messages Formatting], page 48.

    -fmessage-length=n

    -fdiagnostics-show-location=[once|every-line]-fno-diagnostics-show-option

    Warning OptionsSee Section 3.8 [Options to Request or Suppress Warnings], page 49.

  • 8/2/2019 GCC Manual Reference

    25/764

    Chapter 3: GCC Command Options 11

    -fsyntax-only -fmax-errors=n -pedantic-pedantic-errors-w -Wextra -Wall -Waddress -Waggregate-return -Warray-bounds-Wno-attributes -Wno-builtin-macro-redefined-Wc++-compat -Wc++11-compat -Wcast-align -Wcast-qual-Wchar-subscripts -Wclobbered -Wcomment

    -Wconversion -Wcoverage-mismatch -Wno-cpp -Wno-deprecated-Wno-deprecated-declarations -Wdisabled-optimization-Wno-div-by-zero -Wdouble-promotion -Wempty-body -Wenum-compare-Wno-endif-labels -Werror -Werror=*-Wfatal-errors -Wfloat-equal -Wformat -Wformat=2-Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral-Wformat-security -Wformat-y2k-Wframe-larger-than=len -Wno-free-nonheap-object -Wjump-misses-init-Wignored-qualifiers-Wimplicit -Wimplicit-function-declaration -Wimplicit-int-Winit-self -Winline -Wmaybe-uninitialized

    -Wno-int-to-pointer-cast -Wno-invalid-offsetof-Winvalid-pch -Wlarger-than=len -Wunsafe-loop-optimizations

    -Wlogical-op -Wlong-long-Wmain -Wmaybe-uninitialized -Wmissing-braces -Wmissing-field-initializers-Wmissing-format-attribute -Wmissing-include-dirs-Wno-mudflap-Wno-multichar -Wnonnull -Wno-overflow-Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format-Wpointer-arith -Wno-pointer-to-int-cast-Wredundant-decls

    -Wreturn-type -Wsequence-point -Wshadow-Wsign-compare -Wsign-conversion -Wstack-protector-Wstack-usage=len -Wstrict-aliasing -Wstrict-aliasing=n-Wstrict-overflow -Wstrict-overflow=n

    -Wsuggest-attribute=[pure|const|noreturn]-Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand

    -Wsystem-headers -Wtrampolines -Wtrigraphs -Wtype-limits -Wundef-Wuninitialized -Wunknown-pragmas -Wno-pragmas-Wunsuffixed-float-constants -Wunused -Wunused-function-Wunused-label -Wunused-local-typedefs -Wunused-parameter-Wno-unused-result -Wunused-value-Wunused-variable

    -Wunused-but-set-parameter -Wunused-but-set-variable-Wvariadic-macros -Wvector-operation-performance -Wvla -Wvolatile-register-

    var -Wwrite-strings -Wzero-as-null-pointer-constant

    C and Objective-C-only Warning Options-Wbad-function-cast -Wmissing-declarations-Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs

    -Wold-style-declaration -Wold-style-definition-Wstrict-prototypes -Wtraditional -Wtraditional-conversion

    -Wdeclaration-after-statement -Wpointer-sign

    Debugging OptionsSee Section 3.9 [Options or Debugging Your Program or GCC], page 72.

    -dletters -dumpspecs -dumpmachine -dumpversion-fdbg-cnt-list -fdbg-cnt=counter-value-list

    -fdisable-ipa-pass_name

    -fdisable-rtl-pass_name

    -fdisable-rtl-pass-name=range-list

    -fdisable-tree-pass_name

  • 8/2/2019 GCC Manual Reference

    26/764

    12 Using the GNU Compiler Collection (GCC)

    -fdisable-tree-pass-name=range-list-fdump-noaddr -fdump-unnumbered -fdump-unnumbered-links-fdump-translation-unit[-n ]-fdump-class-hierarchy[-n ]-fdump-ipa-all -fdump-ipa-cgraph -fdump-ipa-inline-fdump-passes

    -fdump-statistics-fdump-tree-all-fdump-tree-original[-n ]-fdump-tree-optimized[-n ]-fdump-tree-cfg -fdump-tree-vcg -fdump-tree-alias-fdump-tree-ch-fdump-tree-ssa[-n ] -fdump-tree-pre[-n ]-fdump-tree-ccp[-n ] -fdump-tree-dce[-n ]-fdump-tree-gimple[-raw] -fdump-tree-mudflap[-n ]-fdump-tree-dom[-n ]-fdump-tree-dse[-n ]-fdump-tree-phiprop[-n ]-fdump-tree-phiopt[-n ]

    -fdump-tree-forwprop[-n ]-fdump-tree-copyrename[-n ]-fdump-tree-nrv -fdump-tree-vect-fdump-tree-sink-fdump-tree-sra[-n ]-fdump-tree-forwprop[-n ]-fdump-tree-fre[-n ]-fdump-tree-vrp[-n ]-ftree-vectorizer-verbose=n

    -fdump-tree-storeccp[-n ]-fdump-final-insns=file

    -fcompare-debug[=opts ] -fcompare-debug-second-feliminate-dwarf2-dups -feliminate-unused-debug-types-feliminate-unused-debug-symbols -femit-class-debug-always-fenable-kind-pass

    -fenable-kind-pass =range-list-fdebug-types-section-fmem-report -fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arcs-frandom-seed=string -fsched-verbose=n-fsel-sched-verbose -fsel-sched-dump-cfg -fsel-sched-pipelining-verbose-fstack-usage -ftest-coverage -ftime-report -fvar-tracking

    -fvar-tracking-assignments -fvar-tracking-assignments-toggle-g -glevel -gtoggle -gcoff -gdwarf-version

    -ggdb -grecord-gcc-switches -gno-record-gcc-switches-gstabs -gstabs+ -gstrict-dwarf -gno-strict-dwarf-gvms -gxcoff -gxcoff+-fno-merge-debug-strings -fno-dwarf2-cfi-asm-fdebug-prefix-map=old =new-femit-struct-debug-baseonly -femit-struct-debug-reduced

    -femit-struct-debug-detailed[=spec-list]-p -pg -print-file-name=library -print-libgcc-file-name-print-multi-directory -print-multi-lib -print-multi-os-directory

    -print-prog-name=program -print-search-dirs -Q-print-sysroot -print-sysroot-headers-suffix-save-temps -save-temps=cwd -save-temps=obj -time[=file ]

    Optimization OptionsSee Section 3.10 [Options that Control Optimization], page 92.

  • 8/2/2019 GCC Manual Reference

    27/764

    Chapter 3: GCC Command Options 13

    -falign-functions[=n ] -falign-jumps[=n ]-falign-labels[=n ] -falign-loops[=n ] -fassociative-math-fauto-inc-dec -fbranch-probabilities -fbranch-target-load-optimize-fbranch-target-load-optimize2 -fbtr-bb-exclusive -fcaller-saves-fcheck-data-deps -fcombine-stack-adjustments -fconserve-stack-fcompare-elim -fcprop-registers -fcrossjumping

    -fcse-follow-jumps -fcse-skip-blocks -fcx-fortran-rules-fcx-limited-range-fdata-sections -fdce -fdelayed-branch-fdelete-null-pointer-checks -fdevirtualize -fdse-fearly-inlining -fipa-sra -fexpensive-optimizations -ffat-lto-objects-ffast-math -ffinite-math-only -ffloat-store -fexcess-precision=style-fforward-propagate -ffp-contract=style -ffunction-sections-fgcse -fgcse-after-reload -fgcse-las -fgcse-lm -fgraphite-identity-fgcse-sm -fif-conversion -fif-conversion2 -findirect-inlining-finline-functions -finline-functions-called-once -finline-limit=n-finline-small-functions -fipa-cp -fipa-cp-clone -fipa-matrix-reorg

    -fipa-pta -fipa-profile -fipa-pure-const -fipa-reference-fira-algorithm=algorithm

    -fira-region=region-fira-loop-pressure -fno-ira-share-save-slots-fno-ira-share-spill-slots -fira-verbose=n

    -fivopts -fkeep-inline-functions -fkeep-static-consts-floop-block -floop-flatten -floop-interchange -floop-strip-mine-floop-parallelize-all -flto -flto-compression-level-flto-partition=alg -flto-report -fmerge-all-constants-fmerge-constants -fmodulo-sched -fmodulo-sched-allow-regmoves-fmove-loop-invariants fmudflap -fmudflapir -fmudflapth -fno-branch-count-

    reg-fno-default-inline-fno-defer-pop -fno-function-cse -fno-guess-branch-probability-fno-inline -fno-math-errno -fno-peephole -fno-peephole2-fno-sched-interblock -fno-sched-spec -fno-signed-zeros-fno-toplevel-reorder -fno-trapping-math -fno-zero-initialized-in-bss

    -fomit-frame-pointer -foptimize-register-move -foptimize-sibling-calls-fpartial-inlining -fpeel-loops -fpredictive-commoning-fprefetch-loop-arrays-fprofile-correction -fprofile-dir=path -fprofile-generate-fprofile-generate=path-fprofile-use -fprofile-use=path -fprofile-values

    -freciprocal-math -free -fregmove -frename-registers -freorder-blocks-freorder-blocks-and-partition -freorder-functions-frerun-cse-after-loop -freschedule-modulo-scheduled-loops-frounding-math -fsched2-use-superblocks -fsched-pressure-fsched-spec-load -fsched-spec-load-dangerous-fsched-stalled-insns-dep[=n ] -fsched-stalled-insns[=n ]-fsched-group-heuristic -fsched-critical-path-heuristic-fsched-spec-insn-heuristic -fsched-rank-heuristic

    -fsched-last-insn-heuristic -fsched-dep-count-heuristic-fschedule-insns -fschedule-insns2 -fsection-anchors-fselective-scheduling -fselective-scheduling2

    -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops-fshrink-wrap -fsignaling-nans -fsingle-precision-constant-fsplit-ivs-in-unroller -fsplit-wide-types -fstack-protector-fstack-protector-all -fstrict-aliasing -fstrict-overflow-fthread-jumps -ftracer -ftree-bit-ccp-ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copy-prop-ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse

  • 8/2/2019 GCC Manual Reference

    28/764

    14 Using the GNU Compiler Collection (GCC)

    -ftree-forwprop -ftree-fre -ftree-loop-if-convert-ftree-loop-if-convert-stores -ftree-loop-im-ftree-phiprop -ftree-loop-distribution -ftree-loop-distribute-patterns-ftree-loop-ivcanon -ftree-loop-linear -ftree-loop-optimize-ftree-parallelize-loops=n -ftree-pre -ftree-pta -ftree-reassoc-ftree-sink -ftree-sra -ftree-switch-conversion -ftree-tail-merge

    -ftree-ter -ftree-vect-loop-version -ftree-vectorize -ftree-vrp-funit-at-a-time -funroll-all-loops -funroll-loops-funsafe-loop-optimizations -funsafe-math-optimizations -funswitch-loops-fvariable-expansion-in-unroller -fvect-cost-model -fvpt -fweb-fwhole-program -fwpa -fuse-linker-plugin--param name =value -O -O0 -O1 -O2 -O3 -Os -Ofast

    Preprocessor OptionsSee Section 3.11 [Options Controlling the Preprocessor], page 142.

    -Aquestion=answer

    -A-question[=answer]-C -dD -dI -dM -dN-Dmacro [=defn ] -E -H

    -idirafter dir-include file -imacros file-iprefix file -iwithprefix dir-iwithprefixbefore dir -isystem dir-imultilib dir -isysroot dir

    -M -MM -MF -MG -MP -MQ -MT -nostdinc-P -fdebug-cpp -ftrack-macro-expansion -fworking-directory-remap -trigraphs -undef -Umacro

    -Wp,option -Xpreprocessor option

    Assembler OptionSee Section 3.12 [Passing Options to the Assembler], page 153.

    -Wa,option -Xassembler option

    Linker OptionsSee Section 3.13 [Options or Linking], page 154.object-file-name -llibrary-nostartfiles -nodefaultlibs -nostdlib -pie -rdynamic-s -static -static-libgcc -static-libstdc++ -shared

    -shared-libgcc -symbolic-T script -Wl,option -Xlinker option

    -u symbol

    Directory OptionsSee Section 3.14 [Options or Directory Search], page 157.

    -Bprefix -Idir -iplugindir=dir

    -iquotedir -Ldir -specs=file -I---sysroot=dir

    Machine Dependent OptionsSee Section 3.17 [Hardware Models and Congurations], page 167.

    Adapteva Epiphany Options-mhalf-reg-file -mprefer-short-insn-regs-mbranch-cost=num -mcmove -mnops=num -msoft-cmpsf-msplit-lohi -mpost-inc -mpost-modify -mstack-offset=num

    -mround-nearest -mlong-calls -mshort-calls -msmall16-mfp-mode=mode -mvect-double -max-vect-align=num

    -msplit-vecmove-early -m1reg-reg

  • 8/2/2019 GCC Manual Reference

    29/764

    Chapter 3: GCC Command Options 15

    ARM Options

    -mapcs-frame -mno-apcs-frame-mabi=name-mapcs-stack-check -mno-apcs-stack-check

    -mapcs-float -mno-apcs-float-mapcs-reentrant -mno-apcs-reentrant-msched-prolog -mno-sched-prolog-mlittle-endian -mbig-endian -mwords-little-endian

    -mfloat-abi=name -mfpe-mfp16-format=name -mthumb-interwork -mno-thumb-interwork-mcpu=name -march=name -mfpu=name

    -mstructure-size-boundary=n

    -mabort-on-noreturn-mlong-calls -mno-long-calls-msingle-pic-base -mno-single-pic-base-mpic-register=reg-mnop-fun-dllimport-mcirrus-fix-invalid-insns -mno-cirrus-fix-invalid-insns-mpoke-function-name

    -mthumb -marm-mtpcs-frame -mtpcs-leaf-frame-mcaller-super-interworking -mcallee-super-interworking-mtp=name -mtls-dialect=dialect

    -mword-relocations-mfix-cortex-m3-ldrd

    AVR Options

    -mmcu=mcu -maccumulate-args -mbranch-cost=cost

    -mcall-prologues -mint8 -mno-interrupts -mrelax -mshort-calls-mstrict-X -mtiny-stack

    Blackfn Options-mcpu=cpu [-sirevision]-msim -momit-leaf-frame-pointer -mno-omit-leaf-frame-pointer-mspecld-anomaly -mno-specld-anomaly -mcsync-anomaly -mno-csync-anomaly-mlow-64k -mno-low64k -mstack-check-l1 -mid-shared-library-mno-id-shared-library -mshared-library-id=n

    -mleaf-id-shared-library -mno-leaf-id-shared-library-msep-data -mno-sep-data -mlong-calls -mno-long-calls-mfast-fp -minline-plt -mmulticore -mcorea -mcoreb -msdram-micplb

    C6X Options

    -mbig-endian -mlittle-endian -march=cpu

    -msim -msdata=sdata-type

    CRIS Options

    -mcpu=cpu -march=cpu -mtune=cpu

    -mmax-stack-frame=n

    -melinux-stacksize=n

    -metrax4 -metrax100 -mpdebug -mcc-init -mno-side-effects-mstack-align -mdata-align -mconst-align-m32-bit -m16-bit -m8-bit -mno-prologue-epilogue -mno-gotplt-melf -maout -melinux -mlinux -sim -sim2-mmul-bug-workaround -mno-mul-bug-workaround

    CR16 Options

    -mmac-mcr16cplus -mcr16c-msim -mint32 -mbit-ops -mdata-model=model

  • 8/2/2019 GCC Manual Reference

    30/764

    16 Using the GNU Compiler Collection (GCC)

    Darwin Options-all_load -allowable_client -arch -arch_errors_fatal-arch_only -bind_at_load -bundle -bundle_loader-client_name -compatibility_version -current_version

    -dead_strip-dependency-file -dylib_file -dylinker_install_name

    -dynamic -dynamiclib -exported_symbols_list-filelist -flat_namespace -force_cpusubtype_ALL-force_flat_namespace -headerpad_max_install_names-iframework-image_base -init -install_name -keep_private_externs-multi_module -multiply_defined -multiply_defined_unused-noall_load -no_dead_strip_inits_and_terms-nofixprebinding -nomultidefs -noprebind -noseglinkedit-pagezero_size -prebind -prebind_all_twolevel_modules-private_bundle -read_only_relocs -sectalign-sectobjectsymbols -whyload -seg1addr

    -sectcreate -sectobjectsymbols -sectorder-segaddr -segs_read_only_addr -segs_read_write_addr

    -seg_addr_table -seg_addr_table_filename -seglinkedit-segprot -segs_read_only_addr -segs_read_write_addr-single_module -static -sub_library -sub_umbrella-twolevel_namespace -umbrella -undefined-unexported_symbols_list -weak_reference_mismatches-whatsloaded -F -gused -gfull -mmacosx-version-min=version-mkernel -mone-byte-bool

    DEC Alpha Options-mno-fp-regs -msoft-float -malpha-as -mgas-mieee -mieee-with-inexact -mieee-conformant-mfp-trap-mode=mode -mfp-rounding-mode=mode-mtrap-precision=mode -mbuild-constants

    -mcpu=cpu-type -mtune=cpu-type

    -mbwx -mmax -mfix -mcix-mfloat-vax -mfloat-ieee-mexplicit-relocs -msmall-data -mlarge-data-msmall-text -mlarge-text-mmemory-latency=time

    DEC Alpha/VMS Options-mvms-return-codes -mdebug-main=prefix -mmalloc64

    FR30 Options-msmall-model -mno-lsim

    FRV Options-mgpr-32 -mgpr-64 -mfpr-32 -mfpr-64-mhard-float -msoft-float-malloc-cc -mfixed-cc -mdword -mno-dword-mdouble -mno-double-mmedia -mno-media -mmuladd -mno-muladd-mfdpic -minline-plt -mgprel-ro -multilib-library-pic-mlinked-fp -mlong-calls -malign-labels

    -mlibrary-pic -macc-4 -macc-8-mpack -mno-pack -mno-eflags -mcond-move -mno-cond-move-moptimize-membar -mno-optimize-membar-mscc -mno-scc -mcond-exec -mno-cond-exec-mvliw-branch -mno-vliw-branch-mmulti-cond-exec -mno-multi-cond-exec -mnested-cond-exec

  • 8/2/2019 GCC Manual Reference

    31/764

    Chapter 3: GCC Command Options 17

    -mno-nested-cond-exec -mtomcat-stats-mTLS -mtls-mcpu=cpu

    GNU/Linux Options

    -mglibc -muclibc -mbionic -mandroid-tno-android-cc -tno-android-ld

    H8/300 Options-mrelax -mh -ms -mn -mint32 -malign-300

    HPPA Options-march=architecture-type

    -mbig-switch -mdisable-fpregs -mdisable-indexing-mfast-indirect-calls -mgas -mgnu-ld -mhp-ld-mfixed-range=register-range-mjump-in-delay -mlinker-opt -mlong-calls-mlong-load-store -mno-big-switch -mno-disable-fpregs-mno-disable-indexing -mno-fast-indirect-calls -mno-gas

    -mno-jump-in-delay -mno-long-load-store

    -mno-portable-runtime -mno-soft-float-mno-space-regs -msoft-float -mpa-risc-1-0-mpa-risc-1-1 -mpa-risc-2-0 -mportable-runtime-mschedule=cpu-type -mspace-regs -msio -mwsio-munix=unix-std -nolibdld -static -threads

    i386 and x86-64 Options-mtune=cpu-type -march=cpu-type-mfpmath=unit-masm=dialect -mno-fancy-math-387-mno-fp-ret-in-387 -msoft-float

    -mno-wide-multiply -mrtd -malign-double-mpreferred-stack-boundary=num

    -mincoming-stack-boundary=num

    -mcld -mcx16 -msahf -mmovbe -mcrc32-mrecip -mrecip=opt

    -mvzeroupper-mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx-mavx2 -maes -mpclmul -mfsgsbase -mrdrnd -mf16c -mfma-msse4a -m3dnow -mpopcnt -mabm -mbmi -mtbm -mfma4 -mxop -mlzcnt-mbmi2 -mlwp -mthreads -mno-align-stringops -minline-all-stringops-minline-stringops-dynamically -mstringop-strategy=alg

    -mpush-args -maccumulate-outgoing-args -m128bit-long-double-m96bit-long-double -mregparm=num -msseregparm-mveclibabi=type -mvect8-ret-in-mem-mpc32 -mpc64 -mpc80 -mstackrealign-momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs-mcmodel=code-model -mabi=name

    -m32 -m64 -mx32 -mlarge-data-threshold=num

    -msse2avx -mfentry -m8bit-idiv-mavx256-split-unaligned-load -mavx256-split-unaligned-store

    i386 and x86-64 Windows Options-mconsole -mcygwin -mno-cygwin -mdll

    -mnop-fun-dllimport -mthread-municode -mwin32 -mwindows -fno-set-stack-executable

    IA-64 Options-mbig-endian -mlittle-endian -mgnu-as -mgnu-ld -mno-pic-mvolatile-asm-stop -mregister-names -msdata -mno-sdata

  • 8/2/2019 GCC Manual Reference

    32/764

    18 Using the GNU Compiler Collection (GCC)

    -mconstant-gp -mauto-pic -mfused-madd-minline-float-divide-min-latency-minline-float-divide-max-throughput-mno-inline-float-divide-minline-int-divide-min-latency-minline-int-divide-max-throughput

    -mno-inline-int-divide-minline-sqrt-min-latency -minline-sqrt-max-throughput-mno-inline-sqrt-mdwarf2-asm -mearly-stop-bits-mfixed-range=register-range -mtls-size=tls-size

    -mtune=cpu-type -milp32 -mlp64-msched-br-data-spec -msched-ar-data-spec -msched-control-spec-msched-br-in-data-spec -msched-ar-in-data-spec -msched-in-control-spec-msched-spec-ldc -msched-spec-control-ldc-msched-prefer-non-data-spec-insns -msched-prefer-non-control-spec-insns-msched-stop-bits-after-every-cycle -msched-count-spec-in-critical-path

    -msel-sched-dont-check-control-spec -msched-fp-mem-deps-zero-cost-msched-max-memory-insns-hard-limit -msched-max-memory-insns=max-insns

    IA-64/VMS Options-mvms-return-codes -mdebug-main=prefix -mmalloc64

    LM32 Options-mbarrel-shift-enabled -mdivide-enabled -mmultiply-enabled

    -msign-extend-enabled -muser-enabled

    M32R/D Options-m32r2 -m32rx -m32r

    -mdebug-malign-loops -mno-align-loops-missue-rate=number

    -mbranch-cost=number

    -mmodel=code-size-model-type

    -msdata=sdata-type

    -mno-flush-func -mflush-func=name-mno-flush-trap -mflush-trap=number-G num

    M32C Options-mcpu=cpu -msim -memregs=number

    M680x0 Options-march=arch -mcpu=cpu -mtune=tune -m68000 -m68020 -m68020-40 -m68020-60 -

    m68030 -m68040-m68060 -mcpu32 -m5200 -m5206e -m528x -m5307 -m5407-mcfv4e -mbitfield -mno-bitfield -mc68000 -mc68020-mnobitfield -mrtd -mno-rtd -mdiv -mno-div -mshort

    -mno-short -mhard-float -m68881 -msoft-float -mpcrel-malign-int -mstrict-align -msep-data -mno-sep-data

    -mshared-library-id=n -mid-shared-library -mno-id-shared-library-mxgot -mno-xgot

    MCore Options-mhardlit -mno-hardlit -mdiv -mno-div -mrelax-immediates-mno-relax-immediates -mwide-bitfields -mno-wide-bitfields-m4byte-functions -mno-4byte-functions -mcallgraph-data-mno-callgraph-data -mslow-bytes -mno-slow-bytes -mno-lsim-mlittle-endian -mbig-endian -m210 -m340 -mstack-increment

    MeP Options

  • 8/2/2019 GCC Manual Reference

    33/764

    Chapter 3: GCC Command Options 19

    -mabsdiff -mall-opts -maverage -mbased=n -mbitops-mc=n -mclip -mconfig=name -mcop -mcop32 -mcop64 -mivc2-mdc -mdiv -meb -mel -mio-volatile -ml -mleadz -mm -mminmax-mmult -mno-opts -mrepeat -ms -msatur -msdram -msim -msimnovec -mtf-mtiny=n

    MicroBlaze Options

    -msoft-float -mhard-float -msmall-divides -mcpu=cpu-mmemcpy -mxl-soft-mul -mxl-soft-div -mxl-barrel-shift

    -mxl-pattern-compare -mxl-stack-check -mxl-gp-opt -mno-clearbss-mxl-multiply-high -mxl-float-convert -mxl-float-sqrt-mxl-mode-app-model

    MIPS Options

    -EL -EB -march=arch -mtune=arch

    -mips1 -mips2 -mips3 -mips4 -mips32 -mips32r2-mips64 -mips64r2-mips16 -mno-mips16 -mflip-mips16-minterlink-mips16 -mno-interlink-mips16

    -mabi=abi -mabicalls -mno-abicalls-mshared -mno-shared -mplt -mno-plt -mxgot -mno-xgot-mgp32 -mgp64 -mfp32 -mfp64 -mhard-float -msoft-float-msingle-float -mdouble-float -mdsp -mno-dsp -mdspr2 -mno-dspr2-mfpu=fpu-type

    -msmartmips -mno-smartmips-mpaired-single -mno-paired-single -mdmx -mno-mdmx-mips3d -mno-mips3d -mmt -mno-mt -mllsc -mno-llsc-mlong64 -mlong32 -msym32 -mno-sym32-Gnum -mlocal-sdata -mno-local-sdata-mextern-sdata -mno-extern-sdata -mgpopt -mno-gopt-membedded-data -mno-embedded-data-muninit-const-in-rodata -mno-uninit-const-in-rodata-mcode-readable=setting-msplit-addresses -mno-split-addresses

    -mexplicit-relocs -mno-explicit-relocs-mcheck-zero-division -mno-check-zero-division-mdivide-traps -mdivide-breaks-mmemcpy -mno-memcpy -mlong-calls -mno-long-calls-mmad -mno-mad -mfused-madd -mno-fused-madd -nocpp-mfix-24k -mno-fix-24k-mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400-mfix-r10000 -mno-fix-r10000 -mfix-vr4120 -mno-fix-vr4120-mfix-vr4130 -mno-fix-vr4130 -mfix-sb1 -mno-fix-sb1-mflush-func=func -mno-flush-func-mbranch-cost=num -mbranch-likely -mno-branch-likely-mfp-exceptions -mno-fp-exceptions

    -mvr4130-align -mno-vr4130-align -msynci -mno-synci-mrelax-pic-calls -mno-relax-pic-calls -mmcount-ra-address

    MMIX Options-mlibfuncs -mno-libfuncs -mepsilon -mno-epsilon -mabi=gnu-mabi=mmixware -mzero-extend -mknuthdiv -mtoplevel-symbols-melf -mbranch-predict -mno-branch-predict -mbase-addresses-mno-base-addresses -msingle-exit -mno-single-exit

    MN10300 Options

    -mmult-bug -mno-mult-bug-mno-am33 -mam33 -mam33-2 -mam34-mtune=cpu-type

  • 8/2/2019 GCC Manual Reference

    34/764

    20 Using the GNU Compiler Collection (GCC)

    -mreturn-pointer-on-d0-mno-crt0 -mrelax -mliw -msetlb

    PDP-11 Options-mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10

    -mbcopy -mbcopy-builtin -mint32 -mno-int16-mint16 -mno-int32 -mfloat32 -mno-float64-mfloat64 -mno-float32 -mabshi -mno-abshi-mbranch-expensive -mbranch-cheap-munix-asm -mdec-asm

    picoChip Options-mae=ae_type -mvliw-lookahead=N

    -msymbol-as-address -mno-inefficient-warnings

    PowerPC Options See RS/6000 and PowerPC Options.

    RL78 Options-msim -mmul=none -mmul=g13 -mmul=rl78

    RS/6000 and PowerPC Options-mcpu=cpu-type

    -mtune=cpu-type

    -mcmodel=code-model

    -mpower -mno-power -mpower2 -mno-power2-mpowerpc -mpowerpc64 -mno-powerpc-maltivec -mno-altivec-mpowerpc-gpopt -mno-powerpc-gpopt-mpowerpc-gfxopt -mno-powerpc-gfxopt-mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb -mpopcntd -mno-popcntd-mfprnd -mno-fprnd-mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr -mhard-dfp -mno-hard-dfp

    -mnew-mnemonics -mold-mnemonics-mfull-toc -mminimal-toc -mno-fp-in-toc -mno-sum-in-toc-m64 -m32 -mxl-compat -mno-xl-compat -mpe

    -malign-power -malign-natural-msoft-float -mhard-float -mmultiple -mno-multiple-msingle-float -mdouble-float -msimple-fpu-mstring -mno-string -mupdate -mno-update-mavoid-indexed-addresses -mno-avoid-indexed-addresses-mfused-madd -mno-fused-madd -mbit-align -mno-bit-align-mstrict-align -mno-strict-align -mrelocatable-mno-relocatable -mrelocatable-lib -mno-relocatable-lib

    -mtoc -mno-toc -mlittle -mlittle-endian -mbig -mbig-endian-mdynamic-no-pic -maltivec -mswdiv -msingle-pic-base-mprioritize-restricted-insns=priority

    -msched-costly-dep=dependence_type

    -minsert-sched-nops=scheme

    -mcall-sysv -mcall-netbsd-maix-struct-return -msvr4-struct-return-mabi=abi-type -msecure-plt -mbss-plt-mblock-move-inline-limit=num-misel -mno-isel-misel=yes -misel=no

    -mspe -mno-spe-mspe=yes -mspe=no-mpaired-mgen-cell-microcode -mwarn-cell-microcode-mvrsave -mno-vrsave-mmulhw -mno-mulhw

  • 8/2/2019 GCC Manual Reference

    35/764

    Chapter 3: GCC Command Options 21

    -mdlmzb -mno-dlmzb-mfloat-gprs=yes -mfloat-gprs=no -mfloat-gprs=single -mfloat-gprs=double-mprototype -mno-prototype-msim -mmvme -mads -myellowknife -memb -msdata-msdata=opt -mvxworks -G num -pthread-mrecip -mrecip=opt -mno-recip -mrecip-precision

    -mno-recip-precision-mveclibabi=type -mfriz -mno-friz-mpointers-to-nested-functions -mno-pointers-to-nested-functions-msave-toc-indirect -mno-save-toc-indirect

    RX Options-m64bit-doubles -m32bit-doubles -fpu -nofpu-mcpu=

    -mbig-endian-data -mlittle-endian-data-msmall-data-msim -mno-sim-mas100-syntax -mno-as100-syntax-mrelax

    -mmax-constant-size=-mint-register=-mpid-msave-acc-in-interrupts

    S/390 and zSeries Options-mtune=cpu-type -march=cpu-type

    -mhard-float -msoft-float -mhard-dfp -mno-hard-dfp-mlong-double-64 -mlong-double-128-mbackchain -mno-backchain -mpacked-stack -mno-packed-stack-msmall-exec -mno-small-exec -mmvcle -mno-mvcle-m64 -m31 -mdebug -mno-debug -mesa -mzarch-mtpf-trace -mno-tpf-trace -mfused-madd -mno-fused-madd-mwarn-framesize -mwarn-dynamicstack -mstack-size -mstack-guard

    Score Options-meb -mel-mnhwloop-muls-mmac-mscore5 -mscore5u -mscore7 -mscore7d

    SH Options-m1 -m2 -m2e-m2a-nofpu -m2a-single-only -m2a-single -m2a-m3 -m3e-m4-nofpu -m4-single-only -m4-single -m4-m4a-nofpu -m4a-single-only -m4a-single -m4a -m4al-m5-64media -m5-64media-nofpu-m5-32media -m5-32media-nofpu

    -m5-compact -m5-compact-nofpu-mb -ml -mdalign -mrelax-mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave-mieee -mbitops -misize -minline-ic_invalidate -mpadstruct -mspace-mprefergot -musermode -multcost=number -mdiv=strategy

    -mdivsi3_libfunc=name -mfixed-range=register-range

    -madjust-unroll -mindexed-addressing -mgettrcost=number -mpt-fixed-maccumulate-outgoing-args -minvalid-symbols -msoft-atomic-mbranch-cost=num -mcbranchdi -mcmpeqdi -mfused-madd -mpretend-cmove

    Solaris 2 Options

  • 8/2/2019 GCC Manual Reference

    36/764

    22 Using the GNU Compiler Collection (GCC)

    -mimpure-text -mno-impure-text-pthreads -pthread

    SPARC Options-mcpu=cpu-type

    -mtune=cpu-type-mcmodel=code-model

    -mmemory-model=mem-model

    -m32 -m64 -mapp-regs -mno-app-regs-mfaster-structs -mno-faster-structs -mflat -mno-flat-mfpu -mno-fpu -mhard-float -msoft-float-mhard-quad-float -msoft-quad-float-mlittle-endian-mstack-bias -mno-stack-bias-munaligned-doubles -mno-unaligned-doubles

    -mv8plus -mno-v8plus -mvis -mno-vis-mvis2 -mno-vis2 -mvis3 -mno-vis3-mfmaf -mno-fmaf -mpopc -mno-popc-mfix-at697f

    SPU Options-mwarn-reloc -merror-reloc-msafe-dma -munsafe-dma-mbranch-hints

    -msmall-mem -mlarge-mem -mstdmain-mfixed-range=register-range

    -mea32 -mea64-maddress-space-conversion -mno-address-space-conversion-mcache-size=cache-size

    -matomic-updates -mno-atomic-updates

    System V Options-Qy -Qn -YP,paths -Ym,dir

    TILE-Gx Options

    -mcpu=CPU -m32 -m64

    TILEPro Options-mcpu=CPU -m32

    V850 Options-ml