祝・GCC 3.0リリース

■ このスレッドは過去ログ倉庫に格納されています
1さあね
垢版 |
NGNG
 一昔前は、そこらの商用コンパイラよりも良い最適化をする
といわれたGCCも最近は色あせてきてたけど。。。
 待望の新バージョンリリースで巻き返しなるか?

 とりあえずインストールしてみよう
2005/07/15(金) 09:20:30
>>608
少し上から貼ると、こんなかんじ

CCCMD = x86_64-pc-linux-gnu-gcc -DPERL_CORE -c -D_REENTRANT
-D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -mtune=k8 -march=k8
-msse3 -mfpmath=sse -ftracer -pipe -fforce-addr -minline-all-stringops
-mno-push-args -maccumulate-outgoing-args -fprefetch-loop-arrays
-fsched-spec-load -funit-at-a-time -Wall
x86_64-pc-linux-gnu-gcc -L/usr/local/lib -o miniperl \
miniperlmain.o opmini.o libperl.a -lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
make: [extra.pods] Error 1 (ignored)
./miniperl -Ilib configpm --heavy=lib/Config_heavy.pl configpm.tmp
Can't find configpm on PATH, '.' not in PATH.
make: *** [lib/Config.pm] Error 29

確かに、カレントディレクトリにconfigpmはあるんだけど。
2005/07/15(金) 11:26:27
>>609
ふむ、よくわからんけど、config.sh の optim から最適化を外し
て、./Configure -S したあと、gmake するとか、thread 無しでコンパイルし
てみるとか。やってみたらどうかね。
2005/07/15(金) 11:30:09
よくわからんけど、メッセージだけ読むと PATH=.:$PATH make
コンパイラの違いは不明
612607
垢版 |
2005/07/15(金) 15:45:30
やっぱり、インタプリタレベルスレッドを使わないと問題ないようです。
とりあえず、しばらくはperlだけ諦めます。
2005/07/17(日) 09:20:16
libpcapがgcc-4.0.1だと死にました。実際はtcpdumpから呼び出されて死ぬんだけど。
もう詳しい事はわからん。
2005/07/17(日) 09:51:55
>>613
gdb tcpdump core
backtrace
615613
垢版 |
2005/07/17(日) 11:28:40
-O2なら平気で-O3だと駄目みたい。
他に何も指定して無くても。
アーキテクチャはx86_64です。

tcpdumpのexpression指定しなければ落ちません。

バックトレースは深すぎるので、適当に
-O3 -ggdb3でlibpcapを作って
-O0 -ggdb3でtcpdump作った結果。

#0 0x00002aaaaae3125b in icode_to_fcode () from /usr/lib/libpcap.so.0
#1 0x00002aaaaae3159c in icode_to_fcode () from /usr/lib/libpcap.so.0
#2 0x00002aaaaae33efd in bpf_optimize () from /usr/lib/libpcap.so.0
#3 0x00002aaaaae25c07 in pcap_compile () from /usr/lib/libpcap.so.0
#4 0x00000000004500f4 in ?? ()
#5 0x00002aaaaaf67893 in __libc_start_main () from /lib/libc.so.6
2005/07/17(日) 11:40:39
-finline-functionsが原因みたい。単体でも落ちた。
2005/07/17(日) 12:35:40
x86_64 ってOSによっては安定してなかったり?
2005/07/17(日) 17:21:39
どうなんでしょう。私は、gentoo linux使ってます。
4.1-CVSでもprofilebootstrap失敗するし、i386と比べたら安定してないんでしょうね。
2005/07/17(日) 23:06:57
>>615
> アーキテクチャはx86_64です。

何故先に言わん(w
シグナル受けたんならどのシグナルかくらい晒さないと…
2005/07/18(月) 02:25:22
>>619
シグナル核の忘れてました。SEGVです。

dmesgが埋め尽くされてる。
tcpdump[24386]: segfault at 0000000000000030 rip 00002aaaaae3125b rsp 00007fffff82f1a8 error 4
2005/07/18(月) 07:45:07
バウンダリ関係かねえ。
libpcapを-g付きでcompileしてdebugが王道だと思うけど、
-mpreferred-stack-boundary= 辺りを試してみるのもいいかもねえ。
-march=k8にはなっているよね?
2005/07/18(月) 10:13:07
Linux 2.6.12.3にしてみたら動作が変わった…。

-O -finline-funcionsはokになりました。
-O2 -finline-functionsだと落ちます。
-O2はonになるフラグが多すぎて、ちょっと調べきれないです。

-finline-limitで11までに制限すればok。12以上で落ちます。
-march=k8指定、-mpreferred-stack-boundaryは4,8,12はどれも解決にはなりませんでした。

なんか、デバッグ情報が出るようになったので貼ってみます。libpcap-0.9.3です。
#0 find_levels_r (b=0x0) at optimize.c:222
#1 0x00002aaaaae2df2b in find_levels_r (b=0x6fe7b0) at optimize.c:230
#2 0x00002aaaaae2df1f in find_levels_r (b=0x6fdbc8) at optimize.c:229
#3 0x00002aaaaae2ec40 in opt_loop (root=0x6fdbc8, do_stmts=0)
at optimize.c:251
#4 0x00002aaaaae303fc in bpf_optimize (rootp=0x2aaaaaf463e0)
at optimize.c:1740
#5 0x00002aaaaae2592a in pcap_compile (p=0x6fd2b0, program=0x7fffffaf1260,
buf=0x6fd120 "port 80", optimize=1, mask=16777215) at gencode.c:386
#6 0x00000000004500f4 in ?? ()
#7 0x00002aaaaaf63893 in __libc_start_main () from /lib/libc.so.6

gcc-4.0.1で-fstack-check, 3.4.4で-fstack-protector使ってみたけど何も出ませんでした。
2005/07/18(月) 10:38:15
ifのjumpかな?
-Osだとどうだろう。

-falign-functions -falign-jumps -falign-loops -falign-labels
-freorder-blocks -fprefetch-loop-arrays がオフ。
2005/07/18(月) 11:19:08
-fno-strict-aliasing
をつけるとどうなる?

ttp://makimo.to/2ch/pc8_unix/1106/1106041204.html#582
ttp://slashdot.jp/comments.pl?sid=175355&cid=537217
2005/07/18(月) 11:35:46
>>623
-Osはだめでした。

>>624
いけました。ばっちりです。
いろいろ問題ありそうですけど、今のところこれ以外当たってないんですよね。
portageつかってるから、まずいのがわかっている場合は回避してる可能性がありますが。
626名無しさん@お腹いっぱい。
垢版 |
2005/09/18(日) 16:40:56
gcc4は-O1でも-fprefetch-loop-arrays効くのかな
2005/09/29(木) 09:12:48
4.0.2が出ました。
2005/09/29(木) 21:48:28
3.3や3.4より早いバイナリを作れるようになるのはいつですか?
2005/09/30(金) 00:18:55
4.3や4.4になるまでお待ちください。
2005/09/30(金) 07:45:55
つーか3.3, 3.4でいいじゃん。
4系はerror recoveryちょっと賢くなった気がするが。
2005/09/30(金) 14:43:19
GCCは3.2.xのころが一番早くて安定しててよかった。。。
2005/09/30(金) 14:44:13
631です。漢字間違えた。
「早」 → 「速」
2005/10/24(月) 01:07:39
でも4.xのcc1plusは明らかに3.xのより速いよ。
2005/10/24(月) 06:01:42
4.1のcc1plusは速い。
吐くコードは知らん。
635名無しさん@お腹いっぱい。
垢版 |
2005/11/28(月) 17:33:48
gcc-2.9では通るのにgcc-3.3では voidのとこでエラーになるんですが何故?
prase error before `!' token

2005/11/28(月) 17:46:07
コードさらせYO
2005/11/29(火) 14:54:40
なんでだお!
2005/11/29(火) 16:47:57
それだけの情報で、どう指摘するんだお!
2005/11/29(火) 19:12:21
先生! 問題を明確にしない限り、答える事もできないと思います!
\  
   ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧∩
    ( ・∀・)/
 _ / /   /  
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
2005/11/29(火) 19:15:13
(・3・) 先生は出張中です。
2005/12/02(金) 14:04:25
3.4.5 が出ました。
2005/12/06(火) 23:45:35
4.2まだー?
2005/12/12(月) 19:33:39
5.0はどうですか
2005/12/21(水) 10:16:41
>>635
そのgccエラーメッセージおかしいよ
野良ビルドしたんじゃないの?
praseってスペルミスありえない
2005/12/21(水) 14:39:52
エラーメッセージはコピペが基本だよなあ
2005/12/30(金) 15:49:37
ところでアンインストールはどうやったらいいの?
make uninstallだと弾かれる。
2005/12/30(金) 16:06:53
アプリのアンインストールってどうやるの?
http://pc8.2ch.net/test/read.cgi/unix/1051739612/
648名無しさん@お腹いっぱい。
垢版 |
2006/02/25(土) 21:54:59
4.1って安定版?
2006/02/25(土) 22:13:30
まだスナップショットしか出てないと思うけど。
私はLinux on amd64でメインに使ってます。
650名無しさん@お腹いっぱい。
垢版 |
2006/02/26(日) 00:37:13
>649
完成したら4.2として公開されるのでしょうか?
2006/02/26(日) 02:40:45
4.2ってスナップ出てるんあないっけ?
2006/02/26(日) 22:37:36
>>650
4.1が完成したら4.1として公開されますよ。
Linuxみたいに「このバージョンは安定版、このバージョンは実験版」
という区別はありません。
653648
垢版 |
2006/02/26(日) 23:58:48
どうもありがとうございました
2006/02/27(月) 03:06:18
そうはいってもGCCってmajor > minorなうちは実験版という評価がもっぱらのような
2006/02/27(月) 18:26:02
2.5.8とか
2006/02/27(月) 18:48:03
gcc-1.4.2 はいいデキでしたよ。
2006/02/28(火) 12:40:22
>>654
評価っていうかジンクスでしょ
2006/03/01(水) 15:25:28
gcc-4.1.0 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
659名無しさん@お腹いっぱい。
垢版 |
2006/03/02(木) 04:56:28
maji?
2006/03/02(木) 06:29:44
>>659
http://gcc.gnu.org/

> February 28, 2006
> GCC 4.1.0 has been released.

http://gcc.gnu.org/gcc-4.1/
2006/03/02(木) 21:52:08
4.0.2 までは素直にbuild通ってたのに4.1.0で落ちる orz
Solarisダメポ
2006/03/03(金) 12:29:17
Solarisはgccのバージョンが上がる最初の版は大抵そのままではうまくいかないw
2006/03/04(土) 18:54:23
New GCC Heavy on Optimization
http://www.internetnews.com/dev-news/article.php/3588926
664名無しさん@お腹いっぱい。
垢版 |
2006/03/05(日) 11:34:19
>>663 kwsk
665!= 633
垢版 |
2006/03/05(日) 15:06:27
>>664
十分に詳しいと思うが。もっと必要ならWikiなりML Archiveなり漁るが良し。
666名無しさん@お腹いっぱい。
垢版 |
2006/03/05(日) 17:30:07
「今度こそ、GCC 4.1正式リリース」
http://slashdot.jp/article.pl?sid=06/03/05/0253210
2006/03/11(土) 16:00:02
4.1使った人、どうよ?
2006/03/12(日) 15:01:42
.0のバージョンの割には3.4.0や4.0.0の時よりいい
2006/03/13(月) 19:49:58
GCC 4.0.3
http://kerneltrap.org/node/6320
2006/03/14(火) 10:19:50
sparc Solaris9 でlibtool と texinfo 入れて --disable-libgcj したらなんとか
gcc4.1.0コンパイルできた・・・
-m64 も使える。さて、何からやるか。
2006/03/15(水) 17:53:04
ちょっとコンパイルしてみたけど、以前のバージョンなら通ってたものが
エラーになるね。
error: static declaration of 'XXXXX' follows non-static declaration
とか、、、該当行のstatic外したら通ったが。
2006/03/19(日) 02:39:52
4系列になってから、全体的にCの構文に厳しくなったらしい。
muttなんかも構文警告が構文エラーになって、ビルドできなかった事がある。
2006/03/19(日) 22:33:39
3も2よりだいぶ厳しくなったといわれてたな。
2006/03/20(月) 12:26:36
LLVMまだ?
2006/03/25(土) 16:36:31
gcc4.1.0でgcc4.1.0を何回もコンパイルすると不定期にアセンブラが.identが見付からないよと言う壊れたコンパイラになる
2006/05/26(金) 15:37:24
gcc4.1.1きた?
2006/05/26(金) 17:14:25
>>676
ktkr
ttp://gcc.gnu.org/gcc-4.1/
2006/05/30(火) 15:35:05
gcc-4.1.1 Solaris玉砕 T_T);
2006/05/30(火) 20:31:56
GCCもそうだけど、GNUのツールってだいぶLinux-centricに
なってきて、広い影響力は以前より落ちている気がするね。
2006/05/31(水) 15:24:52
NetBSD-currentなんかも、ずっと3.3.3のまんまだもんな。

*BSDにおいてはGNU関連ツールは使わざるを得ないから使ってると
誰かが雑誌で言ってたな。
2006/05/31(水) 20:49:12
NetBSDは只今GCC4に切り替え中。

確かに NetBSD ぐらい CPU に対応してると、それ全部で使えるコンパイラを
新たに用意するのは難しいでしょうね。
GCCでもマイナーなCPUは切り捨てそうですけど。
2006/06/27(火) 20:26:29
OpenCC書いてくれTheo
683名無しさん@お腹いっぱい。
垢版 |
2006/09/03(日) 11:45:37
gcc 大きくなりすぎ
もっと軽い free な cc ないんだっけ?
2006/09/03(日) 12:14:51
お前には関係ない。
2006/09/03(日) 12:17:23
ビーのコアチームとやらで作ればいいじゃんwwwwwwwww
2006/09/04(月) 00:21:07
>>683
TenDRAを入れたいんだが未手付
ttp://www.tendra.org/
ttp://www.ten15.org/

後lccというのがある
ttp://www.cs.princeton.edu/software/lcc/
2006/09/04(月) 02:43:19
吐くコードが小さくて速けりゃgccが大きくたって問題はなかろうに。
軽い処理系だと十分なoptimizeができるとは思えんが。
2006/09/04(月) 13:12:28
gccもそのうちXみたいにモジュール化するんだろうか
2006/09/04(月) 14:12:08
TCC: Tiny C Compiler
http://fabrice.bellard.free.fr/tcc/

>>687
小さい軽い処理系に最適化なんて求めないよ
2006/09/04(月) 15:46:35
サイズに関する最適化は欲しい
2006/09/04(月) 18:40:32
熟女系の作品だとサイズが縮みます。
2006/09/04(月) 20:52:37
膨らむ奴もいる
2007/10/12(金) 01:45:29
保守
2007/10/18(木) 17:53:02
>>681
gccの問題というより、
NetBSDの方がバージョン移行のCPUテスター不足なんじゃないの?
Linuxはバージョン上げるのに成功しているし。
マイナーだと厳しいよね。
2007/11/04(日) 14:20:56
>>694
Linuxはとりあえずバージョン上げて、何かあったら大騒ぎするというやり方。
2008/02/16(土) 21:02:53
「Linuxは」というほどディストリでgccの扱い共通してない。
カーネルがgcc依存ってのくらい。
2008/06/06(金) 17:54:46
Fedora Core辺りは、
> とりあえずバージョン上げて、何かあったら大騒ぎする
のが仕事だしね。
698名無しさん@お腹いっぱい。
垢版 |
2008/06/24(火) 22:58:25
ほう、ついにGCC3.0が出たのか・・・時代の最先端を行く俺には欠かせないツールになるよ
699名無しさん@お腹いっぱい。
垢版 |
2008/08/11(月) 12:31:36
ところで、昔のC言語ではダメだったのに、今のCコンパイラでは
double sqrt(double); に
sqrt(2) とか引数に整数などdouble でないものを書いてもちゃんと
コンパイルして2の平方根の近似値を返すのはどうして?
プロトタイプ宣言を元にして、引数の型の自動変換が行われるの?
それってC++の仕様じゃないかな?
2008/08/11(月) 12:46:07
タイムトラベラーの方ですか?

C89以降、関数のプロトタイプ宣言(とそれに基いた昇格)はCでも当たり前の事ですが。
701名無しさん@お腹いっぱい。
垢版 |
2008/08/11(月) 16:11:49
ついでに質問しちゃおう。xを変数とするとき、

x = x++;

という代入文は、結果がどうなるか不定だと思うんだけども、
そこのあたりどうなっているでしょうか?
2008/08/11(月) 16:13:33
ム板で聞いた方がよくね
2008/08/11(月) 16:21:06
>>701
おいおい、よく見てみろ。(例が悪いよ)
= と ++ の動作が、どちらが先だとしても x の値は +1 されるだろ。
よって、結果がどうなるか不定ではない。
2008/08/11(月) 16:22:53
>>701
つ シーケンスポイント
規格持っているならそこを読んで。
ないならググッて。
2008/08/11(月) 16:28:20
せっかく2.95を超える世界制覇バージョンとなることが約束された3.0がリリースされたのに
他に言うことはないのか?
2008/08/11(月) 16:36:02
ないな。
707名無しさん@お腹いっぱい。
垢版 |
2008/08/11(月) 17:54:18
「シーケンスポイントに関する規約」に適合していないプログラムは
実行結果が保証されないことが分かった。
 さて、そうなると、規約を破っているソースコードに対しては、
それを警告してくれるコンパイラの機能が望まれる。
GCCではそのあたりがどうなっているのだろうか?
2008/08/11(月) 18:27:46
>>707
試せよ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況