Man page - gcc(1)
Available languages:
en jaManual
GCC
名 称書 式
注 意
解 説
オ プ シ ョ ン
FreeBSD 固 有 の オ プ シ ョ ン
全 体 的 な オ プ シ ョ ン
言 語 オ プ シ ョ ン
プ リ プ ロ セ ッ サ オ プ シ ョ ン
ア セ ン ブ ラ オ プ シ ョ ン
リ ン カ オ プ シ ョ ン
デ ィ レ ク ト リ オ プ シ ョ ン
警 告 オ プ シ ョ ン
デ バ ッ グ オ プ シ ョ ン
最 適 化 オ プ シ ョ ン
タ ー ゲ ッ ト オ プ シ ョ ン
マ シ ン 依 存 オ プ シ ョ ン
コ ー ド 生 成 オ プ シ ョ ン
プ ラ グ マ
関 連 フ ァ イ ル
関 連 項 目
バ グ
COPYING
作 者
日 本 語 訳
名 称
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 ’ 形 式 の オ プ シ ョ ン に は 、 -f name と -fno- name (ま た は -W name と -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 -d letters -fpretend-float -g -g level -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
プ リ プ ロ セ ッ サ オ プ シ ョ ン
-A assertion -C -dD -dM -dN -D macro [= defn ] -E -H -idirafter dir -include file -imacros file -iprefix file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P -U macro -undef
ア セ ン ブ ラ オ プ シ ョ ン
-Wa, option
リ ン カ オ プ シ ョ ン
-l library -nostartfiles -nostdlib -static -shared -symbolic -Xlinker option -Wl, option -u symbol
デ ィ レ ク ト リ オ プ シ ョ ン
-B prefix -I dir -I- -L dir
タ ー ゲ ッ ト オ プ シ ョ ン
-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
オ プ シ ョ ン
-m
cpu-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 な ど の キ ー ワ ー ド や 、 unix や vax な ど の 現 在 使 用 し て い る シ ス テ ム を 規 定 す る 定 義 済 み マ ク ロ な ど が 抑 制 さ れ ま す 。 さ ら に 、 好 ま し く な く か つ ほ と ん ど 使 用 さ れ な い 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 イ ン ク ル ー ド パ ス に 追 加 し ま す 。 デ ィ レ ク ト リ 名 は prefix と dir を 連 結 す る こ と に よ っ て 得 ら れ ま す 。 こ こ で 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 |
通 常 の 動 作 に 加 え て 、 使 用 さ れ た ヘ ッ ダ フ ァ イ ル の 名 前 を 表 示 し ま す 。 |
-A question ( answer )
question に 対 す る ア サ ー シ ョ ン answer を 定 義 し ま す 。 こ れ は ‘ #if # question ( answer ) ’ の よ う な プ リ プ ロ セ ッ サ 条 件 節 に よ っ て テ ス ト さ れ ま す 。 ‘ -A- ’ は 標 準 の ア サ ー シ ョ ン (通 常 は タ ー ゲ ッ ト マ シ ン に 関 す る 情 報 を 表 し て い る )を 禁 止 し ま す 。
-D macro
マ ク ロ macro に 対 し て 文 字 列 ‘ 1 ’ を 定 義 と し て 与 え ま す 。
-D macro = defn
マ ク ロ macro を defn と し て 定 義 し ま す 。 コ マ ン ド ラ イ ン 上 の 全 て の ‘ -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 で あ る ラ イ ブ ラ リ を リ ン ク 時 に 使 用 し ま す 。
リ ン カ は 、 標 準 の ラ イ ブ ラ リ 用 デ ィ レ ク ト リ の リ ス ト 中 か ら 、 実 際 の フ ァ イ ル 名 が ‘ lib library .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 ’ は 異 な っ た シ ン ボ ル に 対 し て 複 数 回 使 用 す る こ と が で き ま す 。 こ れ に よ っ て 、 さ ら に 多 く の ラ イ ブ ラ リ モ ジ ュ ー ル を 読 み 込 ま せ る こ と が で き ま す 。
デ ィ レ ク ト リ オ プ シ ョ ン
こ れ ら の オ プ シ ョ ン は 、 ヘ ッ ダ フ ァ イ ル 、 ラ イ ブ ラ リ 、 コ ン パ イ ラ の 一 部 を 検 索 す る デ ィ レ ク ト リ を 指 定 す る た め に 使 用 さ れ ま す 。
|
-I dir |
デ ィ レ ク ト リ dir を 、 イ ン ク ル ー ド フ ァ イ ル の 検 索 す る デ ィ レ ク ト リ の リ ス ト 中 に 追 加 し ま す 。 |
||
|
-I- |
‘ -I- ’ オ プ シ ョ ン 指 定 前 に ‘ -I ’ オ プ シ ョ ン に よ っ て 指 定 さ れ た 全 て の デ ィ レ ク ト リ は 、 ‘ #include " file " ’ の 形 式 に よ っ て の み 検 索 さ れ ま す 。 こ れ ら の デ ィ レ ク ト リ は ‘ #include < file > ’ に よ っ て は 検 索 さ れ ま せ ん 。 |
‘ -I- ’ オ プ シ ョ ン 指 定 後 に ‘ -I ’ で 指 定 し た デ ィ レ ク ト リ は 、 全 て の ‘ #include ’ 命 令 に よ っ て 検 索 さ れ ま す 。 (通 常 は 全 て の ‘ -I ’ で 指 定 さ れ た デ ィ レ ク ト リ は こ の 方 法 で 検 索 さ れ ま す 。 )
こ れ に 加 え て ‘ -I- ’ オ プ シ ョ ン は 、 カ レ ン ト デ ィ レ ク ト リ (現 在 の 入 力 フ ァ イ ル が 存 在 す る デ ィ レ ク ト リ ) が ‘ #include " file " ’ に 対 す る 最 初 の 検 索 対 象 と な る こ と を 抑 制 し ま す 。 ‘ -I- ’ に よ る こ の 効 果 を 上 書 き す る 方 法 は あ り ま せ ん 。 ‘ -I. ’ を 指 定 す る こ と に よ っ て 、 コ ン パ イ ラ が 起 動 さ れ た デ ィ レ ク ト リ が 検 索 さ れ る こ と を 指 定 す る こ と は 可 能 で す 。 こ れ は プ リ プ ロ セ ッ サ が 行 な う デ フ ォ ル ト の 動 作 と は 異 な り ま す が 、 た い て い は こ れ で 十 分 で す 。
‘ -I- ’ は 、 ヘ ッ ダ フ ァ イ ル の 検 索 に 標 準 の シ ス テ ム デ ィ レ ク ト リ を 使 う こ と を 抑 制 す る わ け で は あ り ま せ ん 。 従 っ て 、 ‘ -I- ’ と ‘ -nostdinc ’ は 独 立 で す 。
|
-L dir |
デ ィ レ ク ト リ dir を ‘ -l ’ に よ る 検 索 が 行 な わ れ る デ ィ レ ク ト リ の リ ス ト に 加 え ま す 。 |
-B prefix
こ の オ プ シ ョ ン は コ ン パ イ ラ 自 身 の 実 行 形 式 、 ラ イ ブ ラ リ 、 デ ー タ フ ァ イ ル の 検 索 場 所 を 指 定 し ま す 。
コ ン パ イ ラ ド ラ イ バ は サ ブ プ ロ グ ラ ム ‘ 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;
}
あ る 関 数 ( abort や longjmp を 含 む ) が 決 し て リ タ ー ン し な い と い う こ と を 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 ] を 与 え 、 非 - const の char ∗ ポ イ ン タ へ の ア ド レ ス の コ ピ ー に 対 し て 警 告 す る よ う に し ま す 。 こ の 警 告 は 、 宣 言 と プ ロ ト タ イ プ に お い て 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 の 双 方 を デ バ ッ グ す る た め に 、 多 く の オ プ シ ョ ン を 備 え て い ま す 。
|
-g |
オ ペ レ ー テ ィ ン グ シ ス テ ム の ネ イ テ ィ ブ の フ ォ ー マ ッ ト (stabs, COFF, 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 拡 張 を 使 用 し ま す 。 こ れ ら の 拡 張 を 使 用 す る と 、 他 の デ バ ッ ガ に 対 し て は ク ラ ッ シ ュ や プ ロ グ ラ ム を 読 み と り 不 能 に す る な ど の 影 響 を 及 ぼ し 得 ま す 。
-g
level
-ggdb
level
-gstabs
level
-gcoff
level
-gxcoff
level
-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 命 令 を ト レ ー ス に 含 め る よ う に し ま す 。 |
-d letters
コ ン パ イ ル 中 の 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 オ プ シ ョ ン を 指 定 し た 場 合 は 、 レ ベ ル 番 号 の 有 無 に 関 わ ら ず 、 最 後 に 指 定 し た も の が 有 効 に な り ま す 。
‘
-f
flag
’
の 形 式 を 持 っ
た オ プ シ ョ ン
は 、 マ シ ン 独
立 の フ ラ グ で
す 。 ほ と ん ど
の フ ラ グ は 有
効 形 式 と 無 効
形 式 の 双 方 を
持 っ て い ま す
。 ‘
-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++ は 以 下 の コ ー ド に 対 し て 、 一 時 オ ブ ジ ェ ク ト を 経 由 せ ず に y を foo へ の 呼 び 出 し の 結 果 か ら 直 接 初 期 化 し ま す 。
A foo (); A y = foo ();
こ の オ プ シ ョ ン を 使 用 し な い 場 合 は 、 GNU C++ は 最 初 に y を A 型 の 適 切 な コ ン ス ト ラ ク タ を 呼 び 出 す こ と に よ っ て 初 期 化 し ま す 。 そ し て 、 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.h や stdarg.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-type は default で す 。 こ の 選 択 は す べ て の マ シ ン に 対 す る 最 長 の サ イ ク ル 数 を 元 に コ ー ド を 生 成 し ま す 。 こ れ は 、 生 成 さ れ る コ ー ド が ど の 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 が 実 行 さ れ な い と 、 デ バ ッ ガ か ら は ロ ー カ ル 変 数 を 扱 う こ と が で き ま せ ん 。 さ ら に 、 stage2 と stage3 の オ ブ ジ ェ ク ト は ア セ ン ブ ラ に 渡 さ れ る 一 時 的 な フ ァ イ ル 名 を オ ブ ジ ェ ク ト フ ァ イ ル 中 に 埋 め 込 ま れ て 持 っ て お り 、 こ の た め そ れ ら を 比 較 し た 場 合 に 同 一 の も の と は み な さ れ ま せ ん 。
-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 ス イ ッ チ は 、 テ キ ス ト セ ク シ ョ ン 中 に 参 照 を 配 置 す る 代 わ り に 、 外 部 参 照 を 行 な う ポ イ ン タ を デ ー タ セ ク シ ョ ン に 配 置 し 、 そ れ を ロ ー ド す る 動 作 を 指 定 し ま す 。 こ の オ プ シ ョ ン は 現 在 ま だ 動 作 し ま せ ん 。 -G num は num バ イ ト 以 下 の グ ロ ー バ ル 、 あ る い は 静 的 な ア イ テ ム を 、 通 常 の デ ー タ や bss セ ク シ ョ ン で は な く 、 小 さ な デ ー タ 、 ま た は bss セ ク シ ョ ン に 配 置 す る こ と を 指 定 し ま す 。 こ れ に よ り ア セ ン ブ ラ は 、 通 常 で は 2 ワ ー ド の 参 照 を 行 う と こ ろ を 、 グ ロ ー バ ル ポ イ ン タ ( gp ま た は $28 ) を 基 準 と し た 1 ワ ー ド の メ モ リ 参 照 命 令 を 生 成 可 能 と な り ま す 。 デ フ ォ ル ト で は MIPS ア セ ン ブ ラ が 使 用 さ れ る 場 合 、 num は 8 で す 。 ま た 、 GNU ア セ ン ブ ラ が 使 用 さ れ る 場 合 の デ フ ォ ル ト は 0 で す 。 -G num ス イ ッ チ は ア セ ン ブ ラ 、 リ ン カ に も 同 様 に 渡 さ れ ま す 。 全 て の モ ジ ュ ー ル は 同 一 の -G num の 値 で コ ン パ イ ル さ れ な け れ ば な り ま せ ん 。
|
-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 が 存 在 し な く て も float と double の 結 果 を 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-type は kb で す 。 そ の 他 の 選 択 と し て は 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
struct と union の 値 を 返 す 場 合 に 、 普 通 の C コ ン パ イ ラ が 行 な う の と 同 じ 規 約 を 使 用 し ま す 。 こ の 規 約 は 小 規 模 な 構 造 体 に 対 し て 非 効 率 な も の と な り 、 ま た 多 く の マ シ ン で そ の 関 数 を 再 入 不 可 能 と し て し ま い ま す 。 し か し こ れ は 、 GCC で コ ン パ イ ル さ れ た コ ー ド と PCC で コ ン パ イ ル さ れ た コ ー ド を 相 互 に 呼 び 出 す こ と を 可 能 と す る と い う 利 点 を 持 ち ま す 。
-freg-struct-return
struct と union の 値 を 返 す 場 合 に 、 可 能 な 場 合 は レ ジ ス タ を 使 用 す る 規 約 を 使 用 し ま す 。 こ れ は -fpcc-struct-return を 使 用 し た 場 合 と 比 較 し て 、 小 さ な 構 造 体 を 返 す 場 合 に 高 い 性 能 を 発 揮 し ま す 。
-fpcc-struct-return と -freg-struct-return の ど ち ら も 使 用 し な か っ た 場 合 に は 、 GNU CC は 各 タ ー ゲ ッ ト に 対 し て 標 準 で あ る と 考 え ら れ る 規 約 を デ フ ォ ル ト と し て 使 用 し ま す 。 も し 標 準 規 約 が な か っ た 場 合 は 、 -fpcc-struct-return を デ フ ォ ル ト と し て 使 用 し ま す 。
-fshort-enums
enum 型 に 対 し て 、 ち ょ う ど 取 り 得 る 値 の 範 囲 に 応 じ た バ イ ト 数 の 型 を 与 え ま す 。 具 体 的 に は 、 enum 型 は 、 そ の 値 域 を 格 納 す る に 十 分 な 最 小 の 整 数 型 と 等 価 に な り ま す 。
-fshort-double
double を float と 同 サ イ ズ に し ま す 。
-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@mt.cs.keio.ac.jp):
NetBSD 用 に 翻 訳
sakai@csl.cl.nec.co.jp, h-nokubi@nmit.mt.nec.co.jp,
kumano@strl.nhk.or.jp, horikawa@isrd.hitachi.co.jp: FreeBSD
向 け に 修 正 , 査
閲