Manpages

名 称

gcc, g++ − GNU プ ロ ジ ェ ク ト C お よ び C++ コ ン パ イ ラ (gcc-2.95.3)

書 式

gcc [ option | filename ]...

注 意

こ の マ ニ ュ ア ル に 書 か れ た 情 報 は GNU C コ ン パ イ ラ の 完 全 な ド キ ュ メ ン テ ー シ ョ ン か ら の 抜 粋 で あ り 、 オ プ シ ョ ン の 意 味 の 記 述 に と ど め ま す 。 こ の マ ニ ュ ア ル は ボ ラ ン テ ィ ア の メ ン テ ナ ン ス が 行 な わ れ た 時 に の み 更 新 さ れ る も の で 、 常 に 最 新 の 情 報 を 示 し て い る わ け で は あ り ま せ ん 。 も し こ の マ ニ ュ ア ル と 実 際 の ソ フ ト ウ ェ ア の 間 に 矛 盾 点 が あ れ ば 、 正 式 な ド キ ュ メ ン ト で あ る Info フ ァ イ ル の ほ う を 参 照 し て 下 さ い 。 こ の マ ニ ュ ア ル 中 の 古 い 記 述 が 重 大 な 混 乱 や 不 具 合 を き た す こ と に な れ ば 、 こ の マ ニ ュ ア ル ペ ー ジ の 配 布 は 中 止 し ま す 。 GNU CCの メ ン テ ナ ン ス 作 業 の 都 合 上 、 Info フ ァ イ ル を 更 新 し た 時 に マ ニ ュ ア ル ペ ー ジ も 併 せ て 更 新 す る こ と は で き ま せ ん 。 マ ニ ュ ア ル ペ ー ジ は 時 代 遅 れ で あ り 、 こ れ に 時 間 を か け る べ き で は な い と GNU プ ロ ジ ェ ク ト で は 考 え て い ま す 。 完 全 な 最 新 の ド キ ュ メ ン テ ー シ ョ ン が 必 要 な 場 合 は 、 Info フ ァ イ ル の ’gcc’ ま た は マ ニ ュ ア ル の Using and Porting GNU CC (for version 2.0) を 参 照 し て 下 さ い 。 こ の 双 方 は Texinfo の ソ ー ス フ ァ イ ル gcc.texinfo か ら 生 成 さ れ ま す 。

解 説

C と C++ の コ ン パ イ ラ は 統 合 さ れ て い ま す 。 ど ち ら の 場 合 も 、 入 力 フ ァ イ ル は 、 プ リ プ ロ セ ス 、 コ ン パ イ ル 、 ア セ ン ブ ル 、 リ ン ク の 4 つ の 処 理 ス テ ー ジ の う ち の 1 つ 以 上 の ス テ ー ジ を 踏 ん で 処 理 さ れ ま す 。 ソ ー ス フ ァ イ ル 名 の 拡 張 子 に よ っ て ソ ー ス の 言 語 を 識 別 し ま す が 、 デ フ ォ ル ト の 動 作 は 、 ど ち ら の 名 前 で コ ン パ イ ラ を 使 う か に 依 存 し て い ま す :

gcc プ リ プ ロ セ ス 済 み の

(.i) フ ァ イ ル を C の フ ァ イ ル と 仮 定 し 、 C ス タ

イ ル の リ ン ク を 行 い ま す 。

g++ プ リ プ ロ セ ス 済 み の

(.i) フ ァ イ ル を C++ の フ ァ イ ル と 仮 定 し 、 C++ ス

タ イ ル の リ ン ク を 行 い ま す 。 ソ ー ス フ ァ イ ル 名 の 拡 張 子 は 、 そ の 言 語 が 何 で あ る か と 、 ど の よ う な 処 理 が 行 わ れ る べ き か を 示 し ま す :

.c C言 語 ソ ー ス で す 。 プ リ プ ロ セ ッ サ 、 コ ン パ イ ラ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.C
C++言 語 ソ ー ス で す 。 プ リ プ ロ セ ッ サ 、 コ ン パ イ ラ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.cc
C++言 語 ソ ー ス で す 。 プ リ プ ロ セ ッ サ 、 コ ン パ イ ラ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.cxx
C++言 語 ソ ー ス で す 。 プ リ プ ロ セ ッ サ 、 コ ン パ イ ラ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.m
Objective-C 言 語 ソ ー ス で す 。 プ リ プ ロ セ ッ サ 、 コ ン パ イ ラ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.i
プ リ プ ロ セ ッ サ に か け ら れ た C言 語 ソ ー ス で す 。 コ ン パ イ ラ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.ii
プ リ プ ロ セ ッ サ に か け ら れ た C++言 語 ソ ー ス で す 。 コ ン パ イ ラ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.s
ア セ ン ブ リ 言 語 ソ ー ス で す 。 ア セ ン ブ ラ に か け ら れ ま す 。
.S
ア セ ン ブ リ 言 語 ソ ー ス で す 。 プ リ プ ロ セ ッ サ 、 ア セ ン ブ ラ に か け ら れ ま す 。
.h
プ リ プ ロ セ ッ サ フ ァ イ ル で す 。 通 常 は コ マ ン ド ラ イ ン に は 現 れ ま せ ん 。 そ の 他 の 拡 張 子 を 持 つ フ ァ イ ル は リ ン カ に 渡 さ れ ま す 。 以 下 の も の が あ り ま す 。

.o オ ブ ジ ェ ク ト フ ァ イ ル で す 。
.a
ア ー カ イ ブ フ ァ イ ル で す 。 リ ン ク は 、 オ プ シ ョ ン −c, −S, −E を 指 定 し て 抑 制 し な い か ぎ り (も し く は コ ン パ イ ル エ ラ ー に よ っ て す べ て の 処 理 が 中 断 し な い か ぎ り )、 常 に 最 終 ス テ ー ジ で 実 行 さ れ ま す 。 リ ン ク の ス テ ー ジ に お い て は 、 ソ ー ス フ ァ イ ル に 対 応 し た 全 て の .o フ ァ イ ル と 、 −l で 指 定 し た ラ イ ブ ラ リ と 、 認 識 さ れ な か っ た フ ァ イ ル 名 (名 前 に .o の つ い た オ ブ ジ ェ ク ト フ ァ イ ル や .a の つ い た ア ー カ イ ブ を 含 む ) は 、 コ マ ン ド ラ イ ン に 並 べ ら れ た 順 番 で リ ン カ に 渡 さ れ ま す 。

オ プ シ ョ ン

オ プ シ ョ ン は 分 割 さ れ て い な け れ ば な り ま せ ん 。 す な わ ち ’−dr’ は ’−d −r ’と は 異 な っ た 扱 い を 受 け ま す 。 ほ と ん ど の ’−f’ と ’−W’ 形 式 の オ プ シ ョ ン に は 、 −fname−fno−name (ま た は −Wname−Wno−name) の 形 式 の 、 対 照 的 な 表 現 が あ り ま す 。 こ こ で は デ フ ォ ル ト で な い 形 式 の み を 示 し ま す 。 す べ て の オ プ シ ョ ン を 種 類 別 に 分 け て ま と め ま し た 。 詳 し い 解 説 は 以 下 の 節 で 行 な い ま す 。

FreeBSD 固 有 の オ プ シ ョ ン

−pthread ス レ ッ ド 化 ユ ー ザ プ ロ セ ス に libc の 代 り に libc_r を リ ン ク し ま す 。 ス レ ッ ド 化 ユ ー ザ プ ロ セ ス に リ ン ク さ れ る オ ブ ジ ェ ク ト は -D_THREAD_SAFE 付 き で コ ン パ イ ル す る 必 要 が あ り ま す 。
−kthread
ス レ ッ ド 化 カ ー ネ ル プ ロ セ ス に libc に 加 え て libpthread を リ ン ク し ま す 。 ス レ ッ ド 化 カ ー ネ ル プ ロ セ ス に リ ン ク さ れ る オ ブ ジ ェ ク ト は -D_THREAD_SAFE 付 き で コ ン パ イ ル す る 必 要 が あ り ま す 。 全 体 的 な オ プ シ ョ ン

−c −S −E −o file −pipe −v −x language 言 語 オ プ シ ョ ン
−ansi −fall−virtual −fcond−mismatch −fdollars−in−identifiers −fenum−int−equiv −fexternal−templates −fno−asm −fno−builtin −fhosted −fno−hosted −ffreestanding −fno−freestanding −fno−strict−prototype −fsigned−bitfields −fsigned−char −fthis−is−variable −funsigned−bitfields −funsigned−char −fwritable−strings −traditional −traditional−cpp −trigraphs 警 告 オ プ シ ョ ン
−fsyntax−only −pedantic −pedantic−errors −w −W −Wall −Waggregate−return −Wcast−align −Wcast−qual −Wchar−subscript −Wcomment −Wconversion −Wenum−clash −Werror −Wformat −Wid−clash−len −Wimplicit −Wimplicit−int −Wimplicit−function−declaration −Winline −Wlong−long −Wmain −Wmissing−prototypes −Wmissing−declarations −Wnested−externs −Wno−import −Wparentheses −Wpointer−arith −Wredundant−decls −Wreturn−type −Wshadow −Wstrict−prototypes −Wswitch −Wtemplate−debugging −Wtraditional −Wtrigraphs −Wuninitialized −Wunused −Wwrite−strings デ バ ッ グ オ プ シ ョ ン
−a −dletters −fpretend−float −g −glevel −gcoff −gxcoff −gxcoff+ −gdwarf −gdwarf+ −gstabs −gstabs+ −ggdb −p −pg −save−temps −print−file−name=library −print−libgcc−file−name 最 適 化 オ プ シ ョ ン
−fcaller−saves −fcse−follow−jumps −fcse−skip−blocks −fdelayed−branch −felide−constructors −fexpensive−optimizations −ffast−math −ffloat−store −fforce−addr −fforce−mem −finline−functions −fkeep−inline−functions −fmemoize−lookups −fno−default−inline −fno−defer−pop −fno−function−cse −fno−inline −fno−peephole −fomit−frame−pointer −frerun−cse−after−loop −fschedule−insns −fschedule−insns2 −fstrength−reduce −fthread−jumps −funroll−all−loops −funroll−loops −O −O2 −O3 −O0 −Os プ リ プ ロ セ ッ サ オ プ シ ョ ン
−Aassertion −C −dD −dM −dN −Dmacro[=defn] −E −H −idirafter dir −include file −imacros file −iprefix file −iwithprefix dir −M −MD −MM −MMD −nostdinc −P −Umacro −undef ア セ ン ブ ラ オ プ シ ョ ン
−Wa,option リ ン カ オ プ シ ョ ン
−llibrary −nostartfiles −nostdlib −static −shared −symbolic −Xlinker option −Wl,option −u symbol デ ィ レ ク ト リ オ プ シ ョ ン
−Bprefix −Idir −I− −Ldir タ ー ゲ ッ ト オ プ シ ョ ン
−b machine −V version コ ン フ ィ ギ ュ レ ー シ ョ ン 依 存 オ プ シ ョ ン
M680x0 オ プ シ ョ ン

−m68000 −m68020 −m68020−40 −m68030 −m68040 −m68881 −mbitfield −mc68000 −mc68020 −mfpa −mnobitfield −mrtd −mshort −msoft−float

VAX オ プ シ ョ ン
−mg −mgnu −munix

SPARC オ プ シ ョ ン
−mepilogue −mfpu −mhard−float −mno−fpu −mno−epilogue −msoft−float −msparclite −mv8 −msupersparc −mcypress

Convex オ プ シ ョ ン
−margcount −mc1 −mc2 −mnoargcount

AMD29K オ プ シ ョ ン
−m29000 −m29050 −mbw −mdw −mkernel−registers −mlarge −mnbw −mnodw −msmall −mstack−check −muser−registers

M88K オ プ シ ョ ン
−m88000 −m88100 −m88110 −mbig−pic −mcheck−zero−division −mhandle−large−shift −midentify−revision −mno−check−zero−division −mno−ocs−debug−info −mno−ocs−frame−position −mno−optimize−arg−area −mno−serialize−volatile −mno−underscores −mocs−debug−info −mocs−frame−position −moptimize−arg−area −mserialize−volatile −mshort−data−num −msvr3 −msvr4 −mtrap−large−shift −muse−div−instruction −mversion−03.00 −mwarn−passed−structs

RS6000 オ プ シ ョ ン
−mfp−in−toc −mno−fop−in−toc

RT オ プ シ ョ ン
−mcall−lib−mul −mfp−arg−in−fpregs −mfp−arg−in−gregs −mfull−fp−blocks −mhc−struct−return −min−line−mul −mminimum−fp−blocks −mnohc−struct−return

MIPS オ プ シ ョ ン
−mcpu=cpu type −mips2 −mips3 −mint64 −mlong64 −mlonglong128 −mmips−as −mgas −mrnames −mno−rnames −mgpopt −mno−gpopt −mstats −mno−stats −mmemcpy −mno−memcpy −mno−mips−tfile −mmips−tfile −msoft−float −mhard−float −mabicalls −mno−abicalls −mhalf−pic −mno−half−pic −G num −nocpp

i386 オ プ シ ョ ン
−m386 −m486 −mpentium −mpentiumpro −mno−486 −mcpu=cpu type −march=cpu type −msoft−float −mrtd −mregparm −msvr3−shlib −mno−ieee−fp −mno−fp−ret−in−387 −mfancy−math−387 −mno−wide−multiply −mdebug−addr −mno−move −mprofiler−epilogue −reg−alloc=LIST

HPPA オ プ シ ョ ン
−mpa−risc−1−0 −mpa−risc−1−1 −mkernel −mshared−libs −mno−shared−libs −mlong−calls −mdisable−fpregs −mdisable−indexing −mtrailing−colon

i960 オ プ シ ョ ン
−mcpu-type −mnumerics −msoft−float −mleaf−procedures −mno−leaf−procedures −mtail−call −mno−tail−call −mcomplex−addr −mno−complex−addr −mcode−align −mno−code−align −mic−compat −mic2.0−compat −mic3.0−compat −masm−compat −mintel−asm −mstrict−align −mno−strict−align −mold−align −mno−old−align

DEC Alpha オ プ シ ョ ン
−mfp−regs −mno−fp−regs −mno−soft−float −msoft−float

System V オ プ シ ョ ン
−G −Qy −Qn −YP,paths −Ym,dir コ ー ド 生 成 オ プ シ ョ ン
−fcall−saved−reg −fcall−used−reg −ffixed−reg −finhibit−size−directive −fnonnull−objects −fno−common −fno−ident −fno−gnu−linker −fpcc−struct−return −fpic −fPIC −freg−struct−return −fshared−data −fshort−enums −fshort−double −fvolatile −fvolatile−global −fverbose−asm

全 体 的 な オ プ シ ョ ン

−x language こ の オ プ シ ョ ン に 続 く 入 力 フ ァ イ ル の 言 語 を language で あ る と 明 示 的 に 指 定 し ま す (拡 張 子 に 基 づ く デ フ ォ ル ト の 選 択 よ り も 優 先 さ れ ま す )。 こ の オ プ シ ョ ン は 、 次 の ’−x’ オ プ シ ョ ン が 出 て く る ま で 、 後 続 す る 全 て の 入 力 フ ァ イ ル に 対 し て 適 用 さ れ ま す 。 language と し て は 、 ’c’, ’objective−c’, ’c−header’, ’c++’, ’cpp−output’, ’assembler’, ’assembler−with−cpp’ を 指 定 す る こ と が 可 能 で す 。
−x none
言 語 の 指 定 を 解 除 し ま す 。 こ の オ プ シ ョ ン の あ と に 続 く フ ァ イ ル は 、 そ れ ら の 拡 張 子 に 基 づ い て (あ た か も 何 の ’−x’ オ プ シ ョ ン も 使 用 さ れ た こ と が な い よ う に ) 処 理 さ れ ま す 。 も し 、 4 つ の ス テ ー ジ (プ リ プ ロ セ ス 、 コ ン パ イ ル 、 ア セ ン ブ ル 、 リ ン ク ) の う ち の 一 部 の み が 必 要 な 場 合 は 、 ’−x’ オ プ シ ョ ン (ま た は フ ァ イ ル 名 の 拡 張 子 ) を 使 用 し て gcc に 対 し て ど の ス テ ー ジ か ら 開 始 す る か を 伝 え 、 さ ら に ’−c’, ’−S’, ’−E’ の オ プ シ ョ ン の う ち の ど れ か を 使 用 し て gcc に 対 し て ど こ で 処 理 を 停 止 さ せ る か を 指 定 し ま す 。 こ こ で 、 い く つ か の 組 み 合 わ せ (例 え ば ’−x cpp−output −E’) は gcc に 対 し て 何 の 動 作 も 行 な わ な い よ う に 指 定 す る こ と に な る こ と に 注 意 し て く だ さ い 。

−c ソ ー ス フ ァ イ ル を 、 コ ン パ イ ル ま た は ア セ ン ブ ル ま で は し ま す が 、 リ ン ク は し ま せ ん 。 コ ン パ イ ラ の 出 力 は 、 そ れ ぞ れ の ソ ー ス フ ァ イ ル に 対 応 し た オ ブ ジ ェ ク ト フ ァ イ ル と な り ま す 。 デ フ ォ ル ト で は 、

GCC は オ ブ ジ ェ ク ト フ ァ イ ル の フ ァ イ ル 名 と し て 、 ソ ー ス フ ァ イ ル の 拡 張 子 ’.c’, ’.i’, ’.s’ 等 を ’.o’ で 置 き 換 え た も の を 使 用 し ま す 。 −o オ プ シ ョ ン を 使 用 す る こ と に よ っ て 、 他 の 名 前 を 指 定 す る こ と も 可 能 で す 。

GCC は −c オ プ シ ョ ン を 使 用 し た 場 合 は 、 理 解 で き な い 入 力 フ ァ イ ル (コ ン パ イ ル や ア セ ン ブ ル を 必 要 と し な い フ ァ イ ル ) を 無 視 し ま す 。

−S コ ン パ イ ル が 終 っ た 所 で 処 理 を 停 止 し 、 ア セ ン ブ ル は 行 い ま せ ん 。 ア セ ン ブ ラ コ ー ド で は な い 入 力 フ ァ イ ル が 指 定 さ れ た 場 合 は 、 出 力 は ア セ ン ブ ラ コ ー ド の フ ァ イ ル に な り ま す 。 デ フ ォ ル ト で は 、

GCC は ア セ ン ブ ラ フ ァ イ ル の フ ァ イ ル 名 と し て 、 ソ ー ス フ ァ イ ル の 拡 張 子 ’.c’, ’.i’ 等 を ’.s’ で 置 き 換 え た も の を 使 用 し ま す 。 −o オ プ シ ョ ン を 使 用 す る こ と に よ っ て 、 他 の 名 前 を 指 定 す る こ と も 可 能 で す 。

GCC は コ ン パ イ ル を 必 要 と し な い 入 力 フ ァ イ ル を 全 て 無 視 し ま す 。

−E プ リ プ ロ セ ス 処 理 が 終 了 し た と こ ろ で 停 止 し ま す 。 コ ン パ イ ル は し ま せ ん 。 出 力 は プ リ プ ロ セ ス 済 み の ソ ー ス コ ー ド で あ り 、 標 準 出 力 へ と 送 ら れ ま す 。

GCC は プ リ プ ロ セ ス を 必 要 と し な い 入 力 フ ァ イ ル を 全 て 無 視 し ま す 。

−o file 出 力 先 を file に 指 定 し ま す 。 こ の オ プ シ ョ ン は GCC が 実 行 可 能 フ ァ イ ル 、 オ ブ ジ ェ ク ト フ ァ イ ル 、 ア セ ン ブ ラ フ ァ イ ル 、 プ リ プ ロ セ ス 済 み C コ ー ド な ど の 、 い か な る 種 類 の 出 力 を 行 な う 場 合 に も 適 用 可 能 で す 。 出 力 フ ァ イ ル は 1 つ し か 指 定 で き な い た め 、 ’−o’ を 複 数 の 入 力 フ ァ イ ル を コ ン パ イ ル す る 際 に 使 用 す る こ と は 、 実 行 フ ァ イ ル を 出 力 す る 時 以 外 は 無 意 味 で す 。

−o’オ プ シ ョ ン を 指 定 し な か っ た 場 合 の デ フ ォ ル ト は 、 実 行 フ ァ イ ル を 作 る 場 合 は ’a.out’ と い う 名 前 で あ り 、 ’source.suffix’ の 形 式 の フ ァ イ ル 名 を 持 っ た ソ ー ス フ ァ イ ル の オ ブ ジ ェ ク ト フ ァ イ ル は ’source.o’ で あ り 、 ア セ ン ブ ラ の フ ァ イ ル は ’source.s’ で す 。 プ リ プ ロ セ ス 済 み の C 言 語 は 、 全 て 標 準 出 力 に 送 ら れ ま す 。

−v

(標 準 エ ラ ー 出 力 に 対 し て ) コ ン パ イ ル の 各 ス テ ー ジ で 実 行 さ れ る コ マ ン ド を 表 示 し ま す 。 コ ン パ イ ラ ド ラ イ バ 、 プ リ プ ロ セ ッ サ お よ び 本 来 の コ ン パ イ ラ の 各 バ ー ジ ョ ン 番 号 も 表 示 し ま す 。

-pipe

コ ン パ イ ル 時 の ス テ ー ジ の 間 の デ ー タ の 受 け 渡 し に 、 テ ン ポ ラ リ フ ァ イ ル で は な く パ イ プ を 使 用 し ま す 。 い く つ か の シ ス テ ム で は ア セ ン ブ ラ が パ イ プ か ら の 入 力 を 受 け 付 け る こ と が で き な い た め に 、 こ の オ プ シ ョ ン を 指 定 す る と 失 敗 し ま す 。 GNU ア セ ン ブ ラ で は 問 題 な く 使 用 で き ま す 。

言 語 オ プ シ ョ ン

以 下 の オ プ シ ョ ン は 、 コ ン パ イ ラ が 受 け 付 け る

C の 方 言 に 関 す る 制 御 を 行 な い ま す :

−ansi 全 て の

ANSI 標 準 の C プ ロ グ ラ ム を サ ポ ー ト し ま す 。

こ の オ プ シ ョ ン は 、 GNU C が 持 つ ANSI C と の 非 互 換 な 機 能 を 全 て 排 除 し ま す 。 例 え ば 、 asm, inline, typeof な ど の キ ー ワ ー ド や 、 unixvax な ど の 現 在 使 用 し て い る シ ス テ ム を 規 定 す る 定 義 済 み マ ク ロ な ど が 抑 制 さ れ ま す 。 さ ら に 、 好 ま し く な く か つ ほ と ん ど 使 用 さ れ な い ANSI の ト ラ イ グ ラ フ の 機 能 を 使 用 可 能 と し 、 さ ら に ’$’ を 識 別 子 の 一 部 と し て 使 用 で き な い よ う に し ま す 。 代 替 キ ー ワ ー ド で あ る __asm__, __extension__, __inline__, __typeof__ は 、 ’−ansi’ が 指 定 さ れ た 場 合 で も 使 用 す る こ と が 可 能 で す 。 も ち ろ ん 、 こ れ ら を ANSI C プ ロ グ ラ ム で 使 用 す る こ と が 望 ま し く な い の は 当 然 で す が 、 ’−ansi’ を つ け て コ ン パ イ ル さ れ る 場 合 で も 、 イ ン ク ル ー ド さ れ る ヘ ッ ダ フ ァ イ ル 中 に こ れ ら が 記 述 で き る と い う こ と は 有 用 で す 。 __unix____vax__ な ど の 代 替 定 義 済 み マ ク ロ は 、 ’−ansi’ を 指 定 す る 場 合 で も 指 定 し な い 場 合 で も 、 利 用 可 能 と な っ て い ま す 。

−ansi’ オ プ シ ョ ン は 、 ANSI 準 拠 で な い プ ロ グ ラ ム を 不 必 要 に 拒 否 す る こ と は あ り ま せ ん 。 も し こ の よ う な 動 作 を 行 な わ せ た い 場 合 に は ’−ansi’に 加 え て −pedantic’ オ プ シ ョ ン を 指 定 す る 必 要 が あ り ま す 。 プ リ プ ロ セ ッ サ 定 義 済 み マ ク ロ __STRICT_ANSI__ が ’−ansi’ オ プ シ ョ ン を 使 用 し た 際 に は 定 義 さ れ ま す 。 い く つ か の ヘ ッ ダ フ ァ イ ル は 、 こ の マ ク ロ を 識 別 し て 、 ANSI 標 準 が 望 ま な い 関 数 や マ ク ロ の 定 義 を 抑 制 し ま す 。 こ れ は 、 そ れ ら の 関 数 や マ ク ロ と 同 じ 名 前 を 別 の 目 的 で 使 用 す る プ ロ グ ラ ム を 混 乱 さ せ な い よ う に す る た め で す 。

−fno−asm

asm, inline, typeof を キ ー ワ ー ド と し て 解 釈 し ま せ ん 。 こ れ ら の 単 語 は 識 別 子 と し て 解 釈 さ れ る よ う に な り ま す 。 こ れ ら の 代 用 と し て __asm__, __inline__, __typeof__ が 使 用 で き ま す 。 ’−ansi’ を 指 定 す る と 、 暗 黙 の う ち に ’−fno−asm’ を 指 定 し た も の と み な さ れ ま す 。

−fno−builtin ビ ル ト イ ン 関 数 の う ち 、 2 つ の ア ン ダ ー ス コ ア で 始 ま る も の 以 外 を 認 識 し な く な り ま す 。 現 在 、 こ の 指 定 は _exit, abort, abs, alloca, cos, exit, fabs, labs, memcmp, memcpy, sin, sqrt, strcmp, strcpy, strlen の 関 数 に 影 響 を 及 ぼ し ま す 。

−ansi’ オ プ シ ョ ン を 指 定 す る と 、 alloca_exit は ビ ル ト イ ン 関 数 と し て 扱 わ れ な く な り ま す 。

−fhosted ホ ス ト 実 行 環 境 (hosted environment) 用 に コ ン パ イ ル を 行 い ま す 。 こ れ に よ り 、 ’−fbuiltin’ オ プ シ ョ ン が 有 効 に な り 、 ま た 、 不 審 な main 宣 言 に 対 し て 警 告 を 発 す る よ う に な り ま す 。
−ffreestanding
フ リ ー ス タ ン デ ィ ン グ 実 行 環 境 (freestanding environment) 用 に コ ン パ イ ル を 行 い ま す 。 こ れ に よ り 、 ’−fno-builtin’ オ プ シ ョ ン が 有 効 に な り 、 ま た 、 main に 特 別 な 条 件 は 不 要 と み な し ま す 。
−fno−strict−prototype

int foo ();’ の よ う な 、 引 数 を 指 定 し な い 関 数 宣 言 を 、 C 言 語 の よ う に 引 数 の 数 や 型 に つ い て 何 の 仮 定 も し な い と い う 扱 い に し ま す (C++ の み )。 通 常 は こ の よ う な 宣 言 は 、 C++ で は foo と い う 関 数 が 1 つ も 引 数 を と ら な い こ と を 意 味 し ま す 。

−trigraphs

ANSI C の ト ラ イ グ ラ フ を 使 用 可 能 と し ま す 。 ’−ansi’ オ プ シ ョ ン を 指 定 す る と 、 暗 黙 の う ち に ’−trigraphs’ を 指 定 し た も の と み な さ れ ま す 。

−traditional 伝 統 的 な C コ ン パ イ ラ の い く つ か の 特 徴 を サ ポ ー ト し ま す 。 詳 し く は GNU C の マ ニ ュ ア ル を 参 照 し て く だ さ い 。 以 前 は こ こ に そ の リ ス ト の 複 製 を 載 せ て い ま し た が 、 そ れ ら が 完 全 に 時 代 遅 れ に な っ た 時 に 我 々 に 文 句 が 来 な い よ う に 削 除 し て し ま い ま し た 。 し か し 、 C++ の プ ロ グ ラ ム だ け に つ い て (C で は あ り ま せ ん ) 特 記 し て お く こ と が 1 つ あ り ま す 。 ’−traditional’ オ プ シ ョ ン は C++ に 対 し て 1 つ だ け 特 別 な 効 果 を 持 ち ま す 。 そ れ は 、 this へ の 代 入 を 許 可 す る と い う も の で す 。 こ れ は ’−fthis−is−variable’オ プ シ ョ ン の 指 定 が 及 ぼ す 効 果 と 同 一 の も の で す 。
−traditional−cpp
伝 統 的 な C プ リ プ ロ セ ッ サ の い く つ か の 特 徴 を サ ポ ー ト し ま す 。 こ れ は 上 に 挙 げ た 中 で 特 に プ リ プ ロ セ ッ サ に 関 係 し た も の を 含 み ま す が 、 ’−traditional’ の 指 定 に よ っ て 引 き 起 こ さ れ る 以 外 の 効 果 を 及 ぼ す こ と は あ り ま せ ん 。
−fdollars−in−identifiers
識 別 子 中 の ’$’ の 使 用 を 許 可 し ま す (C++ の み )。 ’−fno−dollars−in−identifiers’ を 使 用 す る こ と に よ っ て 、 明 示 的 に ’$’の 使 用 を 禁 止 す る こ と も 可 能 で す 。 (GNU C++ で は 、 デ フ ォ ル ト で ’$’ を 許 可 し て い る シ ス テ ム と 禁 止 し て い る シ ス テ ム が あ り ま す )。
−fenum−int−equiv

int か ら 列 挙 型 へ の 暗 黙 の 変 換 を 許 可 し ま す (C++ の み )。 通 常 は GNU C++ は enum か ら int へ の 変 換 は 許 可 し て い ま す が 、 逆 は 許 し て い ま せ ん 。

−fexternal−templates テ ン プ レ ー ト 関 数 に つ い て 、 そ の 関 数 が 定 義 さ れ た 場 所 に の み 単 一 の コ ピ ー を 生 成 す る こ と に よ っ て 、 テ ン プ レ ー ト 宣 言 に 対 し て よ り 小 さ な コ ー ド を 生 成 し ま す (C++ の み )。 こ の オ プ シ ョ ン を 使 用 し て 正 し い コ ー ド を 得 る た め に は 、 テ ン プ レ ー ト を 使 用 す る 全 て の フ ァ イ ル に お い て 、 ’#pragma implementation’ (定 義 ) ま た は ’#pragma interface’ (宣 言 ) を 記 述 し て お く 必 要 が あ り ま す 。

−fexternal−templates’ を 指 定 し て コ ン パ イ ル を 行 な う 場 合 に は 、 全 て の テ ン プ レ ー ト の 実 体 は external と な り ま す 。 全 て の 使 用 さ れ る 実 体 は イ ン プ リ メ ン テ ー シ ョ ン フ ァ イ ル 中 に ま と め て 記 述 し て お か な け れ ば な り ま せ ん 。 こ れ は そ の 必 要 と さ れ る 実 体 に 対 応 し た typedef 宣 言 を 行 な う こ と に よ っ て 実 現 で き ま す 。 逆 に 、 デ フ ォ ル ト の オ プ シ ョ ン ’−fno−external−templates’ で コ ン パ イ ル し た 場 合 に は 全 て の テ ン プ レ ー ト の 実 体 は internal と な り ま す 。

−fall−virtual 可 能 な 限 り 全 て の メ ン バ 関 数 を 暗 黙 の う ち に 仮 想 関 数 と し て 扱 い ま す 。 全 て の メ ン バ 関 数 (コ ン ス ト ラ ク タ と new , delete メ ン バ 演 算 子 を 除 き ま す ) は 、 出 現 し た 時 点 で そ の ク ラ ス の 仮 想 関 数 と し て 扱 わ れ ま す 。 こ れ は 、 こ れ ら の メ ン バ 関 数 へ の 全 て の 呼 び 出 し が 仮 想 関 数 の た め の 内 部 テ ー ブ ル を 参 照 し て 間 接 的 に 決 定 さ れ る と い う こ と を 意 味 し ま せ ん 。 特 定 の 状 況 に お い て は 、 コ ン パ イ ラ は 与 え ら れ た 仮 想 関 数 へ の 呼 び 出 し を 直 接 決 定 で き ま す 。 こ の よ う な 場 合 に は そ の 関 数 呼 び 出 し は 常 に 直 接 呼 び 出 し と な り ま す 。
−fcond−mismatch
条 件 演 算 子 の 第 2, 第 3 引 数 の 型 が 異 な る 記 述 を 許 し ま す 。 こ の よ う な 式 の 型 は void と な り ま す 。
−fthis−is−variable

this へ の 代 入 を 許 可 し ま す (C++ の み )。 ユ ー ザ 定 義 に よ る 記 憶 管 理 が 可 能 と な っ た 現 在 で は 、 ’this’ へ の 代 入 は 時 代 遅 れ の も の と な り ま し た 。 従 っ て デ フ ォ ル ト で は 、 ク ラ ス の メ ン バ 関 数 か ら の this へ の 代 入 は 不 当 な も の と し て 扱 わ れ て い ま す 。 し か し 、 後 方 互 換 性 の た め に 、 ’−fthis-is-variable’ を 指 定 す る こ と に よ っ て こ の 効 果 を 得 る こ と が で き ま す 。

−funsigned−char

char 型 を unsigned char の よ う に 符 号 無 し と し て 扱 い ま す 。 そ れ ぞ れ の マ シ ン に は char が ど ち ら で あ る べ き か と い う デ フ ォ ル ト が あ り ま す 。 デ フ ォ ル ト で unsigned char で あ る こ と も あ れ ば 、 デ フ ォ ル ト で signed char で あ る こ と も あ り ま す 。 理 想 的 に は 、 可 搬 性 の あ る プ ロ グ ラ ム は 、 オ ブ ジ ェ ク ト の 符 号 の 有 無 に 依 存 す る 記 述 を 行 な う 場 合 に は 常 に signed char、 も し く は unsigned char を 使 用 す べ き で す 。 し か し 実 際 に は 多 く の プ ロ グ ラ ム が 単 な る char を 用 い て 記 述 さ れ て お り 、 さ ら に そ の プ ロ グ ラ ム を 記 述 し た 環 境 に 依 存 し て 、 符 号 付 き で あ る 、 あ る い は 符 号 無 し で あ る と い う 暗 黙 の 仮 定 が 行 な わ れ て い ま す 。 こ の オ プ シ ョ ン 、 あ る い は こ の 逆 の オ プ シ ョ ン は 、 デ フ ォ ル ト と 逆 の 動 作 を 行 な わ せ る こ と に よ り 、 こ れ ら の プ ロ グ ラ ム を 正 し く 動 作 さ せ る こ と を 可 能 に し ま す 。

char 型 は 常 に signed char あ る い は unsigned char と は 区 別 さ れ た 型 と し て 扱 わ れ ま す 。 常 に そ れ ら の 振 舞 い が そ の ど ち ら か と 全 く 同 じ で あ る と い う こ と に 関 わ ら ず 、 こ の よ う な 扱 い を 行 い ま す 。

−fsigned−char

char 型 を signed char 型 の よ う に 符 号 付 き と し て 扱 い ま す 。 た だ し 、 こ の オ プ シ ョ ン は ’−fno−unsigned−char’ と 等 価 で す 。 こ れ は ’−funsigned−char’の 否 定 形 で す 。 同 様 に ’−fno−signed−char’ は ’−funsigned−char’ と 等 価 で す 。

−fsigned−bitfields
−funsigned−bitfields
−fno−signed−bitfields
−fno−unsigned−bitfields
こ れ ら の オ プ シ ョ ン は 、 明 示 的 に ’signed’ ま た は ’unsigned’ の 指 定 が 行 な わ れ て い な い ビ ッ ト フ ィ ー ル ド に 対 し て 、 符 号 つ き で あ る か あ る い は 符 号 な し で あ る か を 制 御 し ま す 。 デ フ ォ ル ト で は こ の よ う な ビ ッ ト フ ィ ー ル ド は 符 号 つ き と な っ て い ま す 。 な ぜ な ら 、 int の よ う な 基 本 的 な 型 は 符 号 つ き で あ る と い う 点 で 、 整 合 性 が と れ る か ら で す 。 た だ し 、 ’−traditional’ を 指 定 し た 場 合 は 、 ビ ッ ト フ ィ ー ル ド は 常 に 全 て 符 号 無 し で あ る と さ れ ま す 。
−fwritable−strings
文 字 列 定 数 を 書 き 込 み 可 能 な デ ー タ セ グ メ ン ト に 配 置 し 、 同 内 容 の 文 字 列 を 1 つ の 共 有 オ ブ ジ ェ ク ト に す る 処 理 を 行 い ま せ ん 。 こ れ は 、 文 字 定 数 に 書 き 込 む こ と が で き る こ と を 仮 定 し た 昔 の プ ロ グ ラ ム と の 互 換 性 を と る た め に 提 供 さ れ て い ま す 。 ’−traditional’ オ プ シ ョ ン も 同 様 の 効 果 を 含 み ま す 。 文 字 定 数 に 書 き 込 む と い う 考 え は 非 常 に よ く な い 考 え で す 。 “定 数 ” は ま さ に 定 数 で あ り 、 変 化 す べ き で は あ り ま せ ん 。

プ リ プ ロ セ ッ サ オ プ シ ョ ン

こ れ ら の オ プ シ ョ ン は C プ リ プ ロ セ ッ サ を 制 御 し ま す 。 各 C ソ ー ス フ ァ イ ル は 、 実 際 に コ ン パ イ ル す る 前 に 、 C プ リ プ ロ セ ッ サ に か け ら れ ま す 。

−E’ オ プ シ ョ ン を 使 用 す る と 、 GCC は プ リ プ ロ セ ス 以 外 の 処 理 を 行 い ま せ ん 。 以 下 に 示 す オ プ シ ョ ン の う ち の い く つ か は 、 ’−E’ と 同 時 に 使 用 さ れ た 時 の み 意 味 を も ち ま す 。 な ぜ な ら ば 、 こ れ ら の オ プ シ ョ ン に よ っ て 、 実 際 の コ ン パ イ ル に は 不 適 当 な プ リ プ ロ セ ッ サ 出 力 が 生 成 さ れ る た め で す 。
−include
file

file を 、 通 常 の 入 力 フ ァ イ ル が 処 理 さ れ る 前 に 処 理 し ま す 。 結 果 的 に file に 含 ま れ る 内 容 は 、 一 番 最 初 に コ ン パ イ ル さ れ る こ と に な り ま す 。 コ マ ン ド ラ イ ン に 指 定 さ れ た す べ て の ’−D’ や ’−U’ オ プ シ ョ ン は 、 そ の 記 述 さ れ た 順 番 に 関 わ ら ず 常 に ’−include file’ が 処 理 さ れ る 前 に 処 理 さ れ ま す 。 全 て の ’−include’ や ’−imacros’ オ プ シ ョ ン は 、 そ れ ら が 記 述 さ れ た 順 番 通 り に 処 理 さ れ ま す 。

−imacros file 通 常 の 入 力 フ ァ イ ル を 処 理 す る 前 に file を 入 力 と し て 処 理 し ま す が 、 そ の 結 果 の 出 力 を 捨 て ま す 。 file に よ っ て 生 成 さ れ た 出 力 は 捨 て ら れ る た め 、 ’−imacros file’ の 処 理 結 果 の 影 響 は 、 file 中 に 記 述 さ れ た マ ク ロ が メ イ ン の 入 力 フ ァ イ ル 中 で 使 用 可 能 に な る こ と だ け で す 。 プ リ プ ロ セ ッ サ は 、 ’−imacros file’ が 記 述 さ れ た 順 番 に 関 わ ら ず 、 こ れ を 処 理 す る 前 に 、 コ マ ン ド ラ イ ン か ら 与 え ら れ た 全 て の ’−D’ や ’−U’ オ プ シ ョ ン を 評 価 し ま す 。 全 て の ’−include’ お よ び ’−imacros’ オ プ シ ョ ン は 、 そ れ ら が 記 述 さ れ た 順 番 通 り に 処 理 さ れ ま す 。
−idirafter
dir デ ィ レ ク ト リ dir を 第 2 イ ン ク ル ー ド パ ス に 加 え ま す 。 第 2 イ ン ク ル ー ド パ ス 中 の デ ィ レ ク ト リ は 、 メ イ ン イ ン ク ル ー ド パ ス (オ プ シ ョ ン ’−I’ に よ っ て 追 加 さ れ ま す ) 中 に ヘ ッ ダ フ ァ イ ル を 探 し た 結 果 発 見 で き な か っ た 場 合 に 検 索 さ れ ま す 。
−iprefix
prefix

prefix を 、 そ の 後 に 続 く ’−iwithprefix’ オ プ シ ョ ン 用 の プ レ フ ィ ッ ク ス と し て 使 用 し ま す 。

−iwithprefix dir デ ィ レ ク ト リ を 第 2 イ ン ク ル ー ド パ ス に 追 加 し ま す 。 デ ィ レ ク ト リ 名 は prefixdir を 連 結 す る こ と に よ っ て 得 ら れ ま す 。 こ こ で prefix は 、 ’−iprefix’ オ プ シ ョ ン に よ っ て 指 定 さ れ た も の で す 。
−nostdinc
ヘ ッ ダ フ ァ イ ル の た め の 標 準 の シ ス テ ム デ ィ レ ク ト リ を 検 索 し ま せ ん 。 ’−I’ オ プ シ ョ ン に よ っ て 指 定 し た デ ィ レ ク ト リ (ま た は カ レ ン ト デ ィ レ ク ト リ ) の み を 検 索 し ま す 。

−nostdinc’ と ’−I−’を 使 用 す る こ と に よ り 、 イ ン ク ル ー ド フ ァ イ ル の 検 索 パ ス を 明 示 的 に 指 定 し た デ ィ レ ク ト リ の み に 限 定 す る こ と が 可 能 と な り ま す 。

−nostdinc++ ヘ ッ ダ フ ァ イ ル の 検 索 に 、 C++−固 有 の 標 準 デ ィ レ ク ト リ を 用 い ま せ ん 。 た だ し そ れ 以 外 の 標 準 デ ィ レ ク ト リ は 検 索 さ れ ま す 。 (こ の オ プ シ ョ ン は ’libg++’ の 構 築 に 使 用 さ れ ま す 。 )

−undef 標 準 で な い 定 義 済 み マ ク ロ

(ア ー キ テ ク チ ャ フ ラ グ も 含 め て )を 定 義 し ま

せ ん 。

−E

C プ リ プ ロ セ ッ サ の 処 理 の み を 行 い ま す 。 指 定 さ れ た 全 て の C の ソ ー ス フ ァ イ ル に 対 し て プ リ プ ロ セ ス を 行 な い 、 標 準 出 力 、 ま た は 指 定 さ れ た 出 力 フ ァ イ ル に 対 し て 出 力 を 行 い ま す 。

−C

プ リ プ ロ セ ッ サ に 対 し て コ メ ン ト の 削 除 を 行 な わ な い よ う に 指 示 し ま す 。 ’−E’ オ プ シ ョ ン と と も に 使 用 さ れ ま す 。

−P プ リ プ

ロ セ ッ サ に 対 し て ’#line’ コ マ ン ド を 生 成 し な い よ う に 指 示 し ま す 。 ’−E’ オ プ シ ョ ン と と も に 使 用 さ れ ま す 。

−M  [ −MG ] プ リ プ ロ セ ッ サ に 対 し て make で 使 用 可 能 な 、 オ ブ ジ ェ ク ト 間 の 依 存 関 係 を 記 述 し た 出 力 を 生 成 す る よ う に 指 示 し ま す 。 そ れ ぞ れ の ソ ー ス フ ァ イ ル に 対 し て 、 プ リ プ ロ セ ッ サ は make の た め の 規 則 を 1 つ 出 力 し ま す 。 こ の 出 力 は 、 タ ー ゲ ッ ト と し て そ の ソ ー ス フ ァ イ ル か ら 生 成 さ れ る オ ブ ジ ェ ク ト フ ァ イ ル の フ ァ イ ル 名 を と り 、 依 存 す る フ ァ イ ル の リ ス ト と し て は ’#include’ に よ っ て ソ ー ス フ ァ イ ル に 読 み 込 ま れ る 全 て の フ ァ イ ル の 名 前 が 並 び ま す 。 こ の 規 則 は 1 行 、 あ る い は 長 い 場 合 に は ’\’ と 改 行 を 入 れ て 複 数 行 で 出 力 さ れ ま す 。 こ の 規 則 の リ ス ト は 、 プ リ プ ロ セ ス 済 み の C プ ロ グ ラ ム の か わ り に 、 標 準 出 力 へ と 出 力 さ れ ま す 。

−M’ は 暗 黙 の う ち に ’−E’ を 含 み ま す 。

−MG’ を 指 定 す る と 、 見 つ か ら な い ヘ ッ ダ フ ァ イ ル は 生 成 さ れ た フ ァ イ ル で あ り 、 そ れ ら は ソ ー ス フ ァ イ ル と 同 じ デ ィ レ ク ト リ に 存 在 す る と み な し ま す 。 こ れ は ’−M’ と 同 時 に 指 定 し な け れ ば な り ま せ ん 。

−MM  [ −MG ]

−M’ と 似 て い ま す が 、 ’#include "file"’に よ っ て イ ン ク ル ー ド さ れ る ユ ー ザ 定 義 の ヘ ッ ダ フ ァ イ ル の み を 対 象 に し た 出 力 フ ァ イ ル を 生 成 し ま す 。 ’#include <file>’ に よ っ て イ ン ク ル ー ド さ れ る シ ス テ ム ヘ ッ ダ フ ァ イ ル は 省 略 さ れ ま す 。

−MD

−M’ と 似 て い ま す が 、 依 存 情 報 は 出 力 フ ァ イ ル 名 の 最 後 の ’.o’ を ’.d’ に 置 き 換 え た フ ァ イ ル 名 の フ ァ イ ル に 対 し て 出 力 さ れ ま す 。 ’−MD’ を 指 定 し た フ ァ イ ル の コ ン パ イ ル も こ れ に 加 え て 行 な わ れ 、 ’−M’ の よ う に 通 常 の コ ン パ イ ル を 抑 制 す る こ と は あ り ま せ ん 。

Mach の ユ ー テ ィ リ テ ィ で あ る ’md’ は 、 こ れ ら の 複 数 の ’.d’ フ ァ イ ル を ’make’ コ マ ン ド に よ っ て 使 用 で き る 単 一 の 依 存 記 述 フ ァ イ ル へ と マ ー ジ す る の に 使 用 す る こ と が で き ま す 。

−MMD

−MD’ と 似 て い ま す が 、 ユ ー ザ ヘ ッ ダ フ ァ イ ル の み を 対 象 と し 、 シ ス テ ム ヘ ッ ダ フ ァ イ ル を 無 視 し ま す 。

−H

通 常 の 動 作 に 加 え て 、 使 用 さ れ た ヘ ッ ダ フ ァ イ ル の 名 前 を 表 示 し ま す 。

−Aquestion(answer)

questionに 対 す る ア サ ー シ ョ ン answer を 定 義 し ま す 。 こ れ は ’#if #question(answer)’ の よ う な プ リ プ ロ セ ッ サ 条 件 節 に よ っ て テ ス ト さ れ ま す 。 ’−A−’ は 標 準 の ア サ ー シ ョ ン (通 常 は タ ー ゲ ッ ト マ シ ン に 関 す る 情 報 を 表 し て い る )を 禁 止 し ま す 。

−Dmacro マ ク ロ macro に 対 し て 文 字 列 ’1’ を 定 義 と し て 与 え ま す 。
−D
macro=defn マ ク ロ macrodefn と し て 定 義 し ま す 。 コ マ ン ド ラ イ ン 上 の 全 て の ’−D’ オ プ シ ョ ン は ’−U’ オ プ シ ョ ン の 処 理 を 行 な う 前 に 処 理 さ れ ま す 。
−U
macro マ ク ロ macro の 定 義 を 無 効 に し ま す 。 ’−U’ オ プ シ ョ ン は 全 て の ’−D’ オ プ シ ョ ン の 処 理 が 終 了 し た 後 、 ’−include’ と ’−imacros’ オ プ シ ョ ン の 処 理 の 前 に 処 理 さ れ ま す 。

−dM プ リ プ ロ セ ッ サ に 対 し て 、 プ リ プ ロ セ ス 終 了 時 に 有 効 で あ っ た マ ク ロ の 定 義 の み を 出 力 す る よ う に 指 示 し ま す 。

−E’ オ プ シ ョ ン と と も に 使 用 し ま す 。

−dD プ リ プ ロ セ ッ サ に 対 し て 、 全 て の マ ク ロ 定 義 を 適 切 な 順 番 で 出 力 中 に そ の ま ま 出 力 す る よ う に 指 示 し ま す 。

−dN

−dD’ と 似 て い ま す が 、 マ ク ロ の 引 数 と 内 容 を 削 除 し ま す 。 出 力 に は ’#define name’ の み が 含 ま れ ま す 。

ア セ ン ブ ラ オ プ シ ョ ン

−Wa,option

option を ア セ ン ブ ラ に 対 す る オ プ シ ョ ン と し て 渡 し ま す 。 option が コ ン マ を 含 む 場 合 は 、 そ の コ ン マ で 区 切 ら れ た 複 数 の オ プ シ ョ ン と し て 与 え ら れ ま す 。

リ ン カ オ プ シ ョ ン

こ れ ら の オ プ シ ョ ン は 、 コ ン パ イ ラ が オ ブ ジ ェ ク ト フ ァ イ ル 群 を リ ン ク し て 1 つ の 実 行 可 能 フ ァ イ ル を 出 力 す る 際 に 使 用 さ れ る も の で す 。 こ れ ら は コ ン パ イ ラ が リ ン ク ス テ ッ プ を 行 な わ な い 場 合 に は 意 味 を 持 ち ま せ ん 。

object-file-name 特 別 に 認 識 さ れ る 拡 張 子 で 終 っ て い な い フ ァ イ ル 名 は 、 オ ブ ジ ェ ク ト フ ァ イ ル 、 ま た は ラ イ ブ ラ リ で あ る と 認 識 さ れ ま す 。 (オ ブ ジ ェ ク ト フ ァ イ ル と ラ イ ブ ラ リ は リ ン カ が そ の 内 容 を 参 照 す る こ と で 区 別 さ れ ま す 。 ) GCC が リ ン ク ス テ ッ プ を 行 な う 場 合 は 、 こ れ ら の フ ァ イ ル は リ ン カ へ の 入 力 と し て 使 用 さ れ ま す 。
−l
library 名 前 が library で あ る ラ イ ブ ラ リ を リ ン ク 時 に 使 用 し ま す 。 リ ン カ は 、 標 準 の ラ イ ブ ラ リ 用 デ ィ レ ク ト リ の リ ス ト 中 か ら 、 実 際 の フ ァ イ ル 名 が ’liblibrary.a’ で あ る フ ァ イ ル を 検 索 し ま す 。 リ ン カ は こ の フ ァ イ ル を 、 フ ァ イ ル 名 で 直 接 指 定 し た 場 合 と 同 様 に 使 用 し ま す 。 検 索 す る デ ィ レ ク ト リ に は 、 い く つ か の 標 準 シ ス テ ム デ ィ レ ク ト リ と 、 ’−L’ に よ っ て 指 定 し た デ ィ レ ク ト リ が 含 ま れ ま す 。 通 常 、 こ の 方 法 で 発 見 さ れ る フ ァ イ ル は ラ イ ブ ラ リ フ ァ イ ル 、 つ ま り い く つ か の オ ブ ジ ェ ク ト フ ァ イ ル を メ ン バ と し て 含 む ア ー カ イ ブ フ ァ イ ル で す 。 リ ン カ は 、 ア ー カ イ ブ フ ァ イ ル の 中 を 検 索 し て 、 参 照 さ れ て い る が 定 義 さ れ て い な い シ ン ボ ル を 定 義 し て い る メ ン バ を 探 し 出 し ま す 。 し か し 、 も し リ ン カ が ラ イ ブ ラ リ で な く 通 常 の オ ブ ジ ェ ク ト フ ァ イ ル を 発 見 し た 場 合 は 、 そ の オ ブ ジ ェ ク ト フ ァ イ ル を 通 常 の 方 法 で リ ン ク し ま す 。 ’−l’ オ プ シ ョ ン を 使 用 す る 場 合 と フ ァ イ ル 名 を 直 接 指 定 す る 場 合 の 違 い は 、 ’−l’ の 場 合 が library を ’lib’ と ’.a’ で 囲 み 、 い く つ も の デ ィ レ ク ト リ を 検 索 す る こ と だ け で す 。

−lobjc

Objective C の プ ロ グ ラ ム を リ ン ク す る 場 合 は 、 こ の 特 別 な −l オ プ シ ョ ン を 指 定 す る 必 要 が あ り ま す 。

−nostartfiles リ ン ク 時 に 、 標 準 の シ ス テ ム ス タ ー ト ア ッ プ フ ァ イ ル を 使 用 し ま せ ん 。 標 準 ラ イ ブ ラ リ は 通 常 通 り に 使 用 さ れ ま す 。
−nostdlib
リ ン ク 時 に 、 標 準 の シ ス テ ム ラ イ ブ ラ リ と ス タ ー ト ア ッ プ フ ァ イ ル を 使 用 し ま せ ん 。 指 定 し た フ ァ イ ル の み が リ ン カ に 渡 さ れ ま す 。
−static
ダ イ ナ ミ ッ ク リ ン ク を サ ポ ー ト す る シ ス テ ム に お い て 、 こ の オ プ シ ョ ン は 共 有 ラ イ ブ ラ リ と の リ ン ク を 抑 制 し ま す 。 そ れ 以 外 の シ ス テ ム で は こ の オ プ シ ョ ン は 意 味 を 持 ち ま せ ん 。
−shared
他 の オ ブ ジ ェ ク ト と リ ン ク し て 実 行 可 能 プ ロ グ ラ ム を 形 成 し 得 る 共 有 オ ブ ジ ェ ク ト を 生 成 し ま す 。 ご く 少 数 の シ ス テ ム で の み 、 こ の オ プ シ ョ ン は サ ポ ー ト さ れ て い ま す 。
−symbolic
共 有 オ ブ ジ ェ ク ト を 構 築 す る 際 に 、 グ ロ ー バ ル な シ ン ボ ル へ の 参 照 を バ イ ン ド し ま す 。 全 て の 解 決 で き な か っ た 参 照 に 対 し て 警 告 を 与 え ま す (た だ し リ ン ク エ デ ィ タ オ プ シ ョ ン ’−Xlinker −z −Xlinker defs’ に よ っ て こ れ を 無 効 化 し た 場 合 を 除 き ま す )。 ご く 少 数 の シ ス テ ム で の み 、 こ の オ プ シ ョ ン は サ ポ ー ト さ れ て い ま す 。
−Xlinker
option オ プ シ ョ ン option を リ ン カ に 対 し て 渡 し ま す 。 リ ン カ に 渡 す シ ス テ ム 固 有 の オ プ シ ョ ン が 、 GNU CC が 理 解 で き な い も の で あ る 場 合 に 利 用 で き ま す 。 引 数 を 持 っ た オ プ シ ョ ン を 渡 し た い 場 合 は 、 ’−Xlinker’ を 2 度 使 用 す れ ば 可 能 で す 。 1 度 目 で オ プ シ ョ ン を 渡 し 、 2 度 目 で 引 数 を 渡 し ま す 。 例 え ば ’−assert definitions’ を 渡 す に は 、 ’−Xlinker −assert −Xlinker definitions’ の よ う に 記 述 す れ ば 可 能 で す 。 ’−Xlinker "−assert definitions"’ の よ う に 指 定 し た 場 合 は 正 常 に 動 作 し ま せ ん 。 な ぜ な ら こ れ は 、 文 字 列 全 体 を 1 つ の 引 数 と し て 渡 し て し ま い 、 リ ン カ の 期 待 す る 形 式 と 異 な っ て し ま う か ら で す 。
−Wl,
option オ プ シ ョ ン option を リ ン カ に 渡 し ま す 。 option が コ ン マ を 含 む 場 合 は 、 そ れ ら の コ ン マ で 複 数 の オ プ シ ョ ン と し て 分 割 さ れ ま す 。
−u
symbol シ ン ボ ル symbol が 未 定 義 で あ る か の よ う に 振 舞 い ま す 。 こ れ は 強 制 的 に こ の シ ン ボ ル を 定 義 し て い る ラ イ ブ ラ リ モ ジ ュ ー ル を リ ン ク す る た め に 使 用 し ま す 。 ’−u’ は 異 な っ た シ ン ボ ル に 対 し て 複 数 回 使 用 す る こ と が で き ま す 。 こ れ に よ っ て 、 さ ら に 多 く の ラ イ ブ ラ リ モ ジ ュ ー ル を 読 み 込 ま せ る こ と が で き ま す 。

デ ィ レ ク ト リ オ プ シ ョ ン

こ れ ら の オ プ シ ョ ン は 、 ヘ ッ ダ フ ァ イ ル 、 ラ イ ブ ラ リ 、 コ ン パ イ ラ の 一 部 を 検 索 す る デ ィ レ ク ト リ を 指 定 す る た め に 使 用 さ れ ま す 。

−Idir デ ィ レ ク ト リ

dir を 、 イ ン ク ル ー ド フ ァ イ ル の 検 索 す る デ ィ レ ク ト リ

の リ ス ト 中 に 追 加 し ま す 。

−I−

−I−’ オ プ シ ョ ン 指 定 前 に ’−I’ オ プ シ ョ ン に よ っ て 指 定 さ れ た 全 て の デ ィ レ ク ト リ は 、 ’#include "file"’ の 形 式 に よ っ て の み 検 索 さ れ ま す 。 こ れ ら の デ ィ レ ク ト リ は ’#include <file>’ に よ っ て は 検 索 さ れ ま せ ん 。

−I−’ オ プ シ ョ ン 指 定 後 に ’−I’ で 指 定 し た デ ィ レ ク ト リ は 、 全 て の ’#include’ 命 令 に よ っ て 検 索 さ れ ま す 。 (通 常 は 全 て の−I’ で 指 定 さ れ た デ ィ レ ク ト リ は こ の 方 法 で 検 索 さ れ ま す 。 ) こ れ に 加 え て ’−I−’ オ プ シ ョ ン は 、 カ レ ン ト デ ィ レ ク ト リ (現 在 の 入 力 フ ァ イ ル が 存 在 す る デ ィ レ ク ト リ ) が ’#include "file"’ に 対 す る 最 初 の 検 索 対 象 と な る こ と を 抑 制 し ま す 。 ’−I−’ に よ る こ の 効 果 を 上 書 き す る 方 法 は あ り ま せ ん 。 ’−I.’ を 指 定 す る こ と に よ っ て 、 コ ン パ イ ラ が 起 動 さ れ た デ ィ レ ク ト リ が 検 索 さ れ る こ と を 指 定 す る こ と は 可 能 で す 。 こ れ は プ リ プ ロ セ ッ サ が 行 な う デ フ ォ ル ト の 動 作 と は 異 な り ま す が 、 た い て い は こ れ で 十 分 で す 。

−I−’ は 、 ヘ ッ ダ フ ァ イ ル の 検 索 に 標 準 の シ ス テ ム デ ィ レ ク ト リ を 使 う こ と を 抑 制 す る わ け で は あ り ま せ ん 。 従 っ て 、 ’−I−’ と ’−nostdinc’ は 独 立 で す 。

−Ldir デ ィ レ ク ト リ

dir を ’−l’ に よ る 検 索 が 行 な わ れ る デ ィ レ ク ト リ の リ ス

ト に 加 え ま す 。

−Bprefix こ の オ プ シ ョ ン は コ ン パ イ ラ 自 身 の 実 行 形 式 、 ラ イ ブ ラ リ 、 デ ー タ フ ァ イ ル の 検 索 場 所 を 指 定 し ま す 。 コ ン パ イ ラ ド ラ イ バ は サ ブ プ ロ グ ラ ム ’cpp’, ’cc1’ (ま た は C++ に お い て は ’cc1plus’), ’as’, そ し て ’ld’ を 1 つ 、 あ る い は そ れ 以 上 起 動 し ま す 。 コ ン パ イ ラ ド ラ イ バ は 、 起 動 す る プ ロ グ ラ ム の プ レ フ ィ ッ ク ス と し て prefix に ’machine/version/’ を つ け た も の と つ け な い も の の 双 方 を 使 用 し ま す 。 コ ン パ イ ラ ド ラ イ バ は 各 サ ブ プ ロ グ ラ ム の 起 動 時 に 、 ’−B’ プ レ フ ィ ッ ク ス の 指 定 が あ る 場 合 は 、 そ れ を 最 初 に 利 用 し ま す 。 も し そ の 名 前 が 見 つ か ら な け れ ば 、 ま た は ’−B’ が 指 定 さ れ て い な け れ ば 、 ド ラ イ バ は 2 つ の 標 準 プ レ フ ィ ッ ク ス ’/usr/lib/gcc/’ と ’/usr/local/lib/gcc-lib/’ を 試 し ま す 。 こ の ど ち ら に も 見 つ か ら な け れ ば 、 コ ン パ イ ラ ド ラ イ バ は 、 環 境 変 数 ’PATH’ の デ ィ レ ク ト リ リ ス ト を 利 用 し て 、 そ の プ ロ グ ラ ム 名 を 検 索 し ま す 。 ラ ン タ イ ム サ ポ ー ト フ ァ イ ル ’libgcc.a’ も 、 必 要 な ら ば ’−B’ プ レ フ ィ ッ ク ス を 用 い て 検 索 さ れ ま す 。 も し そ こ に 見 つ か ら な け れ ば 、 前 記 2 つ の 標 準 プ レ フ ィ ッ ク ス が 試 み ら れ ま す が 、 そ れ で 終 り で す 。 こ の 場 合 は リ ン ク の 対 象 か ら 外 さ れ ま す 。 ほ と ん ど の 場 合 、 ま た ほ と ん ど の マ シ ン で は 、 ’libgcc.a’ は 実 際 に は 必 要 で は あ り ま せ ん 。 こ れ と 同 じ 効 果 を 、 環 境 変 数 GCC_EXEC_PREFIX に よ っ て も 得 る こ と が で き ま す 。 も し こ の 環 境 変 数 が 定 義 さ れ て い れ ば 、 こ の 値 が プ レ フ ィ ッ ク ス と し て 同 様 に 使 用 さ れ ま す 。 も し ’−B’ オ プ シ ョ ン と GCC_EXEC_PREFIX 環 境 変 数 の 双 方 が 存 在 し た 場 合 は 、 ’−B’ オ プ シ ョ ン が 最 初 に 使 用 さ れ 、 環 境 変 数 は 次 に 使 用 さ れ ま す 。

警 告 オ プ シ ョ ン

警 告 は 、 本 質 的 に 間 違 い で あ る わ け で は あ り ま せ ん が 、 危 険 な 構 造 を 報 告 し た り 、 エ ラ ー が あ る か も し れ な い よ う な 部 分 を 示 唆 す る 診 断 メ ッ セ ー ジ で す 。 以 下 の オ プ シ ョ ン は 、 GNU CC が 生 成 す る 警 告 の 量 と 種 類 を 制 御 し ま す 。

−fsyntax−only コ ー ド の 文 法 エ ラ ー を チ ェ ッ ク し ま す が 、 一 切 出 力 は 行 い ま せ ん 。

−w 全 て の 警 告 メ ッ セ ー ジ を 抑 制 し ま す 。

−Wno−import

#import の 利 用 に よ る 警 告 メ ッ セ ー ジ を 抑 制 し ま す 。

−pedantic 厳 密 な ANSI 標 準 C 言 語 で 規 定 し て い る 全 て の 警 告 を 表 示 し 、 許 さ れ て い な い 拡 張 を 使 用 し た プ ロ グ ラ ム を 全 て 拒 否 し ま す 。 正 当 な ANSI 標 準 C プ ロ グ ラ ム は 、 こ の オ プ シ ョ ン の 有 無 に 関 わ ら ず コ ン パ イ ル で き る べ き で す (も っ と も 、 ほ ん の わ ず か で は あ り ま す が ’−ansi’ を 必 要 と す る も の は あ り ま す )。 し か し 、 こ の オ プ シ ョ ン を 使 用 し な い 場 合 、 GNU 拡 張 や 伝 統 的 な C の 特 徴 も 、 こ れ に 加 え て サ ポ ー ト さ れ ま す 。 こ の オ プ シ ョ ン を 使 用 す れ ば 、 そ れ ら は 拒 絶 さ れ ま す 。 こ の オ プ シ ョ ン を 使 う 理 由 は あ り ま せ ん が 、 こ だ わ り の あ る 人 々 を 満 足 さ せ る た め に の み 存 在 し て い ま す 。

−pedantic’ は 、 始 ま り と 終 り と が ’__’ で あ る 代 替 キ ー ワ ー ド の 使 用 に つ い て は 、 警 告 し ま せ ん 。 同 様 に __extension__ に 続 く 表 現 に つ い て も 警 告 し ま せ ん 。 し か し 、 シ ス テ ム ヘ ッ ダ フ ァ イ ル の み が こ の 抜 け 道 を 使 用 す べ き で あ り 、 ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム は こ れ を 避 け る べ き で す 。

−pedantic−errors

−pedantic’ と 似 て い ま す が 、 警 告 の か わ り に エ ラ ー を 出 し ま す 。

−W 以 下 の イ ベ ン ト に 対 し て 、 特 別 な 警 告 メ ッ セ ー ジ を 表 示 し ま す 。

    •

volatile で な い 自 動 変 数 が longjmp の 呼 び 出 し に よ っ て 変 更 さ れ 得 る 場 合 で す 。 こ れ ら の 警 告 は 、 最 適 化 コ ン パ イ ル の 時 の み 問 題 に な り 得 ま す 。 コ ン パ イ ラ は setjmp の 呼 び 出 し の み を 見 て い ま す 。 コ ン パ イ ラ は 、 ど こ で longjmp が 呼 び 出 さ れ る か を 知 る こ と は で き ま せ ん 。 実 際 に は 、 シ グ ナ ル ハ ン ド ラ は コ ー ド 中 の 任 意 の 場 所 で longjmp を 呼 び 出 す こ と が で き ま す 。 従 っ て 、 実 際 に は longjmp へ の 呼 び 出 し が 危 険 な 部 分 か ら は お こ な わ れ て い な い た め に 問 題 の な い プ ロ グ ラ ム で あ っ て も 、 警 告 が 発 せ ら れ る こ と に な り ま す 。

    • 関 数 が 、 値 を 伴 っ て リ タ ー ン す る 場 合 と 、 値 を 伴 わ ず に リ タ ー ン す る 場 合 の 両 方 が 起 こ り う る 場 合 で す 。

(関 数 の 最 後 を 抜 け て い く こ と は 、 値 を 伴 わ ず に 関 数 を リ タ ー ン す る と み な さ れ ま す 。 ) 例 え ば 、 次 の 関 数 が こ の 種 類 の 警 告 を 引 き 起 こ し ま す 。

foo (a)
{
if (a > 0)
return a; } あ る 関 数 (abortlongjmp を 含 む ) が 決 し て リ タ ー ン し な い と い う こ と を GNU CC が 理 解 で き な い た め に 、 に せ の 警 告 が 発 生 す る か も し れ ま せ ん 。

    • 式 文

(expression-statement) ま た は コ ン マ 式 の 左 部 分 が 一 切 の 副 作

用 を 含 ま な い 場 合 で す 。 警 告 を 抑 制 す る に は 、 使 用 し な い 式 を void に キ ャ ス ト し て 下 さ い 。 例 え ば ’x[i,j]’ と い っ た 式 は 警 告 さ れ ま す が 、 ’x[(void)i,j]’ は 警 告 さ れ ま せ ん 。

    • 符 号 無 し の 値 が

0 と ’>’ ま た は ’<=’ で 比 較 さ れ る 場 合 で す 。

−Wimplicit-int 型 を 指 定 し て い な い 宣 言 に 対 し て 警 告 し ま す 。
−Wimplicit-function-declaration
宣 言 に 先 立 っ て 用 い ら れ た 関 数 に 対 し て 警 告 し ま す 。
−Wimplicit

-Wimplicit-int お よ び -Wimplicit-function-declaration と 同 じ で す 。

−Wmain

main 関 数 が 不 審 な 型 で 宣 言 あ る い は 定 義 さ れ て い る 場 合 に 警 告 し ま す 。 通 常 、 main は 外 部 リ ン ケ ー ジ を 持 ち 、 int を 返 し 、 0 個 ま た は 2 個 の 引 数 を と る 関 数 で す 。

−Wreturn−type 関 数 の 戻 り 値 の 型 が 、 デ フ ォ ル ト で あ る int に 定 義 さ れ た 時 に 常 に 警 告 し ま す 。 ま た 、 戻 り 値 の 型 が voidで な い 関 数 内 に 、 戻 り 値 の な い return 文 が あ る 場 合 に も 常 に 警 告 し ま す 。
−Wunused
ロ ー カ ル 変 数 が 宣 言 さ れ た に も 関 わ ら ず 使 用 さ れ て い な い 場 合 、 静 的 に 宣 言 さ れ た 関 数 の 実 体 が 定 義 さ れ て い な い 場 合 、 計 算 結 果 が 明 ら か に 利 用 さ れ て い な い 場 合 に 常 に 警 告 し ま す 。
−Wswitch

switch 文 が イ ン デ ッ ク ス と し て 列 挙 型 を と っ て い る 時 、 そ の 列 挙 型 中 の い く つ か の 値 に 対 す る case が 欠 け て い る 場 合 に 常 に 警 告 し ま す 。 (default ラ ベ ル が 存 在 す る 場 合 、 こ の 警 告 は 出 ま せ ん 。 ) こ の オ プ シ ョ ン を 使 用 し た 場 合 に は 、 列 挙 型 の 範 囲 を 越 え た case ラ ベ ル も 、 常 に 警 告 さ れ ま す 。

−Wcomment コ メ ン ト の 開 始 文 字 列 ’/∗’ が コ メ ン ト 中 に 現 れ た 時 に 常 に 警 告 し ま す 。
−Wtrigraphs
ト ラ イ グ ラ フ の 出 現 を 常 に 警 告 し ま す (ト ラ イ グ ラ フ が 使 用 可 能 で あ る と 仮 定 し ま す )。
−Wformat

printf, scanf な ど へ の 呼 び 出 し に 対 し て 、 与 え ら れ た 引 数 が 、 フ ォ ー マ ッ ト 文 字 列 の 指 定 を 満 足 す る 型 を 持 っ て い る か を 検 査 し ま す 。

−Wchar−subscripts 配 列 の 添 字 の 型 が char で あ っ た 場 合 に 警 告 し ま す 。 こ れ は よ く あ る 間 違 い の も と で す 。 い く つ か の マ シ ン に お い て は こ の 型 が 符 号 付 き で あ る こ と を 、 プ ロ グ ラ マ は し ば し ば 忘 れ て し ま い ま す 。
−Wuninitialized
初 期 化 さ れ て い な い 自 動 変 数 が 使 用 さ れ て い ま す 。 こ れ ら の 警 告 は 、 最 適 化 コ ン パ イ ル を 行 な う 時 の み 発 生 し ま す 。 な ぜ な ら 、 コ ン パ イ ラ は 最 適 化 を 行 な う 時 に の み デ ー タ フ ロ ー 情 報 を 必 要 と す る か ら で す 。 も し ’−O’ を 指 定 し な か っ た 場 合 は 、 こ の 警 告 を 得 る こ と は で き ま せ ん 。 こ れ ら の 警 告 は 、 レ ジ ス タ 割 り 当 て の 対 象 と な っ た 変 数 に つ い て の み 発 生 し ま す 。 従 っ て 、 volatile で あ る と 宣 言 さ れ た 変 数 や 、 ア ド レ ス 上 に 割 り 当 て ら れ た 変 数 、 サ イ ズ が 1, 2, 4, 8 バ イ ト 以 外 の 変 数 に 関 し て は こ れ ら の 警 告 は 発 生 し ま せ ん 。 さ ら に 、 構 造 体 、 共 用 体 、 配 列 に つ い て は 、 た と え そ れ ら が レ ジ ス タ に 割 り 当 て ら れ た と し て も 、 こ れ ら の 警 告 は 発 生 し ま せ ん 。 あ る 変 数 に よ っ て 計 算 さ れ た 値 が 結 局 使 用 さ れ な い よ う な 変 数 に つ い て は 、 一 切 の 警 告 が 生 じ な い こ と に 注 意 し て 下 さ い 。 こ の よ う な 計 算 は 、 警 告 が 表 示 さ れ る 前 に デ ー タ フ ロ ー 解 析 に よ っ て 削 除 さ れ ま す 。 こ れ ら の 警 告 を オ プ シ ョ ン に し た 理 由 の 一 つ は 、 GNU CC が ま だ あ ま り 賢 く な く て 、 あ る コ ー ド が 一 見 間 違 い を 含 む か の よ う に 見 え て も そ れ は 実 は 正 し い も の か も し れ な い 、 と い う こ と を GNU CC が 理 解 で き な い 、 と い う も の で す 。 こ こ に そ の 1 つ の 例 を 挙 げ ま す 。

{
int x;
switch (y)
{
case 1: x = 1;
break;
case 2: x = 4;
break;
case 3: x = 5; }
foo (x); } も し y の 値 が 常 に 1, 2 あ る い は 3 で あ る 限 り は x は 常 に 初 期 化 さ れ ま す 。 し か し GNU CC は こ れ を 知 る こ と は で き ま せ ん 。 も う 1 つ の 一 般 的 な 例 を 挙 げ ま す 。

{
int save_y;
if (change_y) save_y = y, y = new_y;
...
if (change_y) y = save_y; } こ れ は バ グ を 含 み ま せ ん 。 な ぜ な ら save_y は 、 そ の 値 が 設 定 さ れ た 時 の み 使 用 さ れ る か ら で す 。 い く つ か の に せ の 警 告 は 、 使 用 し て い る 決 し て リ タ ー ン し な い 関 数 全 て に 対 し て volatile と 宣 言 す る こ と に よ っ て 防 ぐ こ と が 可 能 で す 。

−Wparentheses あ る 特 定 の 文 脈 中 で 括 弧 が 省 略 さ れ て い た 場 合 に 警 告 し ま す 。
−Wtemplate−debugging

C++ プ ロ グ ラ ム に お い て テ ン プ レ ー ト を 使 用 し て い る 際 に 、 デ バ ッ グ が 完 全 に 可 能 で な い 場 合 を 警 告 し ま す (C++ の み )。

−Wall 全 て の 上 に 挙 げ た

−W’ オ プ シ ョ ン を 結 合 し た も の で す 。 こ れ ら の オ プ

シ ョ ン は 全 て 、 た と え マ ク ロ と の 組 み 合 わ せ で あ っ て も 、 避 け た ほ う が い い と 我 々 が 推 奨 す る 用 法 や 、 簡 単 に 避 け る こ と が で き る と 我 々 が 信 じ て い る 用 法 に 関 す る も の で す 。 残 り の ’−W...’ オ プ シ ョ ン は ’−Wall’ に よ っ て は 暗 黙 の う ち に 指 定 さ れ ま せ ん 。 な ぜ な ら こ れ ら は 、 ク リ ー ン な プ ロ グ ラ ム に お い て も 、 あ る 状 況 に お い て は 使 用 す る こ と が 妥 当 で あ る と 我 々 が 考 え る 構 造 に つ い て の 警 告 を 行 な う オ プ シ ョ ン だ か ら で す 。

−Wtraditional 伝 統 的 な C と ANSI C に お い て 異 な っ た 振 舞 い を す る 特 定 の 構 造 に つ い て 警 告 し ま す 。

    • マ ク ロ 引 数 が マ ク ロ 本 体 内 の 文 字 列 定 数 に 現 れ る も の で す 。 こ れ は 、 伝 統 的 な

C に お い て は そ の 引 数 で 置 換 し ま し た が 、 ANSI C に お い て は 定 数 の 一 部 と し て 扱 わ れ ま す 。

    • ブ ロ ッ ク 内 で 外 部 宣 言 で あ る と 宣 言 さ れ 、 か つ そ の ブ ロ ッ ク の 終 端 の 後 で 使 用 さ れ て い る 関 数 で す 。

    • オ ペ ラ ン ド と し て

long 型 を と る switch 文 で す 。
−Wshadow
ロ ー カ ル 変 数 が 他 の ロ ー カ ル 変 数 を 隠 し て い る 時 に 常 に 警 告 し ま す 。
−Wid−clash−
len

2 つ の 全 く 別 の 識 別 子 の 最 初 の len 文 字 が 一 致 し た 時 に 警 告 し ま す 。 こ れ は あ る 種 の 旧 式 な お ば か さ ん コ ン パ イ ラ で コ ン パ イ ル さ れ 得 る プ ロ グ ラ ム を 作 る 場 合 に 役 に 立 ち ま す 。

−Wpointer−arith 関 数 型 や void の “サ イ ズ ” に 依 存 す る も の を 全 て 警 告 し ま す 。 GNU C は こ れ ら に 対 し て 、 サ イ ズ 1 を 割 り 当 て て い ま す 。 こ れ は void ∗ ポ イ ン タ と 関 数 へ の ポ イ ン タ に お け る 計 算 を 簡 便 に す る た め で す 。
−Wcast−qual
ポ イ ン タ が 、 型 修 飾 子 が 削 除 さ れ る よ う に キ ャ ス ト さ れ る 全 て の 場 合 に 警 告 し ま す 。 例 え ば const char ∗ を 普 通 の char ∗ に キ ャ ス ト し た 場 合 に 警 告 が な さ れ ま す 。
−Wcast−align
ポ イ ン タ の キ ャ ス ト に お い て 、 そ の タ ー ゲ ッ ト に 要 求 さ れ る 境 界 条 件 が 大 き く な る よ う な キ ャ ス ト を 全 て 警 告 し ま す 。 例 え ば char ∗int ∗ へ と キ ャ ス ト さ れ る と 、 整 数 が 2、 あ る い は 4 バ イ ト 境 界 で し か ア ク セ ス で き な い マ シ ン に お い て は 警 告 が 発 せ ら れ ま す 。
−Wwrite−strings
文 字 定 数 に 対 し て 、 型 const char[length] を 与 え 、 非 -constchar ∗ ポ イ ン タ へ の ア ド レ ス の コ ピ ー に 対 し て 警 告 す る よ う に し ま す 。 こ の 警 告 は 、 宣 言 と プ ロ ト タ イ プ に お い て const の 使 用 を 非 常 に 注 意 深 く お こ な っ て い さ え す れ ば 、 文 字 列 定 数 に 書 き 込 み を し そ う な コ ー ド を コ ン パ イ ル 時 に 発 見 す る こ と を 助 け ま す が 、 そ う で な い 場 合 は 有 害 無 益 な 指 定 で す 。 こ れ が 、 我 々 が こ の 警 告 を ’−Wall’ の リ ク エ ス ト に 含 め な か っ た 理 由 で す 。
−Wconversion
同 じ 引 数 が 与 え ら れ た 時 に 、 プ ロ ト タ イ プ が 存 在 す る 場 合 と プ ロ ト タ イ プ が 存 在 し な い 場 合 と で 、 異 な っ た 型 変 換 を 引 き 起 こ す 場 合 に つ い て 警 告 し ま す 。 こ れ は 固 定 小 数 点 か ら 浮 動 小 数 点 へ の 変 換 や そ の 逆 、 デ フ ォ ル ト の 動 作 と 異 な る 固 定 小 数 点 引 数 の 幅 や 符 号 の 有 無 の 変 換 が 含 ま れ ま す 。
−Waggregate−return
構 造 体 や 共 用 体 を 返 す 関 数 を 定 義 し た 場 合 や 、 そ れ ら を 呼 び 出 す 全 て の 場 合 に 警 告 し ま す 。 (配 列 を 返 す こ と が で き る 言 語 に お い て も 、 こ れ は 警 告 を 引 き 起 こ し ま す 。 )
−Wstrict−prototypes
引 数 の 型 を 指 定 せ ず に 関 数 を 宣 言 、 あ る い は 定 義 し た 場 合 に 警 告 し ま す 。 (以 前 に 引 数 の 型 を 指 定 し た 宣 言 が 存 在 す る 場 合 に は 、 旧 式 の 関 数 宣 言 に 対 し て は 警 告 を し ま せ ん 。 )
−Wmissing−declarations
グ ロ ー バ ル な 関 数 を 、 そ の 前 に プ ロ ト タ イ プ 宣 言 を せ ず に 定 義 し た 場 合 に 警 告 し ま す 。 こ の 警 告 は 、 た と え そ の 定 義 自 身 が プ ロ ト タ イ プ を 含 ん で い た と し て も 発 生 し ま す 。 こ の 警 告 の 目 的 は 、 ヘ ッ ダ フ ァ イ ル 中 に グ ロ ー バ ル 関 数 の 定 義 を 忘 れ る こ と を 防 ぐ こ と に あ り ま す 。
−Wredundant-decls
同 一 ス コ ー プ 中 で 複 数 回 、 同 一 対 象 を 宣 言 し た 場 合 に 、 た と え そ れ が 正 当 で 何 も 変 化 さ せ な い 場 合 で あ っ て も 警 告 し ま す 。
−Wnested-externs
関 数 内 で extern 宣 言 を 行 な っ た 場 合 に 警 告 し ま す 。
−Wenum−clash
異 な る 列 挙 型 の 間 で 変 換 を 行 な っ た 際 に 警 告 し ま す (C++ の み )。
−Wlong-long

long long 型 が 使 用 さ れ て い る 場 合 に 警 告 し ま す 。 こ れ は デ フ ォ ル ト で す 。 こ の 警 告 メ ッ セ ー ジ を 抑 止 す る に は ’−Wno−long−long’ フ ラ グ を 用 い て 下 さ い 。 フ ラ グ ’−Wlong−long’ お よ び ’−Wno−long−long’ は 、 フ ラ グ ’−pedantic’ 使 用 時 の み 考 慮 さ れ ま す 。

−Woverloaded−virtual

(C++ の み 。 ) 導 出 ク ラ ス に お い て 、 仮 想 関 数 の 定 義 は 基 底 ク ラ ス で 定 義 さ れ た 仮 想 関 数 の 型 の 記 述 と 一 致 し て い な け れ ば な り ま せ ん 。 こ の オ プ シ ョ ン を 使 用 す る こ と に よ っ て 、 基 底 ク ラ ス に お け る 仮 想 関 数 と 同 一 の 名 前 を 持 ち 、 基 底 ク ラ ス の い か な る 仮 想 関 数 と も 異 な っ た 型 の 記 述 を 持 つ 関 数 に 対 し て 警 告 が 行 わ れ ま す 。 こ れ に よ っ て 、 導 出 ク ラ ス が 仮 想 関 数 を 定 義 し よ う と し て 失 敗 す る 場 合 を 警 告 す る こ と が で き ま す 。

−Winline 関 数 が イ ン ラ イ ン 宣 言 さ れ て い る 、 あ る い は −finline−functions オ プ シ ョ ン が 与 え ら れ て い る 場 合 に 、 関 数 を イ ン ラ イ ン 展 開 で き な か っ た 場 合 に 警 告 し ま す 。
−Werror
警 告 を エ ラ ー と し て 扱 い ま す 。 警 告 の 後 に コ ン パ イ ル を 中 断 し ま す 。

デ バ ッ グ オ プ シ ョ ン

GNU CC は 、 ユ ー ザ の プ ロ グ ラ ム や GCC の 双 方 を デ バ ッ グ す る た め に 、 多 く の オ プ シ ョ ン を 備 え て い ま す 。

(stabs, COFF,

−g オ ペ レ ー テ ィ ン グ シ ス テ ム の ネ イ テ ィ ブ の フ ォ ー マ ッ ト

XCOFF, DWARF) で デ バ ッ グ 情 報 を 生 成 し ま す 。 GDB は こ の デ バ ッ グ 情 報 に 基 づ い て 動 作 す る こ と が で き ま す 。

stabs フ ォ ー マ ッ ト を 使 用 す る ほ と ん ど の シ ス テ ム に お い て は 、 ’−g’ を 指 定 す る と 、 GDB だ け が 使 用 で き る 余 分 な デ バ ッ グ 情 報 が 使 用 可 能 に な り ま す 。 こ の 特 別 の 情 報 は GDB に 対 し て は よ り よ い デ バ ッ グ を 行 な う こ と を 可 能 と し ま す が 、 お そ ら く 他 の デ バ ッ ガ に 対 し て は ク ラ ッ シ ュ 、 あ る い は そ の プ ロ グ ラ ム を 読 め な く し て し ま い ま す 。 こ の 特 別 な 情 報 の 生 成 を 制 御 す る た め に は ’−gstabs+’, ’−gstabs’, ’−gxcoff+’, ’−gxcoff’, ’−gdwarf+’, ’−gdwarf’ を 使 用 し て く だ さ い (下 記 参 照 )。 他 の 多 く の C コ ン パ イ ラ と 異 な り 、 GNU CC は ’−g’ を ’−O’ と と も に 使 用 す る こ と を 許 し て い ま す 。 最 適 化 さ れ た コ ー ド が 通 る 近 道 は 、 時 に は 驚 く べ き 結 果 を 生 み 出 す か も し れ ま せ ん 。 定 義 し た は ず の 変 数 が 存 在 し な か っ た り 、 制 御 の 流 れ が 予 想 も し な か っ た 場 所 に 移 動 し た り 、 結 果 が 定 数 と わ か る 計 算 や 、 結 果 が す で に 手 元 に あ る 文 は 実 行 さ れ な く な り 、 あ る 文 が ル ー プ の 外 に 追 い 出 さ れ て 別 の 場 所 で 実 行 さ れ た り し ま す 。 そ れ に も 関 わ ら ず 、 こ の オ プ シ ョ ン は 最 適 化 さ れ た 出 力 の デ バ ッ グ を 可 能 と し て い ま す 。 こ れ に よ っ て 、 バ グ を 含 む か も し れ な い プ ロ グ ラ ム に 対 し て オ プ テ ィ マ イ ザ を 使 用 す る こ と が で き る よ う に な り ま す 。 以 下 の オ プ シ ョ ン は 、 GNU CC を 1 つ 以 上 の デ バ ッ グ フ ォ ー マ ッ ト を 扱 え る よ う に 作 成 し て あ る 場 合 に 有 益 で す 。

−ggdb

(も し サ ポ ー ト さ れ て い れ ば )ネ イ テ ィ ブ の フ ォ ー マ ッ ト で デ バ ッ グ 情 報 を 生 成 し ま す 。 こ れ は 可 能 な 限 り の 全 て の GDB 拡 張 を 含 み ま す 。

−gstabs

(も し サ ポ ー ト さ れ て い れ ば ) stabs フ ォ ー マ ッ ト で デ バ ッ グ 情 報 を 生 成 し ま す 。 た だ し GDB 拡 張 は 含 み ま せ ん 。 こ の フ ォ ー マ ッ ト は ほ と ん ど の BSD シ ス テ ム 上 の DBX で 利 用 で き る フ ォ ー マ ッ ト で す 。

−gstabs+

(も し サ ポ ー ト さ れ て い れ ば ) stabs フ ォ ー マ ッ ト で デ バ ッ グ 情 報 を 生 成 し ま す 。 た だ し GNU デ バ ッ ガ (GDB) で し か 理 解 で き な い GNU 拡 張 を 使 用 し ま す 。 こ の 拡 張 を 使 用 す る と 、 他 の デ バ ッ ガ で は 、 ク ラ ッ シ ュ や プ ロ グ ラ ム が 読 め な く な る な ど の 影 響 が お そ ら く 出 ま す 。

−gcoff

(サ ポ ー ト さ れ て い れ ば ) COFF フ ォ ー マ ッ ト で デ バ ッ グ 情 報 を 生 成 し ま す 。 こ れ は 、 System V Release 4 よ り 前 の ほ と ん ど の System V 上 の SDB で 利 用 で き る フ ォ ー マ ッ ト で す 。

−gxcoff

(サ ポ ー ト さ れ て い れ ば ) XCOFF フ ォ ー マ ッ ト で デ バ ッ グ 情 報 を 生 成 し ま す 。 こ れ は IBM RS/6000 シ ス テ ム に お い て DBX デ バ ッ ガ に よ っ て 使 用 さ れ る フ ォ ー マ ッ ト で す 。

−gxcoff+

(も し サ ポ ー ト さ れ て い れ ば ) XCOFF フ ォ ー マ ッ ト で デ バ ッ グ 情 報 の 生 成 を 行 い ま す 。 た だ し 、 GNU デ バ ッ ガ (GDB) に よ っ て の み 理 解 さ れ 得 る GNU 拡 張 を 使 用 し ま す 。 こ れ ら の 拡 張 を 使 用 す る と 、 他 の デ バ ッ ガ に 対 し て は ク ラ ッ シ ュ や プ ロ グ ラ ム を 読 み と り 不 能 に す る な ど の 影 響 を 及 ぼ し 得 ま す 。

−gdwarf

(も し サ ポ ー ト さ れ て い れ ば ) DWARF フ ォ ー マ ッ ト で デ バ ッ グ 情 報 の 生 成 を 行 い ま す 。 こ れ は ほ と ん ど の System V Release 4 シ ス テ ム に お い て SDB に よ っ て 使 用 さ れ る 形 式 で す 。

−gdwarf+

(も し サ ポ ー ト さ れ て い れ ば ) DAWRF フ ォ ー マ ッ ト で デ バ ッ グ 情 報 の 生 成 を 行 い ま す 。 た だ し 、 GNU デ バ ッ ガ (GDB) に よ っ て の み 理 解 さ れ 得 る GNU 拡 張 を 使 用 し ま す 。 こ れ ら の 拡 張 を 使 用 す る と 、 他 の デ バ ッ ガ に 対 し て は ク ラ ッ シ ュ や プ ロ グ ラ ム を 読 み と り 不 能 に す る な ど の 影 響 を 及 ぼ し 得 ま す 。

−glevel
−ggdb
level
−gstabs
level
−gcoff
level −gxcofflevel
−gdwarf
level デ バ ッ グ 情 報 を 要 求 し ま す が 、 同 時 に level に よ っ て ど の 程 度 の 情 報 が 必 要 か を 指 定 し ま す 。 デ フ ォ ル ト の レ ベ ル は 2 で す 。 レ ベ ル 1 は 、 デ バ ッ グ を 予 定 し な い プ ロ グ ラ ム の 部 分 に 対 し て バ ッ ク ト レ ー ス を 生 成 す る に 十 分 な 最 低 限 の 情 報 を 生 成 し ま す 。 こ れ は 関 数 と 外 部 変 数 の 記 述 を 含 み ま す が 、 ロ ー カ ル 変 数 や 行 番 号 に 関 す る 情 報 は 含 み ま せ ん 。 レ ベ ル 3 は プ ロ グ ラ ム に 含 ま れ る 全 て の マ ク ロ 定 義 な ど の 特 別 な 情 報 を 含 み ま す 。 い く つ か の デ バ ッ ガ は ’−g3’ の 使 用 に よ っ て マ ク ロ の 展 開 を サ ポ ー ト し ま す 。

−p プ ロ グ ラ ム

prof に よ っ て 使 用 さ れ る プ ロ フ ァ イ ル 情 報 を 書 き 込 む 特 別

な コ ー ド を 生 成 し ま す 。

−pg プ ロ グ ラ ム

gprof に よ っ て 使 用 さ れ る プ ロ フ ァ イ ル 情 報 を 書 き 込 む 特

別 な コ ー ド を 生 成 し ま す 。

−a 基 本 ブ ロ ッ ク の プ ロ フ ァ イ ル 情 報 を 書 き 込 む 特 別 な コ ー ド を 生 成 し ま す 。 こ れ は そ れ ぞ れ の ブ ロ ッ ク が 何 回 実 行 さ れ た か を 記 録 し ま す 。 こ の デ ー タ は

tcov の よ う な プ ロ グ ラ ム に よ っ て 解 析 さ れ ま す 。 た だ し 、 こ の デ ー タ フ ォ ー マ ッ ト は tcov が 期 待 す る も の と は 異 な っ て い ま す 。 最 終 的 に は 、 GNU gprof が 処 理 で き る よ う に 拡 張 さ れ る べ き で す 。

−ax フ ァ イ ル

’bb.in’ か ら 基 本 ブ ロ ッ ク プ ロ フ ァ イ ル パ ラ メ ー タ を 読 み 出

し 、 フ ァ イ ル ’bb.out’ に プ ロ フ ァ イ ル 結 果 を 書 き 出 す た め の 、 特 別 な コ ー ド を 生 成 し ま す 。 ’bb.in’ は 関 数 の リ ス ト を 保 持 し て い ま す 。 こ の リ ス ト に 含 ま れ る 関 数 に 入 る と 、 プ ロ フ ァ イ リ ン グ が オ ン に な り ま す 。 最 外 側 関 数 を 抜 け る と 、 プ ロ フ ァ イ リ ン グ は オ フ に な り ま す 。 関 数 名 が ’-’ で 始 ま っ て い る 場 合 、 そ の 関 数 は プ ロ フ ァ イ ル 対 象 外 に な り ま す 。 も し 関 数 名 が 唯 一 に 定 ま ら な い 場 合 は 、 ’/path/filename.d:functionname’ と 記 述 す る こ と で こ れ ら を 区 別 で き ま す 。 ’bb.out’ に は 、 い く つ か の 利 用 可 能 な 関 数 が リ ス ト さ れ ま す 。 特 別 な 意 味 を も つ 関 数 が 4 つ あ り ま す : ’__bb_jumps__’ は ジ ャ ン プ 頻 度 を ’bb.out’ に 書 き 出 し ま す 。 ’__bb_trace__’ は 基 本 ブ ロ ッ ク 列 を ’gzip’ に パ イ プ し 、 フ ァ イ ル ’bbtrace.gz’ に 書 き 出 し ま す 。 ’__bb_hidecall__’ は call 命 令 を ト レ ー ス か ら 除 外 し ま す 。 ’__bb_showret__’ は return 命 令 を ト レ ー ス に 含 め る よ う に し ま す 。

−dletters コ ン パ イ ル 中 の letters で 指 定 さ れ る タ イ ミ ン グ に 、 デ バ ッ グ 用 の ダ ン プ を 生 成 す る よ う に 指 示 し ま す 。 こ れ は コ ン パ イ ラ を デ バ ッ グ す る た め に 使 用 さ れ ま す 。 ほ と ん ど の ダ ン プ の フ ァ イ ル 名 は ソ ー ス フ ァ イ ル 名 に 1 単 語 を つ な げ た も の に な り ま す 。 (例 え ば 、 ’foo.c.rtl’ や ’foo.c.jump’ な ど で す )。

−dM 全 て の マ ク ロ 定 義 を ダ ン プ し 、 プ リ プ ロ セ ス 終 了 時 に 出 力 に 書 き 出 し ま す 。 そ の 他 に は 何 も 書 き 出 し ま せ ん 。

−dN 全 て の マ ク ロ 名 を ダ ン プ し 、 プ リ プ ロ セ ス 終 了 時 に 出 力 に 書 き 出 し ま す 。

−dD 全 て の マ ク ロ 定 義 を プ リ プ ロ セ ス 終 了 時 に 通 常 の 出 力 に 加 え て ダ ン プ し ま す 。

−dy パ ー ス 中 に デ バ ッ グ 情 報 を 標 準 エ ラ ー 出 力 に ダ ン プ し ま す 。

−dr

RTL 生 成 後 に ’file.rtl’ に 対 し て ダ ン プ し ま す 。

−dx 関 数 を コ ン パ イ ル す る か わ り に 、

RTL を 生 成 す る の み の 処 理 を 行 い ま

す 。 通 常 は ’r’ と と も に 使 用 さ れ ま す 。

−dj 最 初 の ジ ャ ン プ 最 適 化 の 後 に 、

file.jump’ に 対 し て ダ ン プ し ま す 。

−ds 共 通 部 分 式 削 除

(し ば し ば 共 通 部 分 式 削 除 に 続 く ジ ャ ン プ 最 適 化 も 含 み ま す ) の 終 了 時 に ’file.cse’ に 対 し て ダ ン プ し ま す 。

−dL ル ー プ 最 適 化 終 了 時 に

file.loop’ に 対 し て ダ ン プ し ま す 。

−dt

2 共 通 部 分 式 削 除 段 階 (し ば し ば 共 通 部 分 式 削 除 に 続 く ジ ャ ン プ 最 適 化 も 含 み ま す ) の 終 了 時 に 、 ’file.cse2’ に 対 し て ダ ン プ し ま す 。

−df フ ロ ー 解 析 終 了 後 に 、

file.flow’ に 対 し て ダ ン プ し ま す 。

−dc 命 令 コ ン ビ ネ ー シ ョ ン

終 了 時 に ’file.combine’ に 対 し て ダ ン プ し ま す 。

−dS

第 1 命 令 ス ケ ジ ュ ー リ ン グ 段 階 終 了 時 に ’file.sched’ に 対 し て ダ ン プ し ま す 。

−dl

ロ ー カ ル レ ジ ス タ 割 り 当 て 終 了 時 に ’file.lreg’ に 対 し て ダ ン プ し ま す 。

−dg

グ ロ ー バ ル レ ジ ス タ 割 り 当 て 終 了 時 に ’file.greg’ に 対 し て ダ ン プ し ま す 。

−dR

第 2 命 令 ス ケ ジ ュ ー リ ン グ 段 階 終 了 時 に ’file.sched2’ に 対 し て ダ ン プ し ま す 。

−dJ

最 終 ジ ャ ン プ 最 適 化 終 了 時 に ’file.jump2’ に 対 し て ダ ン プ し ま す 。

−dd 遅 延 分 岐 ス ケ ジ ュ ー リ ン グ 終 了

時 に ’file.dbr’ に 対 し て ダ ン プ し ま す 。

−dk

レ ジ ス タ か ら ス タ ッ ク へ の 転 換 終 了 時 に ’file.stack’ に 対 し て ダ ン プ し ま す 。
−da

以 上 の 全 て の ダ ン プ を 生 成 し ま す 。

−dm 処 理 の 終 了 時 に 、 メ モ リ 使 用 に 関 す る 統 計 情 報 を 標 準 エ ラ ー 出 力 に 出 力 し ま す 。

−dp ど の よ う な パ タ ー ン や 選 択 肢 が 使 用 さ れ た か を 示 す コ メ ン ト を ア セ ン ブ ラ 出 力 中 の コ メ ン ト で 解 説 し ま す 。

−fpretend−float ク ロ ス コ ン パ イ ラ で 処 理 を 行 な う 際 に 、 ホ ス ト マ シ ン と 同 じ 浮 動 小 数 点 フ ォ ー マ ッ ト を タ ー ゲ ッ ト マ シ ン が 持 つ か の よ う に 振 舞 わ せ ま す 。 こ れ は 浮 動 小 数 点 定 数 の 誤 っ た 出 力 を 引 き 起 こ し ま す が 、 実 際 の 命 令 列 は お そ ら く GNU CC を タ ー ゲ ッ ト マ シ ン で 起 動 し た 場 合 と 同 じ も の と な る で し ょ う 。
−save−temps
通 常 の “一 時 ” 中 間 フ ァ イ ル を 消 去 せ ず に 保 存 し ま す 。 こ れ ら は カ レ ン ト デ ィ レ ク ト リ に 置 か れ 、 ソ ー ス フ ァ イ ル に 基 づ い た 名 前 が 付 け ら れ ま す 。 従 っ て 、 ’foo.c’ を ’−c −save−temps’ を 使 用 し て コ ン パ イ ル し た 場 合 は 、 ’foo.cpp’, ’foo.s’ が 、 ’foo.o’ と 同 様 に 生 成 さ れ ま す 。
−print−libgcc−file−name=
library ラ イ ブ ラ リ フ ァ イ ル ’library ’ の 完 全 な 絶 対 名 を 表 示 し ま す 。 こ の フ ァ イ ル は リ ン ク の 際 の み に 使 用 さ れ 、 そ れ 以 外 の 働 き は あ り ま せ ん 。 こ の オ プ シ ョ ン が 指 定 さ れ た 場 合 は 、 GNU CC は コ ン パ イ ル や リ ン ク を 何 も 行 な わ ず 、 た だ フ ァ イ ル 名 を 表 示 す る の み で す 。
−print−libgcc−file−name

−print−file−name=libgcc.a’ と 同 じ で す 。

−print−prog−name=program

−print−file−name’ と 似 て い ま す が 、 ’cpp’ の よ う な program を 検 索 し ま す 。

最 適 化 オ プ シ ョ ン

こ れ ら の オ プ シ ョ ン は 様 々 な 種 類 の 最 適 化 処 理 を 制 御 し ま す 。

−O

−O1 最 適 化 を 行 い ま す 。 最 適 化 コ ン パ イ ル は 幾 分 長 め の 処 理 時 間 と 、 大 き な 関 数 に 対 す る 非 常 に 多 く の メ モ リ を 必 要 と し ま す 。

−O’ が 指 定 さ れ な か っ た 場 合 は 、 コ ン パ イ ラ の 目 標 は コ ン パ イ ル の コ ス ト を 低 減 す る こ と や 、 目 的 の 結 果 を 得 る た め の デ バ ッ グ を 可 能 と す る こ と に 置 か れ ま す 。 そ れ ぞ れ の 文 は 独 立 し て い ま す 。 つ ま り 、 ブ レ ー ク ポ イ ン ト で プ ロ グ ラ ム を 停 止 さ せ る こ と に よ っ て 、 任 意 の 変 数 に 新 し い 値 を 代 入 し た り 、 プ ロ グ ラ ム カ ウ ン タ を 他 の 文 へ と 変 更 す る こ と を 可 能 と し 、 そ の ソ ー ス コ ー ド に プ ロ グ ラ マ が 望 む 正 し い 結 果 を 得 る こ と を 可 能 に し ま す 。

−O’ を 指 定 し な か っ た 場 合 は 、 register と 宣 言 し た 変 数 の み が レ ジ ス タ へ と 割 り 当 て ら れ ま す 。 コ ン パ イ ル の 結 果 と し て 得 ら れ る コ ー ド は 、 PCC を ’−O’ な し で 使 用 し た 場 合 と 比 較 し て 若 干 良 く な い も の と な り ま す 。

−O’ が 指 定 さ れ る と 、 コ ン パ イ ラ は コ ー ド の サ イ ズ と 実 行 時 間 を 減 少 さ せ る こ と を 試 み ま す 。

−O’ を 指 定 す る こ と に よ っ て 、 ’−fthread−jumps’ と ’−fdefer−pop’ の フ ラ グ が 指 定 さ れ ま す 。 遅 延 ス ロ ッ ト を も つ マ シ ン で は ’−fdelayed−branch’ が 指 定 さ れ ま す 。 フ レ ー ム ポ イ ン タ を 使 わ な い デ バ ッ グ を サ ポ ー ト し て い る マ シ ン で は 、 ’−fomit−frame−pointer’ も 指 定 さ れ ま す 。 マ シ ン に よ っ て は さ ら に そ の 他 の フ ラ グ が 指 定 さ れ る こ と も あ り ま す 。

−O2 さ ら に 最 適 化 を 行 い ま す 。 サ ポ ー ト さ れ て い る 最 適 化 手 段 の う ち 、 空 間 と 速 度 の ト レ ー ド オ フ を 含 ま な い も の は ほ と ん ど の 全 て 使 用 さ れ ま す 。 例 え ば ル ー プ の ア ン ロ ー リ ン グ や 関 数 の イ ン ラ イ ン 化 は 行 わ れ ま せ ん 。

−O と 比 較 し て 、 こ の オ プ シ ョ ン は コ ン パ イ ル 時 間 と 生 成 コ ー ド の 性 能 の 双 方 を 増 加 さ せ ま す 。

−O3 さ ら な る 最 適 化 を 行 い ま す 。 こ れ は

−O2 が 行 う 全 て の 最 適 化 手 段 に 加

え て −finline−functions も 有 効 に し ま す 。

−Os サ イ ズ 優 先 で 最 適 化 し ま す 。 普 通 、 コ ー ド を 増 大 さ せ る こ と の な い 全 て の

−O2 最 適 化 が 有 効 に な り ま す 。 更 に 、 コ ー ド サ イ ズ を 減 ら す よ う に 設 計 さ れ た 最 適 化 も 行 い ま す 。

−O0 最 適 化 を 行 い ま せ ん 。 複 数 の

−O オ プ シ ョ ン を 指 定 し た 場 合 は 、 レ ベ ル 番 号 の 有 無 に 関 わ ら ず 、 最 後 に 指 定 し た も の が 有 効 に な り ま す 。

−fflag’ の 形 式 を 持 っ た オ プ シ ョ ン は 、 マ シ ン 独 立 の フ ラ グ で す 。 ほ と ん ど の フ ラ グ は 有 効 形 式 と 無 効 形 式 の 双 方 を 持 っ て い ま す 。 ’−ffoo’ の 無 効 形 式 は ’−fno−foo’ で す 。 以 下 の リ ス ト で は 、 デ フ ォ ル ト で は な い 方 の 形 式 の み を 示 し ま す 。 こ れ に 対 し て ’no−’ を 削 除 す る 、 あ る い は 追 加 す る こ と に よ っ て 双 方 の 形 式 を 生 成 す る こ と が 可 能 で す 。
−ffloat−store
浮 動 小 数 点 変 数 を レ ジ ス タ に 格 納 し ま せ ん 。 こ の オ プ シ ョ ン は 68000 の よ う に (68881 の ) 浮 動 小 数 点 レ ジ ス タ が double よ り も 高 い 精 度 を 持 っ て い る と 思 わ れ る マ シ ン に お い て 、 望 ま な い 超 過 精 度 を 抑 制 す る こ と を 可 能 に し ま す 。 ほ と ん ど の プ ロ グ ラ ム に お い て は 、 超 過 精 度 は 単 に 良 い 結 果 を 生 む だ け で す が 、 い く つ か の プ ロ グ ラ ム は 正 確 な IEEE の 浮 動 小 数 点 フ ォ ー マ ッ ト 定 義 に 依 存 し て い ま す 。 こ の よ う な プ ロ グ ラ ム に 対 し て ’−ffloat−store’ を 使 用 し ま す 。
−fmemoize−lookups
−fsave−memoized
コ ン パ イ ル を 高 速 に 行 な う た め に 、 ヒ ュ ー リ ス テ ィ ッ ク ス を 使 用 し ま す (C++ の み )。 こ れ ら の ヒ ュ ー リ ス テ ィ ッ ク ス は デ フ ォ ル ト で は 有 効 に な っ て い ま せ ん 。 な ぜ な ら 、 こ れ は あ る 種 の 入 力 フ ァ イ ル に し か 効 果 が な く 、 そ の 他 の フ ァ イ ル で は か え っ て コ ン パ イ ル が 低 速 に な る か ら で す 。 最 初 に 、 コ ン パ イ ラ は メ ン バ 関 数 へ の 呼 び 出 し (あ る い は デ ー タ メ ン バ へ の 参 照 ) を 構 築 し ま す 。 こ れ は (1) ど の ク ラ ス で そ の 名 前 の メ ン バ 関 数 が 実 装 さ れ て い る か を 決 定 し 、 (2) ど の メ ン バ 関 数 へ の 呼 び 出 し で あ る か と い う 問 題 (こ れ は ど の 種 類 の 型 変 換 が 必 要 と な る か と い う 決 定 も 含 み ま す ) を 解 決 し 、 (3) 呼 び 出 し 側 に 対 す る そ の 関 数 の 可 視 性 を 検 査 す る と い う 作 業 を 行 な う 必 要 が あ り ま す 。 こ れ ら は 全 て 、 コ ン パ イ ル を よ り 低 速 に し て し ま い ま す 。 通 常 は 、 そ の メ ン バ 関 数 へ の 2 度 目 の 呼 び 出 し が 起 こ っ た 場 合 も 、 こ の 長 い 処 理 が ま た 行 な わ れ る こ と に な り ま す 。 こ れ は 次 の よ う な コ ー ド

cout << "This " << p << " has " << n << " legs.\n"; は 、 こ れ ら の 3 つ の 手 順 を 6 回 繰 り 返 す と い う こ と を 意 味 し ま す 。 こ れ に 対 し て 、 ソ フ ト ウ ェ ア キ ャ ッ シ ュ を 使 用 す る と 、 そ の キ ャ ッ シ ュ へ の “ヒ ッ ト ”は 、 コ ス ト を 劇 的 に 低 減 す る こ と が 期 待 で き ま す 。 不 幸 な こ と に 、 キ ャ ッ シ ュ の 導 入 に よ っ て 異 な っ た レ イ ヤ の 機 構 を 実 装 す る こ と が 必 要 と な り 、 そ れ 自 身 の オ ー バ ヘ ッ ド が 生 じ て し ま い ま す 。 ’−fmemoize−lookups’ は こ の ソ フ ト ウ ェ ア キ ャ ッ シ ュ を 有 効 に し ま す 。 メ ン バ と メ ン バ 関 数 へ の ア ク セ ス 特 権 (可 視 性 ) は あ る 関 数 に お け る コ ン テ キ ス ト と 別 の 関 数 に お け る も の と で は 異 な る の で 、 g++ は キ ャ ッ シ ュ を フ ラ ッ シ ュ し な け れ ば な り ま せ ん 。 ’−fmemoize−lookups’ フ ラ グ を 使 用 す る と 、 全 て の 関 数 を コ ン パ イ ル す る た び に 毎 回 キ ャ ッ シ ュ を フ ラ ッ シ ュ し ま す 。 ’−fsave−memoized’ フ ラ グ は 同 一 の ソ フ ト ウ ェ ア キ ャ ッ シ ュ に つ い て 、 コ ン パ イ ラ が 前 回 コ ン パ イ ル し た 関 数 の コ ン テ キ ス ト が 、 次 に コ ン パ イ ル す る コ ン テ キ ス ト と 同 一 の ア ク セ ス 特 権 を 有 し て い る と み な せ る 時 に は 、 キ ャ ッ シ ュ を 保 持 し ま す 。 こ れ は 同 一 ク ラ ス 中 に 多 く の メ ン バ 関 数 を 定 義 し て い る 時 に 特 に 有 効 で す 。 他 の ク ラ ス の フ レ ン ド に な っ て い る メ ン バ 関 数 を 除 き 、 同 一 の ク ラ ス に 属 し て い る 全 て の メ ン バ 関 数 の ア ク セ ス 特 権 は 、 全 て 同 一 で す 。 こ の よ う な 場 合 は キ ャ ッ シ ュ を フ ラ ッ シ ュ す る 必 要 は あ り ま せ ん 。

−fno−default−inline ク ラ ス ス コ ー プ 中 に 定 義 さ れ た メ ン バ 関 数 を デ フ ォ ル ト で イ ン ラ イ ン 関 数 と す る 処 理 を 行 な い ま せ ん (C++ の み )。
−fno−defer−pop
そ れ ぞ れ の 関 数 呼 び 出 し に 対 し て 、 関 数 の リ タ ー ン 直 後 に 常 に 引 数 を ポ ッ プ し ま す 。 関 数 呼 出 後 に 引 数 を ポ ッ プ し な け れ ば な ら な い マ シ ン に お い て は 、 コ ン パ イ ラ は 通 常 、 い く つ か の 関 数 の 引 数 を ス タ ッ ク に 積 ん で 、 そ れ ら を 同 時 に ポ ッ プ し ま す 。
−fforce−mem
メ モ リ オ ペ ラ ン ド に 対 し て 、 そ れ ら に 対 す る 演 算 が 行 な わ れ る 前 に 、 レ ジ ス タ に コ ピ ー し ま す 。 こ れ は 全 て の メ モ リ 参 照 を 、 潜 在 的 な 共 通 部 分 式 で あ る と 定 め る こ と に よ っ て 、 よ り 良 い コ ー ド を 生 成 し ま す 。 も し そ れ が 共 通 部 分 式 で な か っ た 場 合 は 、 命 令 コ ン ビ ネ ー シ ョ ン に よ っ て レ ジ ス タ へ の 読 み 込 み は 削 除 さ れ ま す 。 私 は こ れ が ど の よ う な 違 い を 生 み 出 す か と い う こ と に 興 味 が あ り ま す 。
−fforce−addr
メ モ リ ア ド レ ス 定 数 に つ い て 、 そ れ ら に 対 す る 演 算 が 行 な わ れ る 前 に レ ジ ス タ に コ ピ ー し ま す 。 こ れ は ’−fforce−mem’ と 同 じ 手 法 で よ り 良 い コ ー ド を 生 成 し ま す 。 私 は こ れ が ど の よ う な 違 い を 生 み 出 す か と い う こ と に 興 味 が あ り ま す 。
−fomit−frame−pointer
フ レ ー ム ポ イ ン タ を レ ジ ス タ に 格 納 す る 必 要 の な い 関 数 に お い て 、 こ の 処 理 を 行 い ま せ ん 。 こ れ は フ レ ー ム ポ イ ン タ の 保 存 、 設 定 、 復 帰 に か か る 命 令 を 省 略 し 、 さ ら に 、 多 く の 関 数 で レ ジ ス タ 変 数 と し て 使 用 で き る 余 分 な レ ジ ス タ を 得 る こ と を 可 能 に し ま す 。 た だ し 、 こ の オ プ シ ョ ン は ほ と ん ど の マ シ ン に お い て デ バ ッ グ を 不 可 能 に し ま す 。

Vax な ど の い く つ か の マ シ ン で は 、 こ の フ ラ グ は 効 果 を 持 ち ま せ ん 。 な ぜ な ら こ れ ら の マ シ ン で は 標 準 の 呼 び 出 し 手 順 が 自 動 的 に フ レ ー ム ポ イ ン タ の 設 定 を 行 な っ て し ま い 、 こ れ が 存 在 し な い と し た と こ ろ で 何 も 節 約 が で き な い か ら で す 。 マ シ ン 記 述 マ ク ロ FRAME_POINTER_REQUIRED が 、 タ ー ゲ ッ ト マ シ ン が こ の フ ラ グ を サ ポ ー ト す る か ど う か を 制 御 し て い ま す 。

−finline−functions 全 て の 単 純 な 関 数 を 呼 び 出 し 側 に 組 み 込 ん で し ま い ま す 。 コ ン パ イ ラ は ヒ ュ ー リ ス テ ィ ッ ク ス を 用 い て 、 ど の 関 数 が こ の 方 法 で 組 み 込 む に 足 り る ほ ど 単 純 か を 決 定 し ま す 。 も し 、 あ る 関 数 に 対 す る 全 て の 呼 び 出 し を 組 み 込 む こ と が で き 、 か つ そ の 関 数 が static と 宣 言 さ れ て い た 場 合 は 、 GCC は そ の 関 数 を 独 立 し た ア セ ン ブ ラ コ ー ド と し て は 出 力 を し ま せ ん 。
−fcaller−saves
関 数 呼 び 出 し に お い て 破 壊 さ れ る で あ ろ う 値 を 、 レ ジ ス タ に 保 持 す る こ と を 可 能 と し ま す 。 こ れ は こ の よ う な 呼 び 出 し の 周 囲 に レ ジ ス タ に 対 す る 保 存 、 復 帰 の 特 別 な コ ー ド を 出 力 す る こ と に よ っ て 実 現 さ れ ま す 。 こ の よ う な 割 り 当 て は 、 そ れ が 通 常 よ り も 良 い コ ー ド を 出 力 す る と み な さ れ る 場 合 に の み 行 わ れ ま す 。 こ の オ プ シ ョ ン は 特 定 の マ シ ン で は デ フ ォ ル ト で 有 効 と な っ て い ま す 。 こ れ ら は 通 常 、 こ の オ プ シ ョ ン の 処 理 の 代 わ り に 使 う こ と が で き る 呼 び 出 し 時 保 存 レ ジ ス タ が 存 在 し な い マ シ ン で す 。
−fkeep−inline−functions
あ る 関 数 へ の 呼 び 出 し が 全 て 呼 び 出 し 側 に 組 み 込 む こ と が で き て 、 か つ そ の 関 数 が static と 宣 言 さ れ て い た と し て も 、 実 行 時 に 呼 び 出 し 可 能 な 関 数 も 生 成 し ま す 。
−fno−function−cse
関 数 の ア ド レ ス を レ ジ ス タ に 置 き ま せ ん 。 つ ま り 、 定 ま っ た 関 数 を 呼 び 出 す コ ー ド は 、 そ れ ぞ れ 明 示 的 な 関 数 の ア ド レ ス を 含 む コ ー ド と な り ま す 。 こ の オ プ シ ョ ン は 効 率 の 低 い コ ー ド を 生 成 し ま す が 、 ア セ ン ブ ラ 出 力 を 書 き 換 え る よ う な ハ ッ ク を 行 な う 場 合 に は 、 こ の オ プ シ ョ ン を 使 用 し な け れ ば 混 乱 さ せ ら れ る こ と で し ょ う 。
−fno−peephole
マ シ ン 固 有 の ピ ー プ ホ ー ル 最 適 化 を 禁 止 し ま す 。
−ffast-math
こ の オ プ シ ョ ン は 生 成 コ ー ド の ス ピ ー ド の た め に 、 GCC に 対 し て 、 い く つ か の ANSI ま た は IEEE の 規 則 /規 格 を 侵 さ せ ま す 。 例 え ば 、 こ の オ プ シ ョ ン は sqrt 関 数 の 引 数 は 非 負 の 数 で あ る こ と を 仮 定 し ま す 。 こ の オ プ シ ョ ン は ど の ’−O’ オ プ シ ョ ン に よ っ て も 有 効 と さ れ ま せ ん 。 な ぜ な ら 、 こ の オ プ シ ョ ン は 数 学 関 数 に 関 す る IEEE ま た は ANSI の 規 則 /規 格 の 厳 密 な 実 装 に 依 存 し て 書 か れ た プ ロ グ ラ ム に 対 し て 誤 っ た 出 力 を 与 え る か ら で す 。 以 下 の オ プ シ ョ ン は 特 殊 な 最 適 化 に 関 す る 制 御 を 行 い ま す 。 ’−O2’ オ プ シ ョ ン は ’−funroll−loops’ と ’−funroll−all−loops’ を 除 く こ れ ら の 全 て の オ プ シ ョ ン を 有 効 に し ま す 。

−O’ オ プ シ ョ ン は 通 常 ’−fthread−jumps’ と ’−fdelayed−branch’ を 有 効 と し ま す 。 た だ し 、 特 殊 な マ シ ン で は デ フ ォ ル ト の 最 適 化 に 対 し て 変 更 が 加 え ら れ て い る か も し れ ま せ ん 。 最 適 化 に 関 す る “き め 細 か い チ ュ ー ニ ン グ ” が 必 要 な 場 合 に 、 以 下 の フ ラ グ を 使 用 す る こ と が 可 能 で す 。
−fstrength−reduce
ル ー プ の ス ト レ ン グ ス リ ダ ク シ ョ ン と 繰 り 返 し 変 数 の 除 去 を 行 い ま す 。
−fthread−jumps
分 岐 ジ ャ ン プ に よ っ て あ る 場 所 に ジ ャ ン プ し た 時 に 、 最 初 の 分 岐 に 包 括 さ れ る 比 較 が 存 在 し た 時 に 、 最 初 の 分 岐 の ジ ャ ン プ 先 を 後 者 の 分 岐 先 に 変 更 し ま す 。 こ の 変 更 先 は 、 2 番 目 の 分 岐 条 件 の 真 偽 に よ っ て 、 2 番 目 の 分 岐 の ジ ャ ン プ 先 か 、 あ る い は 2 番 目 の 分 岐 の 直 後 に 定 め ら れ ま す 。
−funroll−loops
ル ー プ 展 開 の 最 適 化 を 行 い ま す 。 こ れ は ル ー プ の 繰 り 返 し 数 が コ ン パ イ ル 時 、 あ る い は ラ ン タ イ ム に 決 定 で き る 時 に お い て の み 、 実 行 さ れ ま す 。
−funroll−all−loops
ル ー プ 展 開 の 最 適 化 を 行 い ま す 。 こ れ は 全 て の ル ー プ に 対 し て 行 わ れ ま す 。 こ の オ プ シ ョ ン は 大 抵 、 よ り 遅 く 動 作 す る プ ロ グ ラ ム を 生 成 し ま す 。
−fcse−follow−jumps
共 通 部 分 式 削 除 の 処 理 に お い て 、 ジ ャ ン プ 命 令 の 行 先 が 他 の 経 路 か ら 到 達 で き な い 場 合 は 、 そ の ジ ャ ン プ 命 令 を 越 え て ス キ ャ ン を 行 な い ま す 。 例 え ば 、 共 通 部 分 式 削 除 処 理 中 に else 節 を 伴 っ た if 文 に 出 会 っ た 場 合 、 条 件 が 偽 な ら ば 分 岐 先 に 対 し て も 共 通 部 分 式 削 除 を 続 け ま す 。
−fcse−skip−blocks
こ れ は ’−fcse−follow−jumps’ に 似 て い ま す が 、 ブ ロ ッ ク を 跨 ぐ ジ ャ ン プ に 対 し て も 共 通 部 分 式 削 除 を 継 続 し ま す 。 共 通 部 分 式 削 除 処 理 中 に 、 else 節 を 持 た な い 単 純 な if 文 に で あ っ た 時 、 ’−fcse−skip−blocks’ は if の ボ デ ィ を 跨 い だ ジ ャ ン プ に 対 す る 共 通 部 分 式 削 除 処 理 を 継 続 し ま す 。
−frerun−cse−after−loop
ル ー プ 最 適 化 が 行 な わ れ た 後 に 、 再 度 共 通 部 分 式 削 除 の 処 理 を 行 い ま す 。
−felide−constructors
コ ン ス ト ラ ク タ へ の 呼 び 出 し が 省 略 で き る よ う に 思 わ れ る 場 合 に 、 そ の 呼 び 出 し を 省 略 し ま す (C++ の み )。 こ の フ ラ グ を 指 定 し た 場 合 は 、 GNU C++ は 以 下 の コ ー ド に 対 し て 、 一 時 オ ブ ジ ェ ク ト を 経 由 せ ず に yfoo へ の 呼 び 出 し の 結 果 か ら 直 接 初 期 化 し ま す 。

A foo (); A y = foo (); こ の オ プ シ ョ ン を 使 用 し な い 場 合 は 、 GNU C++ は 最 初 に yA 型 の 適 切 な コ ン ス ト ラ ク タ を 呼 び 出 す こ と に よ っ て 初 期 化 し ま す 。 そ し て 、 foo の 結 果 を 一 時 オ ブ ジ ェ ク ト に 格 納 し 、 最 終 的 に は ’y’ の 値 を 一 時 オ ブ ジ ェ ク ト の 値 に 入 れ 換 え ま す 。 デ フ ォ ル ト の 振 舞 い (’−fno−elide−constructors’) が 、 ANSI C++ 標 準 の ド ラ フ ト に は 規 定 さ れ て い ま す 。 コ ン ス ト ラ ク タ が 副 作 用 を 含 む プ ロ グ ラ ム に 対 し て 、 ’−felide-constructors’ を 指 定 す る と 、 そ の プ ロ グ ラ ム は 異 な っ た 動 作 を す る 可 能 性 が あ り ま す 。 な ぜ な ら 、 い く つ か の コ ン ス ト ラ ク タ の 呼 び 出 し が 省 略 さ れ る か ら で す 。

−fexpensive−optimizations 比 較 的 コ ス ト の 高 い い く つ か の 些 細 な 最 適 化 を 行 い ま す 。
−fdelayed−branch
タ ー ゲ ッ ト マ シ ン に お い て こ の フ ラ グ が サ ポ ー ト さ れ て い る 場 合 は 、 遅 延 分 岐 命 令 後 の 命 令 ス ロ ッ ト を 命 令 の 順 番 変 更 に よ っ て 利 用 す る よ う に 設 定 し ま す 。
−fschedule−insns
タ ー ゲ ッ ト マ シ ン に お い て こ の フ ラ グ が サ ポ ー ト さ れ て い る 場 合 は 、 必 要 な デ ー タ を 利 用 可 能 に な る ま で 待 つ こ と に よ る 実 行 の 遅 滞 を 防 ぐ た め に 、 命 令 の 順 番 の 変 更 を 行 い ま す 。 こ れ は 遅 い 浮 動 小 数 点 命 令 や メ モ リ 読 み 込 み 命 令 の 実 行 に お い て 、 そ れ ら の 結 果 を 必 要 と す る 命 令 の 前 に 他 の 命 令 を 詰 め 込 み ま す 。
−fschedule−insns2

−fschedule−insns’ と 似 て い ま す が 、 レ ジ ス タ 割 当 て 処 理 の 後 に も う 一 度 命 令 ス ケ ジ ュ ー リ ン グ の 段 階 を 置 き ま す 。 こ れ は 、 比 較 的 レ ジ ス タ 数 が 少 な く 、 メ モ リ ロ ー ド 命 令 が 1 サ イ ク ル よ り も 多 く を 要 す る マ シ ン に お い て 、 特 に 効 果 的 で す 。

タ ー ゲ ッ ト オ プ シ ョ ン

デ フ ォ ル ト で は 、 GNU CC コ ン パ イ ラ は 、 現 在 使 用 し て い る マ シ ン と 同 じ タ イ プ の コ ー ド を コ ン パ イ ル し ま す 。 し か し 、 GNU CC は ク ロ ス コ ン パ イ ラ と し て も イ ン ス ト ー ル す る こ と が 可 能 で す 。 実 際 に は 、 異 な っ た タ ー ゲ ッ ト マ シ ン の た め の 様 々 な コ ン フ ィ ギ ュ レ ー シ ョ ン の GNU CC は 、 同 時 に い く つ も イ ン ス ト ー ル す る こ と が 可 能 で す 。 そ こ で 、 ど の GNU CC を 使 用 す る か を 指 定 す る た め に 、 ’−b’ オ プ シ ョ ン を 使 用 す る こ と が で き ま す 。 こ れ に 加 え て 、 古 い 、 あ る い は よ り 新 し い バ ー ジ ョ ン の GNU CC も 同 時 に い く つ も イ ン ス ト ー ル し て い く こ と が で き ま す 。 こ れ ら の う ち 1 つ (お そ ら く も っ と も 新 し い も の ) が デ フ ォ ル ト と な り ま す 。 し か し 、 ひ ょ っ と し た ら 別 の も の を 使 い た く な る か も し れ ま せ ん 。

−b machine 引 数 machine は 、 コ ン パ イ ル の タ ー ゲ ッ ト マ シ ン を 規 定 し ま す 。 こ れ は GNU CC を ク ロ ス コ ン パ イ ラ と し て イ ン ス ト ー ル し た 時 に 有 用 で す 。

machine に 指 定 す る 値 は 、 GNU CC を ク ロ ス コ ン パ イ ラ と し て コ ン フ ィ ギ ュ レ ー シ ョ ン し た 時 に 与 え た マ シ ン タ イ プ と 同 じ で す 。 例 え ば 、 80386 上 の System V で 実 行 さ れ る プ ロ グ ラ ム の た め に ’configure i386v’ と い う コ ン フ ィ ギ ュ レ ー シ ョ ン を 行 な っ た ク ロ ス コ ン パ イ ラ を 起 動 し た い 場 合 は 、 ’−b i386v’ と 指 定 し ま す 。

−b’ の 設 定 を 省 略 し た 場 合 は 、 通 常 は 使 用 し て い る マ シ ン と 同 タ イ プ の マ シ ン の た め の コ ン パ イ ル が 行 わ れ ま す 。

−V version 引 数 version は 、 起 動 さ れ る GNU CC の バ ー ジ ョ ン を 規 定 し ま す 。 こ れ は 複 数 の バ ー ジ ョ ン が イ ン ス ト ー ル さ れ て い る 場 合 に 有 用 で す 。 例 え ば 、 version が ’2.0’ な ら ば 、 GNU CC バ ー ジ ョ ン 2.0 を 起 動 す る こ と を 意 味 し ま す 。

−V’ を 指 定 し な か っ た 場 合 の デ フ ォ ル ト の バ ー ジ ョ ン は 、 GNU CC を イ ン ス ト ー ル す る 時 に 調 整 可 能 で す 。 通 常 は 、 も っ と も 一 般 的 な 使 用 に 勧 め る こ と が で き る バ ー ジ ョ ン が こ こ に 指 定 さ れ ま す 。

マ シ ン 依 存 オ プ シ ョ ン

そ れ ぞ れ の タ ー ゲ ッ ト マ シ ン タ イ プ は 、 そ れ ぞ れ の 特 別 な オ プ シ ョ ン を 持 つ こ と が 可 能 で す 。 ’−m’ で 始 ま る オ プ シ ョ ン 群 は 、 様 々 な ハ ー ド ウ ェ ア モ デ ル や コ ン フ ィ ギ ュ レ ー シ ョ ン —例 え ば 68010 と 68020、 浮 動 小 数 点 コ プ ロ セ ッ サ の 有 無 — な ど を 選 択 で き ま す 。 こ の オ プ シ ョ ン を 指 定 す る こ と に よ っ て 、 コ ン パ イ ラ は ど れ か 1 つ の モ デ ル 、 あ る い は コ ン フ ィ ギ ュ レ ー シ ョ ン に 対 す る コ ン パ イ ル が 可 能 で す 。 い く つ か の コ ン フ ィ ギ ュ レ ー シ ョ ン は 、 通 常 は そ の プ ラ ッ ト フ ォ ー ム 上 の 他 の コ ン パ イ ラ と の コ マ ン ド ラ イ ン に 関 す る の 互 換 性 を と る た め の 特 別 な オ プ シ ョ ン を 用 意 し て い ま す 。 以 下 は 68000 シ リ ー ズ の た め に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−m68000
−mc68000

68000 の た め の コ ー ド を 生 成 し ま す 。 こ れ は 68000 ベ ー ス の シ ス テ ム に 対 し て コ ン フ ィ ギ ュ レ ー シ ョ ン を 行 な っ た コ ン パ イ ラ の デ フ ォ ル ト で す 。

−m68020
−mc68020

(68000 で は な く ) 68020 の た め の コ ー ド を 生 成 し ま す 。 こ れ は 68020 ベ ー ス の シ ス テ ム に 対 し て コ ン フ ィ ギ ュ レ ー シ ョ ン を 行 な っ た コ ン パ イ ラ の デ フ ォ ル ト で す 。

−m68881 浮 動 小 数 点 演 算 の た め に 68881 命 令 を 含 ん だ 出 力 を 行 い ま す 。 こ れ は ほ と ん ど の 68020 ベ ー ス の シ ス テ ム に お い て 、 コ ン パ イ ラ の コ ン フ ィ ギ ュ レ ー シ ョ ン 時 に −nfp を 指 定 さ れ な か っ た 場 合 の デ フ ォ ル ト で す 。
−m68030

68030 の た め の コ ー ド を 生 成 し ま す 。 こ れ は 68030 ベ ー ス の シ ス テ ム に 対 し て コ ン フ ィ ギ ュ レ ー シ ョ ン を 行 な っ た コ ン パ イ ラ の デ フ ォ ル ト で す 。

−m68040

68040 の た め の コ ー ド を 生 成 し ま す 。 こ れ は 68040 ベ ー ス の シ ス テ ム に 対 し て コ ン フ ィ ギ ュ レ ー シ ョ ン を 行 な っ た コ ン パ イ ラ の デ フ ォ ル ト で す 。

−m68020−40

68040 の た め の コ ー ド を 生 成 し ま す が 、 新 し い 命 令 を 使 用 し ま せ ん 。 こ の 結 果 と し て 得 ら れ る コ ー ド は 、 68020/68881, 68030, 68040 の い ず れ の シ ス テ ム に お い て も 、 比 較 的 高 い 性 能 を 持 ち ま す 。

−mfpa 浮 動 小 数 点 演 算 の た め に

Sun FPA 命 令 を 含 ん だ 出 力 を 行 い ま す 。

−msoft−float 浮 動 小 数 点 演 算 の た め に ラ イ ブ ラ リ を 呼 び 出 す 出 力 を 行 い ま す 。 警 告 : こ の 必 須 の ラ イ ブ ラ リ は GNU CC の 一 部 と し て は 含 ま れ ま せ ん 。 通 常 は そ の マ シ ン の 一 般 的 な C コ ン パ イ ラ の 提 供 す る も の を 使 用 し ま す が 、 こ れ は 通 常 の 方 法 で は ク ロ ス コ ン パ イ ル で 直 接 使 用 す る こ と は で き ま せ ん 。 ク ロ ス コ ン パ イ ル を 行 な い た い 場 合 は 、 自 分 自 身 で 必 要 な ラ イ ブ ラ リ 関 数 を 用 意 す る 必 要 が あ り ま す 。
−mshort

int 型 を short int 型 の よ う に 16 ビ ッ ト 幅 と み な し ま す 。

−mnobitfield ビ ッ ト フ ィ ー ル ド 命 令 を 使 用 し ま せ ん 。 ’−m68000’ は 暗 黙 の う ち に ’−mnobitfield’ を 含 み ま す 。
−mbitfield
ビ ッ ト フ ィ ー ル ド 命 令 を 使 用 し ま す 。 ’−m68020’ は 暗 黙 の う ち に ’−mbitfield’ を 含 み ま す 。 こ れ は 変 更 さ れ て い な い ソ ー ス の 場 合 の デ フ ォ ル ト で す 。

−mrtd 固 定 個 数 の 引 数 を と る 関 数 に 対 し て 、 異 な っ た 関 数 呼 び 出 し 規 約 を 使 用 し ま す 。 こ れ は 、 リ タ ー ン 時 に 引 数 を ポ ッ プ す る

rtd 命 令 を 利 用 す る も の で す 。 こ れ は 呼 び 出 し 側 で 引 数 を ポ ッ プ さ せ る 必 要 が な い た め に 、 1 命 令 を 省 略 す る こ と が 可 能 と な り ま す 。 こ の 呼 び 出 し 規 約 は 通 常 の Unix で 使 用 さ れ て い る 方 式 と は 互 換 性 が あ り ま せ ん 。 そ の た め 、 Unix コ ン パ イ ラ で コ ン パ イ ル さ れ た ラ イ ブ ラ リ を 呼 び 出 す 必 要 が あ る 限 り は 、 使 用 す る こ と は で き ま せ ん 。 さ ら に 、 全 て の 可 変 引 数 を と り 得 る 関 数 ( printfを 含 み ま す ) に 対 し て 、 関 数 プ ロ ト タ イ プ を 用 意 す る 必 要 が あ り ま す 。 さ も な い と 、 こ れ ら の 関 数 に 対 し て 誤 っ た コ ー ド が 生 成 さ れ ま す 。 さ ら に 、 関 数 に 対 し て 多 過 ぎ る 引 数 を つ け て 呼 び 出 す コ ー ド を 書 い た 場 合 、 こ れ は 深 刻 な 誤 っ た コ ー ド を 生 成 し ま す 。 (通 常 は 多 過 ぎ る 変 数 は 害 を 及 ぼ す こ と な く 無 視 さ れ ま す 。 )

rtd 命 令 は 68010 と 68020 に よ っ て サ ポ ー ト さ れ ま す が 、 68000 で は 使 用 で き ま せ ん 。 以 下 は Vax の た め に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−munix 特 定 の い く つ か の ジ ャ ン プ 命 令

(aobleq 等 ) を 出 力 し ま せ ん 。 こ れ ら

の 命 令 で 長 い レ ン ジ を 使 用 し た 場 合 、 Vax 用 の Unix ア セ ン ブ ラ は こ れ を 処 理 で き ま せ ん 。

−mgnu こ れ ら の ジ ャ ン プ 命 令 を 出 力 し ま す 。 ア セ ン ブ ル に は

GNU ア セ ン ブ ラ

の 使 用 を 仮 定 し ま す 。

−mg 浮 動 小 数 点 数 に つ い て 、

d-フ ォ ー マ ッ ト で は な く 、 g-フ ォ ー マ ッ ト の た

め の コ ー ド を 出 力 し ま す 。 以 下 は SPARC で サ ポ ー ト さ れ て い る ’−m’ ス イ ッ チ で す 。

−mfpu
−mhard−float
浮 動 小 数 点 命 令 を 含 む 出 力 を 行 い ま す 。 こ れ は デ フ ォ ル ト で す 。

−mno−fpu
−msoft−float
浮 動 小 数 点 の 処 理 の た め に ラ イ ブ ラ リ を 呼 び 出 す 出 力 を 行 い ま す 。 警 告 : SPARC 用 の GNU 浮 動 小 数 点 ラ イ ブ ラ リ は 存 在 し ま せ ん 。 通 常 は そ の マ シ ン の 一 般 的 な C コ ン パ イ ラ の 提 供 す る も の を 使 用 し ま す が 、 こ れ は 通 常 の 方 法 で は ク ロ ス コ ン パ イ ル で 直 接 使 用 す る こ と は で き ま せ ん 。 ク ロ ス コ ン パ イ ル を 行 な い た い 場 合 は 、 自 分 自 身 で 必 要 な ラ イ ブ ラ リ 関 数 を 用 意 す る 必 要 が あ り ま す 。

−msoft−float は 呼 び 出 し 規 約 を 変 更 し ま す 。 し た が っ て 、 全 て の プ ロ グ ラ ム を こ の オ プ シ ョ ン で コ ン パ イ ル し な い 限 り 、 こ の オ プ シ ョ ン は 意 味 を な し ま せ ん 。

−mno−epilogue
−mepilogue

−mepilogue を 指 定 す る こ と に よ っ て (デ フ ォ ル ト )、 コ ン パ イ ラ は 関 数 を 抜 け る た め の コ ー ド を 常 に 関 数 の 最 後 に 出 力 し ま す 。 関 数 の 途 中 で 関 数 を 抜 け る コ ー ド は 全 て 、 関 数 の 最 後 の 終 了 コ ー ド へ の ジ ャ ン プ と し て 生 成 さ れ ま す 。

−mno−epilogue を 設 定 す る こ と に よ っ て 、 コ ン パ イ ラ は 関 数 か ら 抜 け る コ ー ド を イ ン ラ イ ン 化 す る こ と を 試 み ま す 。

−mno−v8

−mv8

−msparclite こ れ ら の 3 つ の オ プ シ ョ ン は SPARC ア ー キ テ ク チ ャ の バ リ エ ー シ ョ ン を 選 択 す る た め に 使 用 さ れ ま す 。 デ フ ォ ル ト で は 、 (Fujitsu SPARClite 用 に コ ン フ ィ ギ ュ レ ー シ ョ ン し な い 限 り は ) GCC は SPARC ア ー キ テ ク チ ャ v7 用 の コ ー ド を 生 成 し ま す 。

−mv8 は 、 SPARC v8 用 コ ー ド を 生 成 し ま す 。 v7 コ ー ド と の 違 い は 、 整 数 の 乗 算 と 整 数 の 除 算 が v7 で は 存 在 し な い が v8 に は 存 在 す る と い う 点 の み で す 。

−msparclite は 、 SPARClite 用 の コ ー ド を 生 成 し ま す 。 こ れ は v7 に は 存 在 せ ず SPARClite に 存 在 す る 、 整 数 乗 算 、 整 数 除 算 と ス キ ャ ン (ffs) 命 令 を 追 加 し ま す 。

−mcypress
−msupersparc
こ れ ら 2 つ の オ プ シ ョ ン は コ ー ド 最 適 化 対 象 の プ ロ セ ッ サ を 選 択 す る た め の も の で す 。

−mcypress を 用 い る と (こ れ が デ フ ォ ル ト )、 コ ン パ イ ラ は Cypress CY7C602 チ ッ プ 用 に コ ー ド を 最 適 化 し ま す 。 こ の チ ッ プ は SparcStation/SparcServer 3xx シ リ ー ズ に 用 い ら れ て い ま す 。 こ の オ プ シ ョ ン は 古 い SparcStation 1, 2, IPX な ど に も 適 用 で き ま す 。

−msupersparc を 用 い る と 、 コ ン パ イ ラ は SuperSparc CPU 用 に コ ー ド を 最 適 化 し ま す 。 こ の チ ッ プ は SparcStation 10, 1000, 2000 シ リ ー ズ に 用 い ら れ て い ま す 。 こ の オ プ シ ョ ン を 用 い る と 、 SPARC v8 の 全 命 令 セ ッ ト を 用 い る よ う に な り ま す 。 以 下 は Convex の た め に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−mc1

C1 用 の 出 力 を 行 い ま す 。 こ れ は コ ン パ イ ラ が C1 用 に コ ン フ ィ ギ ュ レ ー シ ョ ン を 行 な わ れ た 時 の デ フ ォ ル ト で す 。

−mc2

C2 用 の 出 力 を 行 い ま す 。 こ れ は コ ン パ イ ラ が C2 用 に コ ン フ ィ ギ ュ レ ー シ ョ ン を 行 な わ れ た 時 の デ フ ォ ル ト で す 。

−margcount 引 数 列 の 前 に 、 引 数 の 数 を ワ ー ド に 置 く コ ー ド を 生 成 し ま す 。 い く つ か の 可 搬 性 の な い Convex や Vax の プ ロ グ ラ ム は こ の ワ ー ド を 必 要 と し ま す 。 (デ バ ッ ガ は 不 定 長 引 数 リ ス ト を 持 つ 関 数 を 除 い て 、 こ の ワ ー ド を 必 要 と し ま せ ん 。 こ れ ら の 情 報 は シ ン ボ ル テ ー ブ ル に 書 か れ ま す 。 )
−mnoargcount
引 数 の 数 を 示 す ワ ー ド を 省 略 し ま す 。 こ れ は 変 更 さ れ て い な い ソ ー ス を 使 用 し た 場 合 の デ フ ォ ル ト で す 。 以 下 は 、 AMD Am29000 の た め に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−mdw

DW ビ ッ ト が 立 っ て い る こ と を 仮 定 し た コ ー ド を 出 力 し ま す 。 こ れ は 、 ハ ー ド ウ ェ ア に よ っ て バ イ ト 操 作 や ハ ー フ ワ ー ド 操 作 が サ ポ ー ト さ れ て い る と い う こ と を 意 味 し ま す 。 こ れ は デ フ ォ ル ト で す 。

−mnodw

DW ビ ッ ト が 立 っ て い な い こ と を 仮 定 し た コ ー ド を 出 力 し ま す 。

−mbw

シ ス テ ム が バ イ ト 操 作 や ハ ー フ ワ ー ド 書 き 込 み 操 作 を サ ポ ー ト し て い る こ と を 仮 定 し た コ ー ド を 生 成 し ま す 。 こ れ は デ フ ォ ル ト で す 。

−mnbw シ ス テ ム が バ イ ト 操 作 や ハ ー フ ワ ー ド 書 き 込 み 操 作 を サ ポ ー ト し て い な い こ と を 仮 定 し た コ ー ド を 生 成 し ま す 。 こ れ は 暗 黙 の う ち に

−mnodw’ を 含 み ま す 。
−msmall
ス モ ー ル メ モ リ モ デ ル を 使 用 し ま す 。 こ れ は 全 て の 関 数 の ア ド レ ス が 単 一 の 256KB の セ グ メ ン ト 内 に 入 る こ と と 、 関 数 の 絶 対 ア ド レ ス が 256K 以 下 に あ る こ と を 仮 定 し ま す 。 こ の オ プ シ ョ ン は call 命 令 を const, consth, calli シ ー ケ ン ス の 代 わ り に 使 用 す る こ と を 可 能 に し ま す 。
−mlarge

call 命 令 が 使 用 で き る こ と を 仮 定 し ま せ ん 。 こ れ は デ フ ォ ル ト で す 。

−m29050

Am29050 用 の コ ー ド を 生 成 し ま す 。

−m29000

Am29000 用 の コ ー ド を 生 成 し ま す 。 こ れ は デ フ ォ ル ト で す 。

−mkernel−registers

gr96-gr127 レ ジ ス タ へ の 参 照 の 代 わ り に gr64-gr95 を 参 照 す る コ ー ド を 生 成 し ま す 。 こ の オ プ シ ョ ン は 、 ユ ー ザ の コ ー ド か ら 使 用 で き る グ ロ ー バ ル レ ジ ス タ か ら 区 別 さ れ た グ ロ ー バ ル レ ジ ス タ の 集 合 を 利 用 す る カ ー ネ ル の コ ー ド を コ ン パ イ ル す る 時 に 使 用 で き ま す 。 た だ し 、 こ の オ プ シ ョ ン が 使 用 さ れ て い る 時 に も ’−f’ フ ラ グ 中 の レ ジ ス タ 名 は 通 常 の ユ ー ザ モ ー ド で の 名 前 を 使 用 し ま す 。

−muser−registers 通 常 の グ ロ ー バ ル レ ジ ス タ の 集 合 gr96-gr127 を 使 用 し ま す 。 こ れ は デ フ ォ ル ト で す 。
−mstack−check

__msp_check へ の 呼 び 出 し を そ れ ぞ れ の ス タ ッ ク 調 整 の 後 に 挿 入 し ま す 。 こ れ は し ば し ば カ ー ネ ル の コ ー ド に お い て 用 い ら れ ま す 。 以 下 は 、 Motorola 88K ア ー キ テ ク チ ャ の た め に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−m88000

m88100 と m88110 の 双 方 で 比 較 的 高 性 能 で 動 作 す る コ ー ド を 生 成 し ま す 。

−m88100

m88100 に 最 適 な コ ー ド を 生 成 し ま す 。 た だ し m88110 に お い て も 動 作 し ま す 。

−m88110

m88110 に 最 適 な コ ー ド を 生 成 し ま す 。 た だ し m88100 に お い て は 動 作 し な い か も 知 れ ま せ ん

−midentify−revision ア セ ン ブ ラ 出 力 中 に 、 ソ ー ス フ ァ イ ル 名 、 コ ン パ イ ラ 名 と バ ー ジ ョ ン 、 タ イ ム ス タ ン プ 、 使 用 さ れ た コ ン パ イ ル フ ラ グ を 記 し た ident デ ィ レ ク テ ィ ブ を 挿 入 し ま す 。
−mno−underscores
シ ン ボ ル 名 の 最 初 に ア ン ダ ー ス コ ア キ ャ ラ ク タ を つ け な い ア セ ン ブ ラ 出 力 を 生 成 し ま す 。 デ フ ォ ル ト で は 個 々 の 名 前 に 対 し て 、 ア ン ダ ー ス コ ア を プ レ フ ィ ッ ク ス と し て 使 用 し ま す 。
−mno−check−zero−division
−mcheck−zero−division
初 期 の 88K の モ デ ル は ゼ ロ に よ る 除 算 の 処 理 に 問 題 を 持 っ て い ま し た 。 特 に 、 そ れ ら の 多 く に お い て ト ラ ッ プ が 生 じ な か っ た こ と は 問 題 で し た 。 こ れ ら の オ プ シ ョ ン を 使 用 す る こ と に よ っ て 、 ゼ ロ 除 算 を 発 見 し 、 例 外 を 知 ら せ る コ ー ド を 埋 め 込 む こ と を 禁 止 (あ る い は 明 示 的 に 許 可 ) す る こ と が で き ま す 。 全 て の 88K 用 の GCC の コ ン フ ィ ギ ュ レ ー シ ョ ン は ’−mcheck−zero−division’ を デ フ ォ ル ト と し て 使 用 し て い ま す 。
−mocs−debug−info
−mno−ocs−debug−info

88Open Object Compatibility Standard “OCS” で 定 義 さ れ た (そ れ ぞ れ の ス タ ッ ク フ レ ー ム 中 で 使 用 さ れ る レ ジ ス タ に 関 す る ) 付 加 的 な デ バ ッ グ 情 報 を 取 り 込 み ま す (ま た は 省 略 し ま す )。 こ れ ら の 付 加 的 な 情 報 は GDB に よ っ て は 必 要 と さ れ ま せ ん 。 DG/UX, SVr4, Delta 88 SVr3.2 で は デ フ ォ ル ト で こ の 情 報 を 含 め ま す 。 そ の 他 の 88K コ ン フ ィ ギ ュ レ ー シ ョ ン で は デ フ ォ ル ト で 省 略 し ま す 。

−mocs−frame−position
−mno−ocs−frame−position

OCS で 規 定 さ れ て い る よ う に 、 レ ジ ス タ の 値 に 対 し て 、 ス タ ッ ク フ レ ー ム 中 の 特 定 の 場 所 に 保 存 さ れ る と い う 動 作 を 強 制 し ま す (あ る い は 要 求 し ま せ ん )。 DG/UX, Delta88 SVr3.2, BCS の コ ン フ ィ ギ ュ レ ー シ ョ ン で は ’−mocs−frame−position’ を デ フ ォ ル ト と し て 、 そ れ 以 外 の 88k コ ン フ ィ ギ ュ レ ー シ ョ ン で は ’−mno−ocs−frame−position’ を デ フ ォ ル ト と し て 使 用 し て い ま す 。

−moptimize−arg−area
−mno−optimize−arg−area
関 数 の 引 数 が ど の よ う な 方 法 で ス タ ッ ク フ レ ー ム に 格 納 さ れ る か を 指 定 し ま す 。 ’−moptimize−arg−area’ は ス ペ ー ス を 節 約 し ま す が 、 い く つ か の デ バ ッ ガ (GDB は 含 ま れ な い ) を ク ラ ッ シ ュ さ せ ま す 。 ’−mno−optimize−arg−area’ は よ り 標 準 に 従 っ て い ま す 。 デ フ ォ ル ト で は GCC は 引 数 エ リ ア の 最 適 化 を 行 い ま せ ん 。
−mshort−data−
num デ ー タ 参 照 時 に 、 そ れ ら の 処 理 を r0 か ら の 相 対 参 照 で 行 な う こ と に よ っ て 小 さ な コ ー ド に す る こ と を 可 能 と し ま す 。 こ れ は 値 の ロ ー ド を (そ の 他 の 場 合 は 2 命 令 か か る と こ ろ を ) 1 命 令 で 行 な う こ と を 可 能 に し ま す 。 num を こ の オ プ シ ョ ン と と も に 指 定 す る こ と に よ っ て 、 ど の デ ー タ 参 照 が 影 響 を 受 け る か を 指 定 す る こ と が で き ま す 。 例 え ば ’−mshort−data−512’ を 指 定 す る と 、 512 バ イ ト 以 内 の デ ィ ス プ レ ー ス メ ン ト の デ ー タ 参 照 が 影 響 を 受 け る こ と に な り ま す 。 ’−mshort−data−num’ は num が 64K よ り も 大 き な 時 は 効 果 を 持 ち ま せ ん 。

−mserialize-volatile
−mno-serialize-volatile

volatile な メ モ リ へ の 参 照 に つ い て 、 シ ー ケ ン シ ャ ル な 整 合 性 を 持 っ た コ ー ド を 生 成 す る 、 あ る い は 生 成 し ま せ ん 。

GNU CC は デ フ ォ ル ト で は ど の プ ロ セ ッ サ サ ブ モ デ ル を 選 ん だ 場 合 に お い て も 、 整 合 性 を 常 に 保 証 し ま す 。 こ れ が ど の よ う に 実 現 さ れ て い る か は 、 サ ブ モ デ ル に 依 存 し て い ま す 。

m88100 プ ロ セ ッ サ は メ モ リ 参 照 の 順 番 を 入 れ 換 え な い の で 、 常 に シ ー ケ ン シ ャ ル な 整 合 性 は 保 た れ ま す 。 も し ’−m88100’ を 使 用 し た 場 合 は 、 GNU CC は シ ー ケ ン シ ャ ル な 整 合 性 を 保 つ た め の 特 別 な 命 令 を 生 成 し ま せ ん 。

m88110 プ ロ セ ッ サ に お け る メ モ リ 参 照 の 順 番 は 、 必 ず し も そ れ ら の 要 求 を 行 な っ た 命 令 の 順 番 と は 一 致 し ま せ ん 。 特 に 、 読 み 込 み 命 令 は 、 先 行 す る 書 き 込 み 命 令 よ り も 先 に 実 行 さ れ 得 ま す 。 こ の よ う な 順 番 の 入 れ 換 え は 、 マ ル チ プ ロ セ ッ サ 時 に volatile な メ モ リ の 参 照 に お け る シ ー ケ ン シ ャ ル な 整 合 性 を 崩 し て し ま い ま す 。 ’−m88000’ ま た は ’−m88110’ を 指 定 し た 場 合 に は 、 GNU CC は 、 必 要 な 場 合 は 特 別 な 命 令 を 生 成 し 、 命 令 の 実 行 が 正 し い 順 番 で 行 な わ れ る こ と を 強 制 し ま す 。 こ こ で 生 成 さ れ る 整 合 性 を 保 証 す る た め の 特 別 な 命 令 は ア プ リ ケ ー シ ョ ン の 性 能 に 対 し て 影 響 を 及 ぼ し ま す 。 も し こ の 保 証 無 し で 問 題 が な い と い う こ と が わ か っ て い る 場 合 は 、 ’−mno-serialize-volatile’ を 使 用 す る こ と が で き ま す 。

−m88100’ オ プ シ ョ ン を 使 用 し て い る が 、 m88110 に お け る 実 行 時 に シ ー ケ ン シ ャ ル な 整 合 性 が 必 要 と さ れ る 場 合 は 、 ’−mserialize-volatile’ を 使 用 す る べ き で す 。

−msvr4

−msvr3

System V release 4 (SVr4) に 関 連 し た コ ン パ イ ラ の 拡 張 を 有 効 (’−msvr4’) あ る い は 無 効 (’−msvr3’) に し ま す 。 こ れ は 以 下 の 内 容 を 制 御 し ま す 。

    •

生 成 す る ア セ ン ブ ラ の 文 法 の 種 類 (こ れ は ’−mversion−03.00’ を 使 用 す る こ と に よ っ て 独 立 に 制 御 で き ま す )。
    •

−msvr4’ は C プ リ プ ロ セ ッ サ に 対 し て ’#pragma weak’ を 理 解 さ せ ま す 。

    •

−msvr4’ は 、 GCC に SVr4 に よ っ て 使 用 さ れ て い る 付 加 的 な 宣 言 デ ィ レ ク テ ィ ブ を 生 成 さ せ ま す 。

−msvr3’ は 、 SVr4 を 除 く 全 て の m88K コ ン フ ィ ギ ュ レ ー シ ョ ン に お け る デ フ ォ ル ト で す 。
−mtrap−large−shift
−mhandle−large−shift

31 ビ ッ ト よ り 大 き い ビ ッ ト シ フ ト を 検 出 す る コ ー ド を 埋 め 込 み ま す 。 こ れ ら の オ プ シ ョ ン を 指 定 す る こ と に よ っ て 、 そ れ ぞ れ ト ラ ッ プ 、 あ る い は 適 切 に 処 理 す る コ ー ド が 埋 め 込 ま れ ま す 。 デ フ ォ ル ト で は GCC は 大 き な ビ ッ ト シ フ ト に は 特 別 な 対 策 を 行 い ま せ ん 。

−muse−div−instruction 非 常 に 初 期 の 88K ア ー キ テ ク チ ャ の モ デ ル は 除 算 命 令 を 持 っ て い ま せ ん 。 従 っ て 、 GCC は デ フ ォ ル ト で は 除 算 命 令 を 生 成 し ま せ ん 。 こ の オ プ シ ョ ン は 除 算 命 令 が 安 全 に 使 用 で き る と い う こ と を 指 定 し ま す 。
−mversion−03.00

DG/UX コ ン フ ィ ギ ュ レ ー シ ョ ン に は 、 2 つ の SVr4 の 種 類 が あ り ま す 。 こ の オ プ シ ョ ン は −msvr4 オ プ シ ョ ン に よ っ て hybrid-COFF と real-ELF の ど ち ら が 使 用 さ れ る か を 選 択 し ま す 。 他 の コ ン フ ィ ギ ュ レ ー シ ョ ン は こ の オ プ シ ョ ン を 無 視 し ま す 。

−mwarn−passed−structs 関 数 に 対 し て 構 造 体 を 渡 し た 場 合 と 、 関 数 が 構 造 体 を 返 し た 場 合 に 警 告 し ま す 。 構 造 体 を 渡 す 規 約 は C 言 語 の 発 展 の 中 で 変 化 し て お り 、 移 植 性 の 問 題 を し ば し ば 生 じ る こ と に な り ま す 。 デ フ ォ ル ト で は GCC は こ の 警 告 を 行 い ま せ ん 。 以 下 の オ プ シ ョ ン は IBM RS6000 の た め に 定 義 さ れ た も の で す 。

−mfp−in−toc
−mno−fp−in−toc
浮 動 小 数 点 定 数 を Table of Contents (TOC) に 入 れ る か ど う か を 指 定 し ま す 。 こ の テ ー ブ ル は 全 て の グ ロ ー バ ル 変 数 と 関 数 の ア ド レ ス を 格 納 し ま す 。 デ フ ォ ル ト で は GCC は 浮 動 小 数 点 定 数 を こ こ に 格 納 し ま す 。 も し TOC が 算 術 あ ふ れ を お こ す 場 合 は 、 ’−mno−fp−in−toc’ を 使 用 す る こ と に よ っ て TOC の サ イ ズ を 小 さ く す る こ と が 可 能 で あ り 、 算 術 あ ふ れ を 防 ぐ こ と が で き る で し ょ う 。 以 下 は IBM RT PC 用 に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。
−min−line−mul
整 数 の 乗 算 に 対 し て イ ン ラ イ ン の コ ー ド 列 を 生 成 し ま す 。 こ れ は デ フ ォ ル ト で す 。
−mcall−lib−mul
整 数 の 乗 算 に 対 し て lmul$$ を 呼 び 出 し ま す 。
−mfull−fp−blocks
フ ル サ イ ズ の 浮 動 小 数 点 デ ー タ ブ ロ ッ ク を 生 成 し ま す 。 こ れ は IBM に よ っ て 推 奨 さ れ て い る 最 低 限 の ス ク ラ ッ チ ス ペ ー ス の 量 を 包 含 し ま す 。 こ れ は デ フ ォ ル ト で す 。
−mminimum−fp−blocks
浮 動 小 数 点 デ ー タ ブ ロ ッ ク 内 に 特 別 な ス ク ラ ッ チ ス ペ ー ス を 含 め ま せ ん 。 こ れ に よ っ て 、 よ り 小 さ な コ ー ド が 生 成 さ れ ま す が 、 実 行 は 遅 く な り ま す 。 な ぜ な ら ス ク ラ ッ チ ス ペ ー ス が 動 的 に 確 保 さ れ る か ら で す 。
−mfp−arg−in−fpregs

IBM の 関 数 呼 び 出 し 規 約 と は 互 換 性 の な い 呼 び 出 し 手 順 を 使 用 し ま す 。 こ の 規 約 で は 浮 動 小 数 点 引 数 を 浮 動 小 数 点 レ ジ ス タ に 入 れ て 渡 し ま す 。 こ の オ プ シ ョ ン を 指 定 す る と 、 varargs.hstdarg.h で 浮 動 小 数 点 オ ペ ラ ン ド が 使 用 で き な く な る こ と に 注 意 し て 下 さ い 。

−mfp−arg−in−gregs 浮 動 小 数 点 に 対 し て 通 常 の 関 数 呼 び 出 し 規 約 を 使 用 し ま す 。 こ れ は デ フ ォ ル ト で す 。
−mhc−struct−return

1 ワ ー ド よ り 大 き な 構 造 体 を 返 す 時 に 、 レ ジ ス タ で は な く メ モ リ を 使 用 し て 返 し ま す 。 こ れ は MetaWare HighC (hc) コ ン パ イ ラ と の 互 換 性 を 提 供 し ま す 。 ’−fpcc−struct−return’ を 使 用 す る こ と に よ っ て Portable C Compiler (pcc) と の 互 換 性 を 得 る こ と が で き ま す 。

−mnohc−struct−return

1 ワ ー ド よ り 大 き な 構 造 体 を 返 す 時 に 、 レ ジ ス タ に よ っ て 返 さ れ る 場 合 が あ り ま す 。 こ れ は そ の 方 が 便 利 で あ る と 考 え ら れ る 時 に 使 用 さ れ ま す 。 こ れ は デ フ ォ ル ト で す 。 IBM が 提 供 す る コ ン パ イ ラ と の 互 換 性 を 得 る た め に は 、 ’−fpcc−struct−return’ と ’−mhc−struct−return’ の 双 方 を 使 用 し ま す 。 以 下 は MIPS フ ァ ミ リ の た め に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−mcpu=cpu-type 命 令 ス ケ ジ ュ ー リ ン グ 時 に 、 デ フ ォ ル ト の マ シ ン タ イ プ を cpu-type に 仮 定 し ま す 。 デ フ ォ ル ト の cpu-typedefault で す 。 こ の 選 択 は す べ て の マ シ ン に 対 す る 最 長 の サ イ ク ル 数 を 元 に コ ー ド を 生 成 し ま す 。 こ れ は 、 生 成 さ れ る コ ー ド が ど の MIPS cpu に お い て も 適 当 な 速 度 で 処 理 さ れ る よ う に す る た め で す 。 こ れ 以 外 の cpu-type の 選 択 と し て は 、 r2000, r3000, r4000, r6000 が あ り ま す 。 特 定 の cpu-type を 選 択 し た 場 合 は 、 そ の 特 定 の チ ッ プ に 適 し た ス ケ ジ ュ ー ル が 行 わ れ ま す 。 コ ン パ イ ラ は 、 −mips2 ま た は −mips3 ス イ ッ チ が 使 用 さ れ て い な い 場 合 は 、 MIPS ISA (instruction set architecture) の レ ベ ル 1 に 合 致 し な い コ ー ド を 生 成 す る こ と は あ り ま せ ん 。

−mips2

MIPS ISA の レ ベ ル 2 (branch likely 命 令 , 平 方 根 命 令 ) に よ る 命 令 群 を 出 力 し ま す 。 −mcpu=r4000−mcpu=r6000 ス イ ッ チ は 、 −mips2 と 共 に 使 用 さ れ る 必 要 が あ り ま す 。

−mips3

MIPS ISA の レ ベ ル 3 (64 ビ ッ ト 命 令 ) を 含 む 命 令 群 を 出 力 し ま す 。 −mcpu=r4000 ス イ ッ チ は 、 −mips2 と 同 時 に 使 用 す る 必 要 が あ り ま す 。

−mint64
−mlong64
−mlonglong128
こ れ ら の オ プ シ ョ ン は 現 在 動 作 し ま せ ん 。
−mmips−as

MIPS ア セ ン ブ ラ の た め の コ ー ド を 生 成 し 、 mips−tfile を 起 動 し て 通 常 の デ バ ッ グ 情 報 を 追 加 し ま す 。 こ れ は OSF/1 リ フ ァ レ ン ス プ ラ ッ ト フ ォ ー ム 以 外 の 全 て の プ ラ ッ ト フ ォ ー ム に お け る デ フ ォ ル ト で す 。 OSF/1 リ フ ァ レ ン ス プ ラ ッ ト フ ォ ー ム は OSF/rose オ ブ ジ ェ ク ト フ ォ ー マ ッ ト を 使 用 し ま す 。 ス イ ッ チ −ggdb, −gstabs, −gstabs+ の う ち の ど れ か が 使 用 さ れ て い る 場 合 は 、 mips−tfile プ ロ グ ラ ム は 、 stabs を MIPS ECOFF 中 に カ プ セ ル 化 し ま す 。

−mgas

GNU ア セ ン ブ ラ 用 の コ ー ド を 生 成 し ま す 。 こ れ は OSF/1 リ フ ァ レ ン ス プ ラ ッ ト フ ォ ー ム に お け る デ フ ォ ル ト で す 。 OSF/1 リ フ ァ レ ン ス プ ラ ッ ト フ ォ ー ム は OSF/rose オ ブ ジ ェ ク ト フ ォ ー マ ッ ト を 使 用 し ま す 。

−mrnames
−mno−rnames

−mrnames ス イ ッ チ は 出 力 コ ー ド に お い て 、 レ ジ ス タ の 名 前 と し て 、 ハ ー ド ウ ェ ア 名 の 代 わ り に MIPS ソ フ ト ウ ェ ア 名 を 使 用 す る こ と を 指 定 し ま す 。 (つ ま り 、 a0$4 の 代 わ り に 使 用 し ま す )。 GNU ア セ ン ブ ラ は −mrnames ス イ ッ チ を サ ポ ー ト し ま せ ん 。 MIPS ア セ ン ブ ラ は ソ ー ス フ ァ イ ル に 対 し て MIPS C プ リ プ ロ セ ッ サ を 起 動 す る で し ょ う 。 −mno−rnames ス イ ッ チ が デ フ ォ ル ト で す 。

−mgpopt
−mno−gpopt

−mgpopt ス イ ッ チ は 、 全 て の デ ー タ 宣 言 を テ キ ス ト セ ク シ ョ ン 中 の 全 命 令 の 前 に 書 き 出 す こ と を 指 定 し ま す 。 こ れ に よ っ て 、 全 て の MIPS ア セ ン ブ ラ は 、 シ ョ ー ト グ ロ ー バ ル 、 あ る い は 静 的 な デ ー タ ア イ テ ム に 対 し て 、 2 ワ ー ド で は な く 、 1 ワ ー ド の メ モ リ 参 照 命 令 を 生 成 し ま す 。 こ れ は 最 適 化 が 指 定 さ れ た 場 合 の デ フ ォ ル ト で す 。

−mstats
−mno−stats

−mstats が 指 定 さ れ た 場 合 は 、 コ ン パ イ ラ に よ っ て イ ン ラ イ ン で な い 関 数 が 処 理 さ れ る ご と に 、 標 準 エ ラ ー 出 力 フ ァ イ ル に 対 し て 、 そ の プ ロ グ ラ ム に 対 す る 統 計 情 報 を 示 す 1 行 の メ ッ セ ー ジ を 出 力 し ま す 。 こ の メ ッ セ ー ジ は 、 保 存 し た レ ジ ス タ の 数 、 ス タ ッ ク の サ イ ズ な ど を 示 し ま す 。

−mmemcpy
−mno−memcpy

−mmemcpy ス イ ッ チ は 、 全 て の ブ ロ ッ ク 転 送 に 対 し て 、 イ ン ラ イ ン コ ー ド を 生 成 す る 代 わ り に 、 適 切 な ス ト リ ン グ 関 数 (memcpy ま た は bcopy) を 呼 び 出 す コ ー ド を 生 成 し ま す 。

−mmips−tfile
−mno−mips−tfile

−mno−mips−tfile ス イ ッ チ を 指 定 す る と 、 MIPS ア セ ン ブ ラ が デ バ ッ グ サ ポ ー ト の た め に 生 成 し た オ ブ ジ ェ ク ト フ ァ イ ル に 対 し 、 mips−tfile を 使 用 し た 後 処 理 を 行 い ま せ ん 。 mips−tfile が 実 行 さ れ な い と 、 デ バ ッ ガ か ら は ロ ー カ ル 変 数 を 扱 う こ と が で き ま せ ん 。 さ ら に 、 stage2stage3 の オ ブ ジ ェ ク ト は ア セ ン ブ ラ に 渡 さ れ る 一 時 的 な フ ァ イ ル 名 を オ ブ ジ ェ ク ト フ ァ イ ル 中 に 埋 め 込 ま れ て 持 っ て お り 、 こ の た め そ れ ら を 比 較 し た 場 合 に 同 一 の も の と は み な さ れ ま せ ん 。

−msoft−float 浮 動 小 数 点 演 算 の た め に ラ イ ブ ラ リ を 呼 び 出 す 出 力 を 行 い ま す 。 警 告 : こ の 必 須 の ラ イ ブ ラ リ は GNU CC の 一 部 と し て は 含 ま れ ま せ ん 。 通 常 は そ の マ シ ン の 一 般 的 な C コ ン パ イ ラ の 提 供 す る も の を 使 用 し ま す が 、 こ れ は 通 常 の 方 法 で は ク ロ ス コ ン パ イ ル で 直 接 使 用 す る こ と は で き ま せ ん 。 ク ロ ス コ ン パ イ ル を 行 な い た い 場 合 は 、 自 分 自 身 で 必 要 な ラ イ ブ ラ リ 関 数 を 用 意 す る 必 要 が あ り ま す 。
−mhard−float
浮 動 小 数 点 命 令 を 含 ん だ 出 力 を 生 成 し ま す 。 こ れ は 変 更 さ れ な い ソ ー ス を 使 用 し た 場 合 の デ フ ォ ル ト で す 。

−mfp64 ス テ ー タ ス ワ ー ド 中 の

FR ビ ッ ト が 立 っ て い る こ と を 仮 定 し ま す 。 こ れ

は 32 個 の 32 ビ ッ ト 浮 動 小 数 点 レ ジ ス タ の 代 わ り に 、 32 個 の 64 ビ ッ ト の 浮 動 小 数 点 レ ジ ス タ が 存 在 す る と い う こ と を 示 し ま す 。 こ の 場 合 は 、 同 時 に −mcpu=r4000−mips3 ス イ ッ チ を 指 定 す る 必 要 が あ り ま す 。

−mfp32

32 個 の 32 ビ ッ ト 浮 動 小 数 点 レ ジ ス タ が 存 在 す る と い う こ と を 仮 定 し ま す 。 こ れ は デ フ ォ ル ト で す 。

−mabicalls
−mno−abicalls
い く つ か の System V.4 の 移 植 が 位 置 独 立 コ ー ド の た め に 使 用 す る 疑 似 命 令 .abicalls, .cpload, .cprestore を 出 力 す る 、 あ る い は 出 力 し ま せ ん 。
−mhalf−pic
−mno−half−pic

−mhalf−pic ス イ ッ チ は 、 テ キ ス ト セ ク シ ョ ン 中 に 参 照 を 配 置 す る 代 わ り に 、 外 部 参 照 を 行 な う ポ イ ン タ を デ ー タ セ ク シ ョ ン に 配 置 し 、 そ れ を ロ ー ド す る 動 作 を 指 定 し ま す 。 こ の オ プ シ ョ ン は 現 在 ま だ 動 作 し ま せ ん 。 −Gnumnum バ イ ト 以 下 の グ ロ ー バ ル 、 あ る い は 静 的 な ア イ テ ム を 、 通 常 の デ ー タ や bss セ ク シ ョ ン で は な く 、 小 さ な デ ー タ 、 ま た は bss セ ク シ ョ ン に 配 置 す る こ と を 指 定 し ま す 。 こ れ に よ り ア セ ン ブ ラ は 、 通 常 で は 2 ワ ー ド の 参 照 を 行 う と こ ろ を 、 グ ロ ー バ ル ポ イ ン タ (gp ま た は $28) を 基 準 と し た 1 ワ ー ド の メ モ リ 参 照 命 令 を 生 成 可 能 と な り ま す 。 デ フ ォ ル ト で は MIPS ア セ ン ブ ラ が 使 用 さ れ る 場 合 、 num は 8 で す 。 ま た 、 GNU ア セ ン ブ ラ が 使 用 さ れ る 場 合 の デ フ ォ ル ト は 0 で す 。 −Gnum ス イ ッ チ は ア セ ン ブ ラ 、 リ ン カ に も 同 様 に 渡 さ れ ま す 。 全 て の モ ジ ュ ー ル は 同 一 の −Gnum の 値 で コ ン パ イ ル さ れ な け れ ば な り ま せ ん 。

−nocpp

MIPS ア セ ン ブ ラ に 、 ユ ー ザ ア セ ン ブ ラ フ ァ イ ル (’.s’ 拡 張 子 を 持 ち ま す ) に 対 す る ア セ ン ブ ル 時 の プ リ プ ロ セ ッ サ の 起 動 を 抑 制 さ せ ま す 。

以 下 は 、 Intel 80386 フ ァ ミ リ 用 に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−m486

−mno−486

386 で は な く 486 に 最 適 化 さ れ た コ ー ド を 出 力 す る 、 あ る い は そ の 逆 を 行 な う 指 定 を 行 い ま す 。 486 用 に 生 成 さ れ た コ ー ド は 386 で 実 行 可 能 で あ り 、 逆 も ま た 可 能 で す 。

−mpentium

−mcpu=pentium と 同 義 で す 。

−mpentiumpro

−mcpu=pentiumpro と 同 義 で す 。

−mcpu=cpu type 命 令 を ス ケ ジ ュ ー リ ン グ す る 際 の マ シ ン タ イ プ の デ フ ォ ル ト を 設 定 し ま す 。 CPU TYPE の 選 択 肢 は i386, i486, i586 (pentium), pentium, i686 (pentiumpro), お よ び pentiumpro で す 。 あ る CPU TYPE を 選 ぶ と 、 そ の 特 定 チ ッ プ に 適 す る よ う に ス ケ ジ ュ ー リ ン グ を 行 い ま す が 、 −march=cpu type オ プ シ ョ ン を 指 定 し な い 限 り 、 コ ン パ イ ラ は i386 で 実 行 で き な い よ う な コ ー ド は 生 成 し ま せ ん 。
−march=
cpu type マ シ ン タ イ プ CPU TYPE 用 に 命 令 を 生 成 し ま す 。 CPU TYPE の 選 択 肢 は i386, i486, pentium, お よ び pentiumpro で す 。 −march=cpu type を 指 定 す る と −mcpu=cpu type も 指 定 さ れ た も の と み な し ま す 。
−msoft−float
浮 動 小 数 点 演 算 の た め に ラ イ ブ ラ リ を 呼 び 出 す 出 力 を 行 い ま す 。 警 告 : こ の 必 須 の ラ イ ブ ラ リ は GNU CC の 一 部 と し て は 含 ま れ ま せ ん 。 通 常 は そ の マ シ ン の 一 般 的 な C コ ン パ イ ラ の 提 供 す る も の を 使 用 し ま す が 、 こ れ は 通 常 の 方 法 で は ク ロ ス コ ン パ イ ル で 直 接 使 用 す る こ と は で き ま せ ん 。 ク ロ ス コ ン パ イ ル を 行 な い た い 場 合 は 、 自 分 自 身 で 必 要 な ラ イ ブ ラ リ 関 数 を 用 意 す る 必 要 が あ り ま す 。 関 数 が 浮 動 小 数 点 数 を 返 す 時 に 80387 レ ジ ス タ ス タ ッ ク を 使 用 す る マ シ ン に お い て は 、 ’−msoft-float’ を 使 用 し た 場 合 で も 、 い く つ か の 浮 動 小 数 点 命 令 が 生 成 さ れ ま す 。
−mno-fp-ret-in-387
関 数 か ら の 返 り 値 に FPU の レ ジ ス タ を 使 用 し ま せ ん 。 通 常 の 関 数 呼 び 出 し 規 約 は 、 た と え FPU が 存 在 し な く て も floatdouble の 結 果 を FPU レ ジ ス タ に 入 れ て 返 し ま す 。 し た が っ て こ の 場 合 、 オ ペ レ ー テ ィ ン グ シ ス テ ム は FPU を エ ミ ュ レ ー ト し な け れ ば な り ま せ ん 。

−mno-fp-ret-in-387’ オ プ シ ョ ン を 指 定 す る と 、 浮 動 小 数 点 数 も 通 常 の CPU レ ジ ス タ に 入 れ て 返 さ れ ま す 。

−mprofiler-epilogue
−mno-profiler-epilogue
関 数 か ら 抜 け る コ ー ド に て プ ロ フ ァ イ ル 情 報 を 書 き 出 す 追 加 コ ー ド を 生 成 し ま す 。 以 下 は HPPA フ ァ ミ リ 用 に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。
−mpa-risc-1-0

PA 1.0 プ ロ セ ッ サ 用 の コ ー ド を 出 力 し ま す 。

−mpa-risc-1-1

PA 1.1 プ ロ セ ッ サ 用 の コ ー ド を 出 力 し ま す 。

−mkernel カ ー ネ ル に 適 し た コ ー ド を 生 成 し ま す 。 特 に 、 引 数 の 1 つ と し て DP レ ジ ス タ を と る add 命 令 の 使 用 を 抑 制 し 、 そ の 代 わ り に 、 addil 命 令 を 生 成 し ま す 。 こ れ は HP-UX リ ン カ の 深 刻 な バ グ を 避 け る た め の 措 置 で す 。
−mshared-libs

HP-UX 共 有 ラ イ ブ ラ リ と リ ン ク さ せ る コ ー ド を 生 成 し ま す 。 こ の オ プ シ ョ ン は ま だ 完 全 に 動 作 し て い る わ け で は な く 、 ど の PA タ ー ゲ ッ ト に お い て も デ フ ォ ル ト に な っ て い ま せ ん 。 こ の オ プ シ ョ ン を 指 定 す る と 、 コ ン パ イ ラ は 誤 っ た コ ー ド を 出 力 し 得 ま す 。

−mno-shared-libs 共 有 ラ イ ブ ラ リ と リ ン ク し な い コ ー ド を 生 成 し ま す 。 こ れ は 全 て の PA タ ー ゲ ッ ト に お い て デ フ ォ ル ト の オ プ シ ョ ン で す 。
−mlong-calls
関 数 の 呼 び 出 し 先 と 呼 び 出 し 元 が 同 一 フ ァ イ ル に 含 ま れ た 場 合 、 呼 び 出 し 時 の 距 離 が 256K を 越 え る 場 合 で も 動 作 す る よ う な コ ー ド を 出 力 し ま す 。 こ の オ プ シ ョ ン は 、 リ ン カ か ら “branch out of range errors” で リ ン ク を 拒 否 さ れ た 時 以 外 に は 使 用 し な い よ う に し て く だ さ い 。
−mdisable-fpregs
い か な る 形 に お い て も 、 浮 動 小 数 点 レ ジ ス タ の 使 用 を 禁 止 し ま す 。 こ れ は 浮 動 小 数 点 レ ジ ス タ に 配 慮 し な い コ ン テ キ ス ト ス イ ッ チ を 行 な う カ ー ネ ル に 対 し て 有 効 で す 。 こ の オ プ シ ョ ン を 使 用 し て 、 浮 動 小 数 点 処 理 を 行 な お う と す る と 、 コ ン パ イ ラ は ア ボ ー ト し ま す 。
−mdisable-indexing
コ ン パ イ ラ に 対 し て 、 indexing addressing mode を 使 用 し な い よ う に 指 定 し ま す 。 こ れ に よ っ て MACH に お い て MIG に よ っ て 生 成 さ れ た コ ー ド を コ ン パ イ ル す る 際 の 、 あ ま り 重 要 で な い い く つ か の 問 題 を 防 ぐ こ と が で き ま す 。
−mtrailing-colon
ラ ベ ル 定 義 の 後 に コ ロ ン を 加 え ま す (ELF ア セ ン ブ ラ 用 )。 以 下 は 、 Intel 80960 フ ァ ミ リ 用 に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。
−m
cpu-type デ フ ォ ル ト の マ シ ン タ イ プ を cpu-type に 仮 定 し ま す 。 こ れ は 生 成 す る 命 令 と ア ド レ ッ シ ン グ モ ー ド 、 そ し て 境 界 条 件 に 関 係 し ま す 。 デ フ ォ ル ト の cpu-typekb で す 。 そ の 他 の 選 択 と し て は ka, mc, ca, cf, sa, sb が あ り ま す 。
−mnumerics
−msoft−float

−mnumerics オ プ シ ョ ン は プ ロ セ ッ サ が 浮 動 小 数 点 命 令 を サ ポ ー ト す る こ と を 示 し ま す 。 −msoft−float オ プ シ ョ ン は 浮 動 小 数 点 サ ポ ー ト を 仮 定 し な い こ と を 示 し ま す 。

−mleaf−procedures
−mno−leaf−procedures
葉 に 位 置 す る 手 続 き に つ い て 、 call 命 令 と 同 様 に bal 命 令 で も 呼 び 出 す こ と を 可 能 と し ま す (あ る い は 、 し ま せ ん )。 こ れ は bal 命 令 が ア セ ン ブ ラ 、 ま た は リ ン カ に よ っ て 置 き 換 え ら れ 得 る 場 合 に は 、 直 接 呼 び 出 し に 対 し て 効 率 の 良 い コ ー ド を 得 る こ と が で き ま す 。 た だ し 、 そ れ 以 外 の 場 合 は 効 率 の 良 く な い コ ー ド を 生 成 し ま す 。 例 え ば 、 関 数 へ の ポ イ ン タ 経 由 の 呼 び 出 し や 、 こ の 最 適 化 を サ ポ ー ト し な い リ ン カ を 使 用 し た 場 合 な ど が こ れ に 該 当 し ま す 。
−mtail−call
−mno−tail−call

(マ シ ン 非 依 存 の 部 分 を 越 え て ) 末 尾 再 帰 を 分 岐 に 変 換 す る 処 理 に 関 す る さ ら な る 最 適 化 を 行 い ま す (ま た は 行 い ま せ ん )。 こ の 手 法 の 適 用 が 正 当 で な い と い う こ と に 関 す る 判 断 が 完 全 で は な い の で 、 ま だ こ の オ プ シ ョ ン を 使 用 す る こ と は 適 当 で な い か も し れ ま せ ん 。 デ フ ォ ル ト は −mno−tail−call で す 。

−mcomplex−addr
−mno−complex−addr
こ の i960 の 実 装 で は 複 雑 な ア ド レ ッ シ ン グ モ ー ド の 使 用 が 優 位 で あ る と 仮 定 し ま す (あ る い は 仮 定 し ま せ ん )。 複 雑 な ア ド レ ッ シ ン グ モ ー ド は K-シ リ ー ズ で は 使 用 す る 価 値 は 無 い か も 知 れ ま せ ん が 、 C-シ リ ー ズ で は 確 か に 使 用 す る 価 値 が あ り ま す 。 現 在 は −mcomplex−addr が 、 CB と CC を 除 く 全 て の プ ロ セ ッ サ に お け る デ フ ォ ル ト で す 。
−mcode−align
−mno−code−align
よ り 高 速 な フ ェ ッ チ の た め に コ ー ド を 8 バ イ ト に ア ラ イ ン し ま す (ま た は 何 も し ま せ ん )。 現 在 で は C シ リ ー ズ の 実 装 に お い て の み デ フ ォ ル ト で 有 効 に し て い ま す 。
−mic−compat
−mic2.0−compat
−mic3.0−compat

iC960 v2.0 ま た は v3.0 と の 互 換 性 を 持 た せ ま す 。

−masm−compat
−mintel−asm

iC960 ア セ ン ブ ラ と の 互 換 性 を 持 た せ ま す 。

−mstrict−align
−mno−strict−align
ア ラ イ ン さ れ な い ア ク セ ス を 許 可 し ま せ ん (あ る い は 許 可 し ま す )。
−mold−align

Intel に よ る gcc リ リ ー ス バ ー ジ ョ ン 1.3 (gcc 1.37 ベ ー ス ) と の 構 造 体 の 境 界 条 件 に 関 す る 互 換 性 を 持 た せ ま す 。 現 在 は 、 #pragma align 1 が 同 時 に 仮 定 さ れ て し ま い 、 無 効 化 で き な い と い う バ グ を 持 っ て い ま す 。 以 下 は 、 DEC Alpha 用 に 定 義 さ れ た ’−m’ オ プ シ ョ ン で す 。

−mno-soft-float
−msoft-float
浮 動 小 数 点 操 作 に 対 し て 、 ハ ー ド ウ ェ ア に よ る 浮 動 小 数 点 命 令 を 使 用 し ま す (し ま せ ん )。 も し 、 −msoft-float が 指 定 さ れ た 場 合 は 、 ’libgcc1.c’ 内 の 関 数 が 浮 動 小 数 点 演 算 に 使 用 さ れ ま す 。 た だ し 、 こ れ ら の ル ー チ ン が 浮 動 小 数 点 演 算 を エ ミ ュ レ ー ト す る ル ー チ ン に よ っ て 置 き 換 え ら れ て い る か 、 そ の よ う な エ ミ ュ レ ー シ ョ ン ル ー チ ン を 呼 び 出 す よ う に コ ン パ イ ル さ れ て い る の で な い 限 り 、 こ れ ら の ル ー チ ン は 浮 動 小 数 点 演 算 を 行 な っ て し ま い ま す 。 浮 動 小 数 点 演 算 の な い Alpha の た め の コ ン パ イ ル を 行 な う た め に は 、 ラ イ ブ ラ リ も こ れ ら を 呼 び 出 さ な い よ う に コ ン パ イ ル さ れ て い な け れ ば な り ま せ ん 。 浮 動 小 数 点 演 算 の な い Alpha の 実 装 は 、 浮 動 小 数 点 レ ジ ス タ を 必 要 と す る と い う こ と に 注 意 し て 下 さ い 。
−mfp-reg
−mno-fp-regs
浮 動 小 数 点 レ ジ ス タ セ ッ ト を 使 用 す る (使 用 し な い )コ ー ド を 生 成 し ま す 。 −mno-fp-regs は 暗 黙 の う ち に −msoft-float を 含 み ま す 。 浮 動 小 数 点 レ ジ ス タ セ ッ ト が 使 用 さ れ な い 場 合 は 、 浮 動 小 数 点 オ ペ ラ ン ド は 整 数 レ ジ ス タ に 入 れ ら れ て 渡 さ れ 、 浮 動 小 数 点 数 の 結 果 は $f0 で は な く $0 に 入 れ て 返 さ れ ま す 。 こ れ は 非 標 準 の 関 数 呼 び 出 し 手 順 で あ り 、 浮 動 小 数 点 数 の 引 数 や 返 り 値 を 持 つ 関 数 で 、 −mno-fp-regs を つ け て コ ン パ イ ル さ れ た コ ー ド か ら 呼 び 出 さ れ る 関 数 は す べ て こ の オ プ シ ョ ン を つ け て コ ン パ イ ル さ れ て い る 必 要 が あ り ま す 。 こ の オ プ シ ョ ン の 典 型 的 な 用 法 は 、 浮 動 小 数 点 レ ジ ス タ を 使 用 せ ず 、 し た が っ て 浮 動 小 数 点 レ ジ ス タ へ の セ ー ブ も リ ス ト ア も 必 要 の な い カ ー ネ ル を 構 築 す る 時 な ど が あ る で し ょ う 。 こ こ に 追 加 す る オ プ シ ョ ン は System V Release 4 に お い て 、 こ れ ら の シ ス テ ム 上 の 他 の コ ン パ イ ラ と の 互 換 性 の た め に 提 供 さ れ る も の で す 。

−G

SVr4 シ ス テ ム に お い て 、 gcc は ’−G’ オ プ シ ョ ン を 受 け 付 け ま す (そ し て こ れ を シ ス テ ム リ ン カ に 渡 し ま す )。 こ れ は 他 の コ ン パ イ ラ と の 互 換 性 の た め で す 。 し か し 、 リ ン カ オ プ シ ョ ン を gcc の コ マ ン ド ラ イ ン か ら 渡 す よ り も 、 我 々 は ’−symbolic’ ま た は ’−shared’ の 使 用 が 適 当 で あ る と 考 え て い ま す 。

−Qy

コ ン パ イ ラ が 使 用 し た そ れ ぞ れ の ツ ー ル の バ ー ジ ョ ン を .ident ア セ ン ブ ラ デ ィ レ ク テ ィ ブ を 使 用 し て 、 出 力 で 明 示 し ま す 。
−Qn

.ident デ ィ レ ク テ ィ ブ を 出 力 に 加 え る こ と を 抑 制 し ま す (こ れ は デ フ ォ ル ト で す )。

−YP,dirs

−l’ で 指 定 さ れ た ラ イ ブ ラ リ に 対 し て 、 dirsで 規 定 さ れ た デ ィ レ ク ト リ の み を 検 索 し 、 他 は 検 索 し ま せ ん 。 dirs 中 は 、 1 つ の コ ロ ン で 区 切 る こ と に よ り 、 複 数 の デ ィ レ ク ト リ エ ン ト リ を 記 述 し ま す 。

−Ym,dir

M4 プ リ プ ロ セ ッ サ を dir に 検 索 し ま す 。 ア セ ン ブ ラ が こ の オ プ シ ョ ン を 使 用 し ま す 。

コ ー ド 生 成 オ プ シ ョ ン

こ れ ら の マ シ ン 独 立 オ プ シ ョ ン は 、 コ ー ド 生 成 に て 使 用 さ れ る イ ン タ フ ェ ー ス 規 約 を 制 御 し ま す 。 こ れ ら の ほ と ん ど は ’−f’ で 始 ま り ま す 。 こ れ ら の オ プ シ ョ ン は 有 効 形 式 と 無 効 形 式 の 2 つ の 形 式 を 持 っ て い ま す 。 ’−ffoo’ の 無 効 形 式 は ’−fno−foo’ で す 。 以 下 に 挙 げ る 表 に お い て は 、 こ の う ち 、 デ フ ォ ル ト で は な い 片 方 の み が 挙 げ ら れ て い ま す 。 ’no−’ を 追 加 す る か 、 削 除 す る か に よ っ て 双 方 の 形 式 を 得 る こ と が で き ま す 。

−fnonnull−objects 参 照 型 に よ っ て 参 照 さ れ る オ ブ ジ ェ ク ト は ヌ ル で な い と 仮 定 し ま す (C++ の み )。 通 常 は GNU C++ は 参 照 型 に よ っ て 参 照 さ れ る オ ブ ジ ェ ク ト に 関 し て は 保 守 的 な 仮 定 を 行 い ま す 。 例 え ば 、 コ ン パ イ ラ は a が 以 下 の コ ー ド に お い て ヌ ル で な い こ と を チ ェ ッ ク す る 必 要 が あ り ま す 。

obj &a = g (); a.f (2); こ の 種 の 参 照 が ヌ ル で な い こ と の チ ェ ッ ク は 、 特 別 な コ ー ド を 必 要 と し ま す 。 し か し 、 こ れ は 多 く の プ ロ グ ラ ム に と っ て 無 用 な も の で す 。 こ の ヌ ル に 対 す る チ ェ ッ ク を 必 要 の な い 場 合 ’−fnonnull-objects’ を 使 用 す る こ と に よ り 、 省 略 す る こ と が で き ま す 。

−fpcc−struct−return

structunion の 値 を 返 す 場 合 に 、 普 通 の C コ ン パ イ ラ が 行 な う の と 同 じ 規 約 を 使 用 し ま す 。 こ の 規 約 は 小 規 模 な 構 造 体 に 対 し て 非 効 率 な も の と な り 、 ま た 多 く の マ シ ン で そ の 関 数 を 再 入 不 可 能 と し て し ま い ま す 。 し か し こ れ は 、 GCC で コ ン パ イ ル さ れ た コ ー ド と PCC で コ ン パ イ ル さ れ た コ ー ド を 相 互 に 呼 び 出 す こ と を 可 能 と す る と い う 利 点 を 持 ち ま す 。

−freg−struct−return

structunion の 値 を 返 す 場 合 に 、 可 能 な 場 合 は レ ジ ス タ を 使 用 す る 規 約 を 使 用 し ま す 。 こ れ は −fpcc−struct−return を 使 用 し た 場 合 と 比 較 し て 、 小 さ な 構 造 体 を 返 す 場 合 に 高 い 性 能 を 発 揮 し ま す 。

−fpcc−struct−return−freg−struct−return の ど ち ら も 使 用 し な か っ た 場 合 に は 、 GNU CC は 各 タ ー ゲ ッ ト に 対 し て 標 準 で あ る と 考 え ら れ る 規 約 を デ フ ォ ル ト と し て 使 用 し ま す 。 も し 標 準 規 約 が な か っ た 場 合 は 、 −fpcc−struct−return を デ フ ォ ル ト と し て 使 用 し ま す 。

−fshort−enums

enum 型 に 対 し て 、 ち ょ う ど 取 り 得 る 値 の 範 囲 に 応 じ た バ イ ト 数 の 型 を 与 え ま す 。 具 体 的 に は 、 enum 型 は 、 そ の 値 域 を 格 納 す る に 十 分 な 最 小 の 整 数 型 と 等 価 に な り ま す 。

−fshort−double

doublefloat と 同 サ イ ズ に し ま す 。

−fshared−data デ ー タ と 非 const 変 数 を 、 プ ラ イ ベ ー ト な デ ー タ で は な く 、 共 有 デ ー タ と し て コ ン パ イ ル し ま す 。 こ の オ プ シ ョ ン は 、 走 行 中 の 同 じ プ ロ グ ラ ム 間 は 共 有 デ ー タ が 共 有 さ れ 、 プ ラ イ ベ ー ト デ ー タ が そ れ ぞ れ の プ ロ セ ス に 1 つ ず つ 与 え ら れ る よ う な 一 部 の オ ペ レ ー テ ィ ン グ シ ス テ ム で 意 味 を 持 ち ま す 。
−fno−common

bss セ ク シ ョ ン 中 の 初 期 化 さ れ て い な い グ ロ ー バ ル 変 数 に 対 し て で も 、 共 通 ブ ロ ッ ク に 生 成 す る の で は な く 、 領 域 を 割 り 当 て ま す 。 こ の オ プ シ ョ ン は 、 (extern を つ け ず に ) 同 一 の 変 数 を 宣 言 し た 2 つ の コ ン パ イ ル に 対 し て 、 リ ン ク 時 に エ ラ ー を 発 生 す る と い う 効 果 が あ り ま す 。 こ の オ プ シ ョ ン は 、 常 に こ の よ う な 動 作 を 行 な う シ ス テ ム に お い て も 、 プ ロ グ ラ ム が 正 常 に 動 作 す る か ど う か を 検 査 す る 場 合 に の み 有 用 で す 。

−fno−ident

#ident’ デ ィ レ ク テ ィ ブ を 無 視 し ま す 。

−fno−gnu−linker

(C++ の コ ン ス ト ラ ク タ と デ ス ト ラ ク タ の よ う な ) グ ロ ー バ ル な 初 期 化 の コ ー ド を (GNU リ ン カ が こ れ ら を 扱 う 標 準 の シ ス テ ム で あ る よ う な シ ス テ ム に お い て ) GNU リ ン カ で 使 用 さ れ る 形 式 で 出 力 し ま せ ん 。 こ れ は GNU リ ン カ で は な い リ ン カ を 使 用 す る 場 合 に 指 定 し ま す 。 こ の 場 合 、 collect2 を 使 用 し て 、 確 実 に シ ス テ ム リ ン カ に コ ン ス ト ラ ク タ と デ ス ト ラ ク タ を 含 ん だ コ ー ド を 出 力 さ せ る 必 要 が あ り ま す 。 (collect2 は GNU CC の デ ィ ス ト リ ビ ュ ー シ ョ ン に 含 ま れ ま す 。 ) collect2必 ず 使 用 し な け れ ば な ら な い シ ス テ ム に お い て は 、 コ ン パ イ ラ ド ラ イ バ gcc は 自 動 的 に そ の よ う に コ ン フ ィ ギ ュ レ ー シ ョ ン さ れ ま す 。

−finhibit-size-directive

.sizeア セ ン ブ ラ デ ィ レ ク テ ィ ブ な ど 、 関 数 が 途 中 で 分 割 さ れ 、 メ モ リ 上 の 異 な っ た 位 置 に そ れ ぞ れ の 部 分 が 配 置 さ れ る よ う な 場 合 に 不 都 合 が 生 じ る よ う な 要 素 を 出 力 し ま せ ん 。 こ の オ プ シ ョ ン は ’crtstuff.c’ を コ ン パ イ ル す る 時 に 使 用 さ れ ま す 。 そ れ 以 外 の 場 所 で は こ れ を 使 用 す る 必 要 は あ り ま せ ん 。

−fverbose-asm 出 力 の ア セ ン ブ ラ 中 に 特 別 な コ メ ン ト 情 報 を 追 加 し 、 可 読 性 を 高 め ま す 。 こ の オ プ シ ョ ン は 一 般 的 に は 、 出 力 の ア セ ン ブ ラ コ ー ド を 本 当 に 読 み た い 場 合 (例 え ば コ ン パ イ ラ 自 身 を デ バ ッ グ し て い る よ う な 場 合 ) に の み 効 果 が あ り ま す 。
−fvolatile
ポ イ ン タ に よ る メ モ リ の 参 照 を 全 て volatile と し て 扱 い ま す 。
−fvolatile−global
外 部 変 数 や グ ロ ー バ ル デ ー タ ア イ テ ム へ の メ モ リ 参 照 を 全 て volatile と し て 扱 い ま す 。

−fpic こ の オ プ シ ョ ン が タ ー ゲ ッ ト マ シ ン で サ ポ ー ト さ れ て い れ ば 、 位 置 独 立 な コ ー ド を 出 力 し ま す 。 こ の オ プ シ ョ ン は 共 有 ラ イ ブ ラ リ で の 使 用 に 適 し ま す 。

−fPIC こ の オ プ シ ョ ン が タ ー ゲ ッ ト マ シ ン で サ ポ ー ト さ れ て い れ ば 、 位 置 独 立 な コ ー ド を 出 力 し ま す 。 こ の オ プ シ ョ ン は ダ イ ナ ミ ッ ク リ ン ク に 適 し て お り 、 分 岐 に お い て 大 き な デ ィ ス プ レ ー ス メ ン ト を 要 求 す る 場 合 に も 適 応 し ま す 。

−ffixed−reg 名 前 が reg の レ ジ ス タ を 固 定 レ ジ ス タ と し て 扱 い ま す 。 生 成 さ れ た コ ー ド は こ の レ ジ ス タ を 参 照 し ま せ ん (た だ し 、 ス タ ッ ク ポ イ ン タ 、 フ レ ー ム ポ イ ン タ 、 そ の 他 固 定 用 途 の 場 合 を 除 き ま す )。

reg は レ ジ ス タ 名 で な け れ ば な り ま せ ん 。 受 け 付 け ら れ る レ ジ ス タ 名 は マ シ ン 固 有 で あ り 、 マ シ ン 記 述 マ ク ロ フ ァ イ ル 内 の REGISTER_NAMES マ ク ロ に 記 述 さ れ た も の で す 。 こ の フ ラ グ は 無 効 形 式 を 持 ち ま せ ん 。 な ぜ な ら 、 こ れ は 3 通 り の 指 定 が 可 能 で あ る か ら で す 。

−fcall−used−reg 名 前 が reg の レ ジ ス タ を 、 関 数 呼 び 出 し に よ っ て 破 壊 さ れ る 割 り 当 て 可 能 の レ ジ ス タ と し て 取 り 扱 い ま す 。 こ れ は 、 関 数 呼 び 出 し を 跨 い で 存 在 し な い 一 時 領 域 や 変 数 と し て 割 り 当 る こ と が で き ま す 。 こ の 指 定 で コ ン パ イ ル さ れ た 関 数 は 、 レ ジ ス タ reg の 保 存 や 復 帰 を 行 い ま せ ん 。 こ の フ ラ グ を マ シ ン の 実 行 モ デ ル に お い て 、 あ る 固 定 的 で 特 殊 な 役 割 を 持 っ て い る レ ジ ス タ 、 例 え ば ス タ ッ ク ポ イ ン タ や フ レ ー ム ポ イ ン タ に 対 し て 適 用 す る こ と は 、 破 滅 的 な 結 果 を 生 み ま す 。 こ の フ ラ グ は 無 効 形 式 を 持 ち ま せ ん 。 な ぜ な ら 、 こ れ は 3 通 り の 指 定 が 可 能 で あ る か ら で す 。
−fcall−saved−
reg 名 前 が reg の レ ジ ス タ を 、 関 数 に よ っ て 保 存 さ れ る 割 り 当 て 可 能 な レ ジ ス タ と し て 取 り 扱 い ま す 。 こ れ は 、 関 数 呼 び 出 し を 跨 い で 存 在 す る 一 時 領 域 や 変 数 と し て も 割 り 当 て る こ と が で き ま す 。 こ の 指 定 で コ ン パ イ ル さ れ た 関 数 は 、 レ ジ ス タ reg を 使 用 す る 場 合 、 そ の 保 存 と 復 帰 を 行 い ま す 。 こ の フ ラ グ を マ シ ン の 実 行 モ デ ル に お い て 、 あ る 固 定 的 で 特 殊 な 役 割 を 持 っ て い る レ ジ ス タ 、 例 え ば ス タ ッ ク ポ イ ン タ や フ レ ー ム ポ イ ン タ に 対 し て 適 用 す る こ と は 、 破 滅 的 な 結 果 を 生 み ま す 。 ま た 、 こ の フ ラ グ を 関 数 の 返 り 値 が 格 納 さ れ る レ ジ ス タ に 使 用 す る と 、 こ れ も 破 滅 的 な 結 果 を 生 み ま す 。 こ の フ ラ グ は 無 効 形 式 を 持 ち ま せ ん 。 な ぜ な ら 、 こ れ は 3 通 り の 指 定 が 可 能 で あ る か ら で す 。

プ ラ グ マ

2 つ の ’#pragma’ デ ィ レ ク テ ィ ブ (指 令 )が GNU C++ に よ っ て サ ポ ー ト さ れ て い ま す 。 こ れ は 、 1 つ の ヘ ッ ダ フ ァ イ ル を 2 つ の 目 的 、 つ ま り あ る オ ブ ジ ェ ク ト ク ラ ス の た め の イ ン タ フ ェ ー ス の 定 義 と し て の 目 的 と 、 オ ブ ジ ェ ク ト ク ラ ス に 含 ま れ る 内 容 の 完 全 な 定 義 と し て の 目 的 の 、 両 方 の 目 的 で 使 用 す る た め の も の で す 。
#pragma interface

(C++ の み ) こ の デ ィ レ ク テ ィ ブ を 、 オ ブ ジ ェ ク ト ク ラ ス を 定 義 し て い る ヘ ッ ダ フ ァ イ ル 中 に 使 用 す る こ と に よ っ て 、 そ れ ら の ク ラ ス を 使 用 す る ほ と ん ど の オ ブ ジ ェ ク ト フ ァ イ ル の 大 き さ を 減 少 さ せ る こ と が で き ま す 。 通 常 は 、 特 定 の 情 報 (イ ン ラ イ ン メ ン バ 関 数 の バ ッ ク ア ッ プ コ ピ ー 、 デ バ ッ グ 情 報 、 仮 想 関 数 実 現 の た め の 内 部 テ ー ブ ル ) の 複 製 が そ の ク ラ ス 定 義 を イ ン ク ル ー ド し た そ れ ぞ れ の オ ブ ジ ェ ク ト フ ァ イ ル 中 に 置 か れ ま す 。 こ の プ ラ グ マ を 使 用 す る こ と に よ っ て 、 こ の よ う な 複 製 を 防 ぐ こ と が 可 能 と な り ま す 。 ’#pragma interface’ を 含 ん だ ヘ ッ ダ フ ァ イ ル を イ ン ク ル ー ド し た 場 合 は 、 こ れ ら の 追 加 情 報 は 生 成 さ れ ま せ ん (た だ し 、 メ イ ン の 入 力 ソ ー ス フ ァ イ ル 自 身 が ’#pragma implementation’ を 含 ん で い る 場 合 を 除 き ま す )。 そ の か わ り 、 オ ブ ジ ェ ク ト フ ァ イ ル は リ ン ク 時 に 解 決 さ れ る 参 照 を 含 む こ と に な り ま す 。

#pragma implementation
#pragma implementation "
objects.h"

(C++ の み ) イ ン ク ル ー ド さ れ た ヘ ッ ダ フ ァ イ ル に よ る 完 全 な 出 力 を 生 成 さ せ た い (ま た そ れ を グ ロ ー バ ル に 可 視 化 し た い ) 場 合 に は 、 メ イ ン の 入 力 フ ァ イ ル 中 で こ の プ ラ グ マ を 使 用 し ま す 。 こ の 場 合 、 イ ン ク ル ー ド さ れ る ヘ ッ ダ フ ァ イ ル は 、 ’#pragma interface’ を 使 用 し て い な け れ ば な り ま せ ん 。 イ ン ラ イ ン 関 数 の バ ッ ク ア ッ プ 情 報 、 デ バ ッ グ 情 報 、 仮 想 関 数 実 現 用 の 内 部 テ ー ブ ル は 、 全 て イ ン プ リ メ ン テ ー シ ョ ン フ ァ イ ル 中 に 生 成 さ れ ま す 。

#pragma implementation’ を 、 引 数 を つ け ず に 使 用 し た 場 合 は 、 こ れ は そ の ソ ー ス フ ァ イ ル と 同 じ ベ ー ス ネ ー ム (basename)を 持 つ フ ァ イ ル に 対 し て 適 用 さ れ ま す 。 例 え ば 、 ’allclass.cc’ 中 の ’#pragma implementation’ は 、 ’#pragma implementation “allclass.h” ’ と 等 価 で す 。 も し 複 数 の ヘ ッ ダ フ ァ イ ル に 対 し て 、 1 つ の イ ン プ リ メ ン テ ー シ ョ ン フ ァ イ ル を 対 応 さ せ た い 場 合 は 、 文 字 列 の 引 数 を 使 用 す る 必 要 が あ り ま す 。

1 つ の ヘ ッ ダ フ ァ イ ル に 対 し て 、 複 数 の イ ン プ リ メ ン テ ー シ ョ ン フ ァ イ ル を 対 応 さ せ る 方 法 は あ り ま せ ん 。

関 連 フ ァ イ ル

file.c C 言 語 ソ ー ス フ ァ イ ル

file.h

C 言 語 ヘ ッ ダ (プ リ プ ロ セ ッ サ ) フ ァ イ ル

file.i

プ リ プ ロ セ ス 済 み の C 言 語 ソ ー ス フ ァ イ ル

file.C

C++ ソ ー ス フ ァ イ ル

file.cc

C++ ソ ー ス フ ァ イ ル

file.cxx

C++ ソ ー ス フ ァ イ ル

file.m

Objective-C ソ ー ス フ ァ イ ル

file.s

ア セ ン ブ リ 言 語 フ ァ イ ル

file.o

オ ブ ジ ェ ク ト フ ァ イ ル

a.out

リ ン ク エ デ ィ ッ ト 済 み の 出 力

TMPDIR/cc∗

一 時 フ ァ イ ル 群

LIBDIR/cpp

プ リ プ ロ セ ッ サ

LIBDIR/cc1

C 言 語 コ ン パ イ ラ

LIBDIR/cc1plus

C++ コ ン パ イ ラ

LIBDIR/collect

い く つ か の マ シ ン で 必 要 と な る リ ン カ の フ ロ ン ト エ ン ド

LIBDIR/libgcc.a

GCC サ ブ ル ー チ ン ラ イ ブ ラ リ

/lib/crt[01n].o

ス タ ー ト ア ッ プ ル ー チ ン

LIBDIR/ccrt0

C++ 用 の 付 加 的 な ス タ ー ト ア ッ プ ル ー チ ン

/lib/libc.a

標 準 ラ イ ブ ラ リ 、 intro(3)を 参 照

/usr/include

#include フ ァ イ ル の た め の 標 準 デ ィ レ ク ト リ

LIBDIR/include

#include フ ァ イ ル の た め の GCC 標 準 デ ィ レ ク ト リ

LIBDIR/g++−include

#include フ ァ イ ル の た め の 付 加 的 な g++ デ ィ レ ク ト リ

LIBDIR は 通 常 /usr/local/lib/machine/version の 形 式 を 持 ち ま す
TMPDIR
は 環 境 変 数 TMPDIR (も し 使 用 可 能 な ら ば /usr/tmp を 、 そ う で な け れ ば /tmp を 使 用 し ま す ) か ら と ら れ ま す 。

関 連 項 目

as(1), cpp(1), gdb(1), ld(1)
info
中 の ’gcc’, ’cpp’, ’as’, ’ld’, ’gdb’ エ ン ト リ
Using and Porting GNU CC (for version 2.0)
, Richard M. Stallman; The C Preprocessor, Richard M. Stallman; Debugging with GDB: the GNU Source-Level Debugger, Richard M. Stallman and Roland H. Pesch; Using as: the GNU Assembler, Dean Elsner, Jay Fenlason & friends; ld: the GNU linker, Steve Chamberlain and Roland Pesch.

バ グ

バ グ を 報 告 す る 方 法 に つ い て は 、 GCC マ ニ ュ ア ル を 参 照 し て く だ さ い 。

COPYING

Copyright 1991, 1992, 1993 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.

作 者

GNU CC に 対 し て 貢 献 し た 人 々 に 関 し て は 、 GNU CC マ ニ ュ ア ル を 参 照 し て く だ さ い 。

日 本 語 訳

細 川 達 己 (hosokawa [AT] mt.jp): NetBSD 用 に 翻 訳

sakai [AT] csl.jp, h-nokubi [AT] nmit.jp,
kumano [AT] strl.jp, horikawa [AT] isrd.jp: FreeBSD 向 け に 修 正 , 査 閲