1 :
さあね :
2001/06/19(火) 18:18 一昔前は、そこらの商用コンパイラよりも良い最適化をする といわれたGCCも最近は色あせてきてたけど。。。 待望の新バージョンリリースで巻き返しなるか? とりあえずインストールしてみよう
2 :
名無しさん@お腹いっぱい。 :2001/06/19(火) 19:13
-O2以上の最適化のバグは直った?
3 :
無党派さん :2001/06/19(火) 19:25
>>4 悪くないとと思うけど?
プログラム技術板の方がレスが期待できそうだが。
6 :
名無しさん@お腹いっぱい。 :2001/06/19(火) 19:49
まだglibcコンパイルできないし・・・
1を創造した宇宙人エロヒムです。 お騒がせしてもうしわけありません。 私どもは、1がどの程度の知能を備えているかを見ようと、 実験的にインターネットに接続させたのですが、いやはや、 その結果がこのお粗末なスレッドです。 私どもも宇宙に乗り出してもう10万年になるのですが、まだまだですね。 皆さんを生み出したような自然の進化にはかないません。 でも、今回の失敗の教訓を活かし、次はもう少しましな知性体を創造したい と思っています。 そんなわけで、もう少しだけ実験をつづけたいので、まことに恐縮ですが いましばらく御辛抱いただけないでしょうか? データがそろいましたら1はすぐに処分いたしますので。
>>7 のような文面が出てくるほどしょうもないスレでもないと思うがな
でもsage
9 :
名無しさん@お腹いっぱい。 :2001/06/19(火) 20:42
中身で勝負っしょ。 で、早速使った人はいる?
10 :
名無しさん@お腹いっぱい。 :2001/06/19(火) 21:10
じゃあ、 Pentium GCC との関係、Athlon 向け最適化のマージ等が どうなってるのか。識者の方、情報キボーン
12 :
java :2001/06/20(水) 20:26
gcj を使った人いますか? バイトコードインタプリタがついたように gcc/NEWS には書いてあります. #今gcc-3.0コンパイル中だけど,なかなか終わりません...
Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ・∀・)< 勉強のジャマだから上げないでくれる? _φ___⊂)__ \_______________ /旦/三/ /| | ̄ ̄ ̄ ̄ ̄| | |広島みかん|/
50000ペソって日本円でいくらだ?(w gcc3.0試してみたいけどミラーにまだ無かったので ダウンロードしてないや…
16 :
名無しさん@お腹いっぱい。 :2001/06/21(木) 22:54
17 :
ほげ〜 :2001/06/21(木) 23:48
Linux MandrakeではすでにRPMになっているらしい。
18 :
愚問 :2001/06/21(木) 23:57
GCCのコンパイルってGCCでやるの?
21 :
愚答 :2001/06/22(金) 00:31
>>18 ./configure --prefix=/usr/girl/manko --enable-languages=c --enable-hard-sex
make bootstrap rhythm="piston level2"
make install location="G spot"
Solarisだったもんで標準でコンパイラが無かったとき 古いバージョンのpkg落としてインストールしてから 最新バージョンをソースからコンパイルしてたよ その際、コンパイルが済んだら出来上がったgccでもっかい 自分自身をコンパイルし直すからえらい時間がかかったよ(w
>>18 ネタだとは思いつつマジレス
自身を正しく生成(bootstrap)できないコンパイラはイテーヨシ
漏れが若い頃、X68kでGCC作った漢たちの話をきいて
すげーと思った。もちろん、メーカの環境(糞XCだね)では
つくれなかったので、えらく苦労してた化膿。
25 :
12 :2001/06/24(日) 11:57
>>12 です.みごと失敗しました.(solaris7+gcc2.95.3)
試行錯誤して,インストールはできたのですが,
gcjの実行に失敗しました.
・binutils-2.11 をインストール
・./configure --with-ld=/usr/local/bin/ld --with-as=/usr/local/bin/as
% gcj -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.7/3.0/specs
Reading specs from libgcj.spec
gcj: libgcj.spec: No such file or directory
% gcc-3.0/sparc-sun-solaris2.7/libjava/gij -v
couldn't set locale correctly
ld.so.1: gij: fatal: relocation error: R_SPARC_32:
file /tmp/gcc-3.0/sparc-sun-solaris2.7/libjava/./.libs/libgcj.so.2:
symbol __gcj_personality_v0: offset 0xff2de359 is non-aligned
ld.so.1: gij: fatal: relocation error: R_SPARC_32:
file /tmp/gcc-3.0/sparc-sun-solaris2.7/libjava/./.libs/libgcj.so.2:
symbol __gcj_personality_v0: offset 0xff2de899 is non-aligned
ld.so.1: gij: fatal: relocation error: R_SPARC_32:
file /tmp/gcc-3.0/sparc-sun-solaris2.7/libjava/./.libs/libgcj.so.2:
symbol __gcj_personality_v0: offset 0xff2de95a is non-aligned
Bus error (core dumped)
26 :
12 :2001/06/24(日) 12:06
補足です. % gcj -specs=./libgcj.spec Hello.java Hello.java:0: unknown encoding: `646' This might mean that your locale's encoding is not supported by your system's iconv(3) implementation. If you aren't trying to use a particular encoding for your input file, try the `--encoding=UTF-8' option. compilation terminated. % gcj --encoding=UTF-8 -specs=./libgcj.spec Hello.java Segmentation fault (core dumped) % gdb `which gcj` core GNU gdb 4.18 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "sparc-sun-solaris2.7"... Core was generated by `gcj --encoding=UTF-8 -specs=./libgcj.spec /tmp/Hello.java'. Program terminated with signal 11, Segmentation Fault. Reading symbols from /usr/lib/libc.so.1...done. Reading symbols from /usr/lib/libdl.so.1...done. Reading symbols from /usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1...done. #0 0xff2b6df4 in strncmp () from /usr/lib/libc.so.1 (gdb) bt #0 0xff2b6df4 in strncmp () from /usr/lib/libc.so.1 Cannot access memory at address 0xff3ef9ec. (gdb)
今更だが、Linux だと HelloWorld ぐらいはコンパイルできるようだ。 class HelloWorld { public static void main(string args[]) { System.out.println("Hello World"); } } を gcj --main=HelloWorld HelloWorld.java // ネイティブバイナリ gcj -C HelloWorld.java // バイトコード gij HelloWorld // バイトコードの実行 って感じで動かしてみたけど全部うまくいってる。 しかし、--main も -C も --help では出てこないってのは。。
-fdce て大丈夫ですか?
30 :
名無しさん@XEmacs :01/09/22 08:58
GCC 3.0 で java が compile できるとすると、 GDB でも java が debug できる様になったりするんでしょうか。
Fortran90はまだかな?
>>25 昔、Solaris に binutils は入れるな、って言われたことがあるんだけど、
それは関係ない?
gcc-3.0 って、Solaris の 64bit ネイティブコードを 正式サポートしてるの?
してる。どこまで最適化できるのか知らないけど
gccと言語仕様は同一だが、 C言語のダイレクトもしくは中間コードによる インタープリタをリリースする計画はどうなった んだろう?Javaが出てきたので辞めたのかな?
36 :
名無しさん@お腹いっぱい。 :01/11/06 10:53
一応、AWTもサポートしてるみたい
使い方わからんけど
>>28 のコピってやってみたら string で、はまった
たかがこんなもんでも気がつかないもんだね
俺って馬鹿だな
37 :
名無しさん@お腹いっぱい。 :01/12/26 04:00
age
38 :
名無しさん@お腹いっぱい。 :01/12/26 12:51
gccってSolarisのdoorライブラリとか使えるの?
>>38 逆に聞きたいけど libdoorがgccで使えない理由ってあるの?
そういやgcc 3.0.3出たね。
cygwinで見事にコンパイル失敗しましたが何か?
gccってなぜかincludeしてないライブラリ関数とかでも使えますよね。結構い いかげんなのかな?よくわからないけど。ちなみにcygwin。
>>39 いや、使えるならうれしいだけだけど、doorsってSolaris固有のRPCでしょ?
linuxでも試験的にあるとは聞いていたけど。
じゃ、<doors.h>入りのプログラムでもProCかForteつかわないでも動作テスト位ならgccでできるんだしょうか?
x86版Solaris&GCCでも?
44 :
名無しさん@お腹いっぱい。 :02/01/17 03:56
3.1 はまだか…。3.0.3 はまだ恐くてよ〜使えん。
>>42 C言語の仕様知ってます?
C++コンパイラでCを学習しているのでしょうか。
>42 あとでリンカエラーになる罠
いやだからさ、C言語の(略) mangleされねーっての。
DX4-75のマシンで3.0.3ビルドしたら6時間位やってた...
>>43 お前、
> じゃ、<doors.h>入りのプログラムでもProCかForteつかわないでも動作テスト位ならgccでできるんだしょうか?
> x86版Solaris&GCCでも?
阿呆の癖に、
> いや、使えるならうれしいだけだけど、doorsってSolaris固有のRPCでしょ?
> linuxでも試験的にあるとは聞いていたけど。
こういうつまらん話から外れる口答えするなよな。
誰も相手にしてくれなくなるぞ。
gcc-3.0.3 を入れてみようとコンパイルにチャレンジしてるんだけど, warning の嵐なんだけど,これって無視していいの? g++ でまともなテンプレートを使ってみたいってだけなんだけどさぁ・・・
もうすぐ gcc-3.0.4 出そうだねい。
52 :
名無しさん@お腹いっぱい。 :02/01/30 19:33
53 :
ぴょんちゃん :02/01/31 00:16
GCC-3.X って、Propolice は組み込まれたのですか?
54 :
名無しさん@お腹いっぱい。 :02/01/31 00:19
>53 組み込まれてないと思う。もっと会社ぐるみでプッシュしてほしいよね。 マージ熱望。
55 :
名無しさん@お腹いっぱい。 :02/01/31 00:23
gcj って GUI のプログラムも作れたりするの? Swing とか・・・ さすがにウチのマシンじゃ gcc コンパイルするのは無理そうなので 断念したんだけど・・・
プロポリスは蜂の巣の原料だな
>>53 残念ですぅ.セキュリティかなり改善できると思うのに.
62 :
60, 53 :02/01/31 22:09
63 :
名無しさん@お腹いっぱい。 :02/02/05 08:40
gccに独自プロセッサ向けのコードをはいて欲しい時どうしたらよいのでしょうか? 出力したコードのそれぞれの命令を、 独自プロセッサの命令で等価になるように置き換えるのが 普通のやり方でしょうか? よろしくお願いします。
>63 独自プロセッサってgccがサポートしてない奴? gccのソース見れば? それでわからないならあきらめな。君には無理じゃ。
65 :
名無しさん@お腹いっぱい。 :02/02/05 09:10
>64 >gccのソース見れば? なんでもかんでもソース見れば?は なんか厨房くさい感じがしてやだなぁ。 それはさておき、 >出力したコードのそれぞれの命令を、 >独自プロセッサの命令で等価になるように置き換えるのが >普通のやり方でしょうか? これどういう意味?
マニュアルを読めばいろいろ書いてあるよ。 hoge.md というのが hoge ってマシン用のコードを吐くための 設定が書いてあるファイル。
68 :
名無しさん@お腹いっぱい。 :02/02/05 12:55
.mdファイルを見ました。なんかリスプの (define_attr ... )というのが延々と並んでて なんのことか分かりません。 これって検索したけど日本語のものは殆どないですね。 英語のマニュアルをがんばって読まないとダメみたいです。
gccのマニュアルは日本語訳があったと思ったが。
「それでわからないならあきらめな。君には無理じゃ」警報発令中〜!
72 :
名無しさん@お腹いっぱい。 :02/02/06 07:58
73 :
名無しさん@お腹いっぱい。 :02/02/06 08:08
>>66 例えば、
gccで普通にコンパイルして、
i386向けのコードを出力する。
↓
独自プロセッサにはinc命令がない
↓
i386向けのコードでinc命令を使っているところを、
add命令等を使ってinc命令を使ったときと同じ結果になるように、
置き換える。
って感じの事をなんとなく想定してました。
sumiiさん、こんなことやってたのか... でもやっぱり情報なら CPUの一つぐらいつくれんとだめだのう..
76 :
名無しさん@お腹いっぱい。 :02/02/06 15:07
>>73 GNU as をお勉強してみてはいかが?
sumiiさんすご過ぎ(w。 CPU実験でここまでする人いないよ。
78 :
名無しさん@お腹いっぱい。 :02/02/06 18:17
sugoine sumii san oremo gakusei no koro motto ganbareba yoka-taYO!
79 :
名無しさん@お腹いっぱい。 :02/02/22 23:05
gcc-3.0.4 age
80 :
名無しさん@お腹いっぱい。 :02/03/08 23:28
あげ
久しぶりにageられてる。 Redhat7.2 では gcc3 ていうコマンドになってて gcc2.96 も残ってるんだけ ど何か意味あるの? 安定してないからとか? source からコンパイルするときとか gcc3 使った方が幸せになったりします か?
で,ブッチャケ gcc-3.0.X は不安定なのか? 俺はフツーに使っているつもりだが. # もっとも KDE とかデカいモノは使っていないからなんとも言えないのだが
85 :
名無しさん@お腹いっぱい。 :02/03/09 01:48
そういえばglibcはコンパイルできるようになったの?
86 :
名無しさん@お腹いっぱい。 :02/03/09 01:50
>81 俺も気になる。今rawhideを入れると、2.96と3.0.xのどっちが普通に(/usr/bin/gcc)使われるの?
>>86 お前ら少しわ調べろと小一時間(以下略)
以下 rawhideのi386.rpm持って来て中見ただけ
rawhide $ rpm -qpil compat-gcc-7.2-2.96.102.i386.rpm |grep /usr/bin
/usr/bin/gcc296
/usr/bin/i386-redhat-linux7-gcc
rawhide $ rpm -qpil gcc-3.1-0.21.i386.rpm |grep /usr/bin
/usr/bin/cc
/usr/bin/gcc
/usr/bin/gcov
/usr/bin/i386-redhat-linux-gcc
/usr/bin/protoize
/usr/bin/unprotoize
だから /usr/bin/gccは gcc 3.1になるはず
gcc-2.96はたぶん kernel作るのにつかってるんでは?
88 :
名無しさん@お腹いっぱい。 :02/03/09 02:05
>87 さんきゅ。しかし…3.1って…。なんで3.1なんだ? リリースされてないよね。
90 :
名無しさん@お腹いっぱい。 :02/03/09 02:19
そうなんだ そんな若いの使って大丈夫なんですかね。
92 :
名無しさん@お腹いっぱい。 :02/03/09 07:09
glibcやGLibの日本語の(笑)リファレンスってないですかねー?
93 :
仕様書無しさん :02/03/09 17:12
age
どちらかというとgdbの機能向上を望む。 特に現状ではC++のサポートが酷いとおもうんだけどどうよ。
96 :
名無しさん@お腹いっぱい。 :02/03/14 22:07
こっぺりと同意
>>95 gdb5.1の出来はどうなんでしょうかねい
うちじゃカーネルをgcc-3.1.0-21(RawHide)でRebuildしたら ブートしなかった。pcmcia-csとかにまぜてもダメ。 だから2.96に戻した。 うちだけかも。
98 :
名無しさん@お腹いっぱい。 :02/03/15 00:49
カーネルはだめっしょ。
99 :
名無しさん@お腹いっぱい。 :02/03/15 01:54
ABIってどういう意味ですか?
100 :
名無しさん@お腹いっぱい。 :02/03/15 02:26
100ゲト
101 :
名無しさん@お腹いっぱい。 :02/03/15 02:44
Applications Binary Interface
103 :
名無しさん@お腹いっぱい。 :02/04/09 00:47
で、最近のGCC3はどうよ? まともになった?
cvsでは既に3.2 branchだもんねぇ。なんで3.1がさっさとreleaseされないんだ?
あした
108 :
名無しさん@お腹いっぱい。 :02/05/01 09:57
3.1はまだでございますか?
109 :
名無しさん@お腹いっぱい。 :02/05/01 11:58
3.1、5月になってもまだ出ない…
111 :
名無しさん@お腹いっぱい。 :02/05/07 04:31
MacOS X用のGCC、もうちょっといいのでてくれ。
>>111 自分で直すというのはどう?
一躍有名になれるチャンス!
なわけないか・・・
114 :
名無しさん@お腹いっぱい。 :02/05/11 21:42
3.1の公式リリースはまだかねぇ
IA-64のRedHat7.1の上で、gcc2.96も、gcc-3.0もソースからでは 全然コンパイルできないよ。変だね。
どんな手順でコンパイルしてんの?
118 :
名無しさん@そうだ選挙にいこう :02/05/12 23:48
119 :
名無しさん@お腹いっぱい。 :02/05/12 23:56
120 :
名無しさん@お腹いっぱい。 :02/05/13 14:46
あぼーん
122 :
名無しさん@お腹いっぱい。 :02/05/14 01:03
123 :
名無しさん@お腹いっぱい。 :02/05/14 01:06
FreeBSD5.0は3.1だそうですね。
>>123 というより、GCC3.1の正式リリースを待たずに
CVSに突っ込むという無茶をやってるからなあ…
>125 gccのFreeBSD対応をもっとまともにする、より良い方法があったら教えてくだちい
127 :
名無しさん@お腹いっぱい。 :02/05/14 22:48
>>125 もっとまとも?
もっと、強烈にオプティマイズして欲しいの?
125は124を指して「gccのsnapshotをFreeBSD-CURRENTに入れるのが気にくわないなら 積極的に人柱を集める他の方法を教えれ」と言っているのでした。 実際そうでもしないとLinux以外で顕在化するバグはみつかりにくいし、FreeBSDの i386以外のarchはgcc3が必須なので、運命共同体というかなんというか。
>>124 無茶ではないと思う。CURRENTなんだし、さっさと使ってフィードバック
した方がリリースが充実していいんでは。obrienのおかげでローカル
パッチもだいぶ不要になったしね。(geraldもか)
ようやく、従来から 3.0.x を使っていたia64, sparc64, powerpcと
i386, alphaの足並みがそろっていい感じ。
GCC 3.1 は 2.95.x に比べて6割遅いというのは(゚д゚)マズーだが。。
130 :
名無しさん@お腹いっぱい :02/05/14 23:32
>>129 >GCC 3.1 は 2.95.x に比べて6割遅いというのは(゚д゚)マズーだが。。
遅いのは実行速度? コンパイル速度?
コンパイル速度。make buildworldで計測してみよー
>>130 make world の時間だからコンパイル速度だと思う.
最適化なんとかならんかな。 VCにもIntelCにもベンチマークボロ負けだよ。
あなたがなんとかして!
>>133 相手は IA32 専門コンパイラだからなぁ。
3.1 kita
137 :
名無しさん@お腹いっぱい。 :02/05/15 18:52
まじすか?
138 :
名無しさん@お腹いっぱい。 :02/05/15 19:30
gcc-3.1 make bootstrap ちう。。。。 stage1 がなかなか終らない。。。。
まだミラーに行き渡ってないけど、もう本家にはあるね。 リリースアナウンスがある前に /.jp が記事にするかどうか(苦笑)
いつ頃、Linuxが3系のgcc使うようになるのかな。
141 :
名無しさん@お腹いっぱい。 :02/05/16 00:13
次のRedHatで乗れば普及しそう。 TurboやKondaraは次バージョンで乗せるかなー
>>141 いや、載せるじゃなくてカーネルっていう意味で・・・
gcc-3.1キタ━━━━━(゚∀゚)━━━━━!!!! ・・・長いね、これ・・・
core.ring.gr.jp 早っ。 iij はまだ、aist はディレクトリがあるだけ… 実況してどーする。
>>142 Linuxカーネルは、gcc-2.95系が出た後も、
長らくegcs(2.91.??)を推奨してたからね。
結構時間がかかると予想してみる。
やっと、make bootstrap 終ったよ。pentium III 700MHz で1時間20分かかった。 これから、Linux kernel のコンパイルやる。
サイズでかっ。。
メインページが更新されました。一応ご連絡。
149 :
名無しさん@お腹いっぱい。 :02/05/16 18:35
gcc3.1のg++で#include<fstream>するとbasic_file.hの中でエラーに なるの俺だけ? RedHat7.2(gcc2.96)でconfigure&makeしたんだけど…
>150 gcc3を/usr/binには入れないよねフツー。
>>151 Debianを家じゃ使ってるけどたしか/usr/binの下だったと思ったよ。
Debianはふつうじゃないのかな?他のは知らないから良く分からんけど。
153 :
名無しさん@お腹いっぱい。 :02/05/16 19:12
>>150 $ cat /proc/version
Linux version 2.4.18 (root@pathos) (gcc version 3.0.4) #1 Thu Mar 14 17:36:09 JST 2002
Debian の sid です。
>>153 あ、どもです。いけるんですね。
今日うち帰って3.1でもいけるかどうか試してみます。
>>154 昨日やったら、2.4.19-pre8 も 2.5.15 も途中でこけた。まだ深くは追求していないけど。
>>155 コンパイルが通らないってことですか?
それとも実行時のエラーっていうことですか?
コンパイルエラーでそ
>>156 オプション代えれば上手くいく予感
2.5.Xはwarningは山盛りでるわ、コンパイルエラーはでてくるわで なかなか楽しめます: )。簡単な手直しは必須です。 gcc3.1と組み合わせたらそれはそれはハッピーになれるかも(w やっぱりPC-UNIXはこうでないと!
159 :
名無しさん@お腹いっぱい。 :02/05/17 00:21
Linuxは開発者多い割に対症療法なんだねえ。 *BSDは、日頃から山ほどwarning optionを付けて、見つかったwarningは 片っ端からつぶしてるもんな。styleにもうるさいし。 どっちをいじるのがハッピーかは、完全に性格によるかもしれない。
160 :
デフォルトの名無しさん :02/05/17 00:24
Linux2.5.15をgcc3.0.4でコンパイルして普通に使ってるよ。 新しい機能のthermal_interruptの辺りにバグがあるから その機能を使わないようにすれば問題なく動く。
161 :
デフォルトの名無しさん :02/05/17 00:29
>>159 カーネル2.2の頃はwarningも殆ど無かったような気もするけど、
2.4になってからちらほらと。なんか生き急いでるような印象受けるよ<開発者
162 :
名無しさん@お腹いっぱい。 :02/05/17 02:22
>>161 別にいいじゃん。2.5は開発系列なんだからさ。
乱暴と思えるようなmergeがなくなっちゃえば、
Linuxのmeritのひとつがなくなってしまう。
1.Xに比べれば天使を見るが如くだ。
165 :
名無しさん@お腹いっぱい。 :02/05/19 20:17
specsファイルの書き方を説明したサイトないかなー
$info gcc Invoking GCC::Spec Files::
167 :
名無しさん@お腹いっぱい。 :02/05/20 13:40
gcc-3.1では -march={pentium2,pentium3,pentium4} なんかが追加されてるけど, celeronの場合は何を指定するのがベストなのかな? pentium2あたり?
>>167 2か3だろうけど、コアの種類にもよるんでない?
つーかそれぞれでどう最適化が違うのかわからんとなんとも言えんけど。
169 :
名無しさん@Emacs :02/05/20 14:46
>>167 生成したバイナリに具体的にどんな影響が現われるのか興味深いな・・。
特にpentium2と3。
基本的にはpentium2を指定しておけば間違いないだろう。
あとSocket478用Celeronならpentium4。
それ以外はその時期のCeleronと同時に発表されたプロセッサと同じものを
指定すればよいだろう。
i386の-marchで何が起こるかはconfig/i386/i386.cのprocessor_alias_table[]を参照しる。
171 :
名無しさん@お腹いっぱい。 :02/05/22 18:39
172 :
名無しさん@お腹いっぱい。 :02/07/21 09:26
gcc の release plan がかなり変更になった.
gcc 3.1.1 が現地時間で 7/21 に出るけど,この系列は
gcc 3.2.x に名称変更.7/23 に gcc 3.2 が出る予定.
gcc 3.2.x の C++ binary は,gcc 3.1.x の C++ binary と
互換ではないので要注意.
新 branch は gcc 3.3.x になる.
http://gcc.gnu.org/develop.html#future
もしかして非互換性発覚→急遽3.2ってことなのかな?
どっちかっつーと、 ABI変えないとどーしょうもない不都合発覚→3.2にversion bump てことじゃないかと。
175 :
名無しさん@XEmacs :02/07/22 09:19
>>172 cvs [server aborted]: no such tag gcc_3_1_1_release
まだですね。
にしても GCC3.x は迷走しているなぁ。いったいいつまで 2.95.3 を使いつづけ なければならないんだろう。
伝統にしたがって3.4まで待つことになるんでは
178 :
名無しさん@お腹いっぱい。 :02/07/22 23:50
3.1.1 まだ〜? 3.2 がもうすぐ出ちゃうよ. 現在 3.1 を使っているけど,3.2 が出たらどうするか考慮中. C++ binary incompatible ではねぇ.
みんなどんどん使って不具合だしてくれー
最適化がVisualC並になるのはいつのことやら・・・
3.xの最適化はVisual Cに負けていないという噂は本当ですか?
182 :
名無しさん@お腹いっぱい。 :02/07/23 23:07
>>181 gcc ではなく icc の間違いではないでしょうか。
icc も Pentium4/Xeon でないと真価を発揮しないようで.
183 :
名無しさん@お腹いっぱい。 :02/07/23 23:21
>>182 どっちかっつーとPentium4/Xeonのほうがiccで最適化かけた
バイナリでないと真価を発揮しない、のような
あ、gcc2.96だけどね。
つーか、gccの最適化がしょぼい(
>>180 )ということを裏付けるデータあるの?
188 :
名無しさん@お腹いっぱい。 :02/07/24 10:30
>>186 まだそんなこと言ってる・・・
「証拠見せろ」とか「gccに速さを求めるのは筋違い」とかって
ほんと決まり文句だな。
>>188 gccが比べるまでもなくしょぼいのはわかりますが何か?
i386の事だけ考えればいい商用のコンパイラと、gccを比べるのは川獺。
VCって、Windows CE用にmips、arm、shとかもサポートしてるみたいだけど、 この辺の最適化具合はどうなんだろね。
今は知らないが、VC++ってAlpha版、PowerPC版、MIPS版なんてのもあったような。
>>193 NTとかビルドするのにも使ってるんだし、そりゃああるだろよ。
196 :
名無しさん@お腹いっぱい。 :02/07/24 22:30
>190 そういう人にとっては、ここに来るのは時間の無駄以外のなにものでもないですね。
gccより遅いコンパイラは全部滅んじゃったからね。
>>198 なるほど、そうか。
gccがコンパイラの底あげをしたわけね
>>196 > benchimarkでしかあり得ないプログラムや
速い遅いを見るのがBenchmarkじゃないの?
> 数値計算やCG関係でMMXなんかがうまく使えた時に差がある程度と思うが?
数値計算やCGって実用域の性能には無関係だと?
VCはMMXの最適化なんてやんないよ。ProcessorPack入れたらInlineで
書けるって程度。VectorCは違うけど。
あのね、すぐWin厨って言わないでUNIXの外の広い世界も
勉強したほうがいいと思うけどな。
例えば同じマシンにKDEとWindows2000入れたらどっちが
さくさく動くと思う?
まぁ、そういうと、そらXがクソ、Qtがトロいせい。Win2000なんて
そもそも不安定だから比較対象にならんとか言い出すんだろうけどさ〜
201 :
名無しさん@お腹いっぱい。 :02/07/25 10:40
>>200 比較対象にWindowsを持ってくるのはどうかと思うが、
いままでの*NIXの独善の歩みと言うべき姿勢は、
そろそろ見直される時期に来てるかも。
ソフトウェアの開発モデルとしては機能はしてるが
魅力やスピードが無いと言えるかも。
抽象的ですまんが
>>200 他にもUNIXとWindowsと比較・対決してるスレはたくさんあるから、
そういう議論はそっちでやってくれないかな?
ここはgcc関連の話題を扱うスレ。
> 例えば同じマシンにKDEとWindows2000入れたらどっちが > さくさく動くと思う? cygwinの上でKDE動かした方が遥かに遅かったが、なにか?
>>200 > 例えば同じマシンにKDEとWindows2000入れたらどっちが
> さくさく動くと思う?
gccでコンパイルしたKDEと
gccでコンパイルしたWindows2000の比較か?
なつだからっていちいち煽りにかっかしてんな。 そうめんみたいに流せ。
ネタにマジレスすると、KDEとWin2000のどちらがサクサク動くか、という点については コンパイラ云々よりもウィンドウシステムの設計に依存するところが大きいでしょう。 win2kはご存知のとおりカーネル内にグラフィックサブシステムが入ってるから、 かなりの速度がでる。Xは残念ながらオーバーヘッドがでかい。 つーことは、上記のように環境が速度の最大ファクタであるような場面では コンパイラの最適化能力なんてあんまり目立たない→重要でない ってなことになっちゃうと思うんだが... で、未だにコンパイラの速度を競うような場面ってそんなにありますか? 計算屋さんにとっては重要な問題なのかなあ。 ほとんどライブラリに頼ってる気がせんでもないけど。
210 :
名無しさん@お腹いっぱい。 :02/07/26 19:49
gcc-3.1.1 リリースage
板違いかもしんないけどさ。気に入らなかったら読み流してちょ。 コンパイラの教科書って、未だに Ahoのアレが一番メジャーなの? あそこまで行かないにしても、それなりに網羅的に書いてある もーちょっとモダーンな教科書あったら紹介きぼんぬ。
213 :
名無しさん@お腹いっぱい。 :02/08/02 17:39
>>212 つーか、最近は一冊にまとまっていない。分量多すぎ。
プログラミング言語一般論, parsing, type, code emiting&optimization
くらいに分かれている。翻訳があるドラゴンブック読んでから、次に進めばよい。
216 :
名無しさん@お腹いっぱい。 :02/08/06 18:08
>212 中田育男著「コンパイラの構成と最適化」
えいぷるさんの本があるべ
>>215 英語でもいーっす。
今、amazon.comも見てみましたが、あまりくるのがありませんでした。
Modern Compiler Design が一番ポピュラーなんですかね。
>>216 読んだ事ありますがドラゴンの方がよさげ(網羅的)な気が。
>>217 Appel「Modern Compiler Implementation in Java 」ですか?
Compiling with continuation とか。
正式リリースは 8/14 か。当初は 7/23 に出るとかいう話だったから、3週間遅れか。
ftp.iij.ad.jp:/pub/GNU/gcc/ にはもうあるね。> gcc-3.2.tar.gz
223 :
名無しさん@お腹いっぱい。 :02/08/16 01:38
GCC 3.2 Released. アナウンスされた。
224 :
名無しさん@お腹いっぱい。 :02/08/16 02:33
GCCへの、というわけでもないですがコンパイラに関する スレッドがみつけられなかったので質問させてください. 何とか社fooのCompiler (foocc)ver.10はsourceを書いた後 (2回目は自分自身でcompileするにしても)最初はfoocc-9で compileするんでしょう.ver.9はver.8でcompile、と 考えていくとver.1はどうやってつくったんでしょうか?他の会社なりのhogeのcompiler(例えばhogecc-5とか)がその時あれば ちょっと借りてきて1回目だけそれを使えばいいんですが、それでは hogecc-1のsourceはどうやってcompileしたんでしょう? 最初は誰かえらい人がアセンブラで書いてくれた.位しか 思いつかないのですが... こんなの常識なんでしょうか?
今夜も寝られなくなっちゃったじゃねえかゴルァ!
>224 最初はIPLをトグルスイッチぱちぱちやって入力した。
227 :
名無しさん@お腹いっぱい。 :02/08/16 03:32
何でみんな新しいもの追っかけるの? 昔は新しいモノを追っかけてたんだけど、安定してるはずのgcc2.95.2で glibcをmakeしたら腐ったコード吐いたことがあったので、新しいのは怖くて使えないよ。 結局、egcs2.91.66が一番安心できる。
>>224 バベルの図書館で貸し出してます。
VC++は民明書房にあるそうです。
>>228 新しいもののほうがナイスな最適化するかもーとか、
C++ の標準準拠っぷりとか、
gcc のパッチを作ってるので仕方なくーとか。
必要ないんなら古いのでいいと思いますよ、ええ。
FreeBSD と NetBSD は gcc-3.x に移行する予定みたいですね。
231 :
名無しさん@お腹いっぱい。 :02/08/16 16:52
バグると不平を言うよりも、進んでバグを出しましょう
…というのがフリーUNIXコミュニティの美徳ではないかと
>>228 仕事で使うならstableなものを選択するというのもアリ
>>231 バグって不平をいうやつはそこまでのレベル。
233 :
名無しさん@お腹いっぱい。 :02/08/17 03:29
おれbug見つけたら小躍りしながらレポート書いちゃうけどな(・∀・)
>>233 あんたは素晴らしい。
俺にはコンパイラのバグなんてさっぱり分からん。
>>234 templateで遊んでたらいくらでもinternal compiler error出るぞ
>>235 internal compiler errorとか出たらどうやって追いかけてるの?
237 :
名無しさん@お腹いっぱい。 :02/08/17 13:25
>>236 追いかけるのはGCCチームにやらせりゃいいことだろ。
error が出たソースを添付してレポートすりゃいいだけ。
gccのソースも読めないやしは半人前。 と言われつづけてはや10年
240 :
名無しさん@お腹いっぱい。 :02/08/17 16:25
10年前の gcc-1.42 がファイル数 281、展開後のサイズ7.7Mだったのが、 gcc-3.2 ではファイル数 14375、サイズ161MB に肥大しているから、 せっかくの10年前にgccのソースを読む機会を逸した奴はもう一生読めないに違いない。
あぼーん
あぼーん
今のgccぐらいの規模なら理解できるだろ。 世の中もっと大きなソフトウェアは幾らでもある。
245 :
名無しさん@お腹いっぱい。 :02/08/17 19:59
ここにはgccを理解してる人がいるみたいなので質問させてください。 1. rtl.defやrtl.h,rtl.c 2. *.md 3. -drオプションを指定されたときに吐き出されるファイル これら三つの関係がいまいちよくわかりません。 簡単でいいのでこれらの関係を教えて下さい。
>>245 gcc の info 読もう。
gcc -> Passes `Paasses and Files of the Compiler' のあたり。
>>246 それはよく読んだのですが、分からないからここで質問しました
あぼーん
>>247 えー その info に十分な情報があると思うけどなあ。
1. RTL を操作するためのユーティリティ関数と、RTL の共通定義
3. コンパイル対象のソースが RTL に変換された直後の RTL の様子
2. insn-flags.h とか insn-codes.h とか insn-output.c とか
insn-attrtab.c とか、とにかくマシン依存のコンパイラソースを
生成するためのソース
>>249 おお、ありがとうございます。
なんとなくイメージが掴めました。
教えてもらったことを手がかりに
ドキュメントを読み直します。
俺は組込み系やってるのでコンパイラが吐き出したコードを読む機会が多いんだけど、 最適化されるはずなのにうまくされてないような所ってのも、正しく動くけどbugのうちとみなしてレポートしてる たいていは数日以内にpatch送ってもらえたりするんで、いつでもmakeできるように gccのソースツリーは展開したまま置いてある。 間違ったコード吐いたりされる場合はさすがにpatch送ってもらうのを待ってるわけにいかんので レポートするのと同時に自分で治すこともあるけど、簡単に治せるようなものなら良いが ちょっとややこしくなるともう手に負えん(;´Д`)
252 :
名無しさん@お腹いっぱい。 :02/08/21 22:25
今gcc-3.2コンパイルしてます。 dejagnuのチェックでFAILが出まくってるんだけど、コンパイル失敗ですか? 一応継続してるんですが。
253 :
名無しさん@お腹いっぱい。 :02/08/22 08:05
gcc が Java のバイトコードも吐けるようになるのはいつの日か。
Gentoo
質問です。 某マシンでgcc使ってるんですけどnewが例外投げてくれません。 PCのgccでも昔は駄目だったんですけど、 3.0では直ってるんでしょうか?
>>256 PCのgccを3.0にして試せばいいのでは?
>>256 ・例外そのものが機能しないのではなく、newだけ?
・昔ダメだったgccのバージョンは?
ぐらいの情報は欲しいなあ。
>>218 亀レスだが、英語でいいなら、Modern Compiler Designでいいんじゃない?
ドラゴンブックもぺ─バーバックの奴買っておけばいいし。
Advanced Compiler Design and Implementationも面白いよ。
Appelのは傾向がチョト違う。
>>219 も"Garbage Collection: Algorithms for Automatic Dynamic Memory Management"も(w
>>224 最初は別の言語で書く。アセンブラまで後退する必要はない。
ちなみに昔はFortranやPL/1で書かれたC compilerがあった。
テメーのcompiler書いても、
gccがあるからgccで簡単にbootstrap、って状況の方が(昔からすれば)異常。
261 :
名無しさん@お腹いっぱい。 :02/08/24 17:31
>>256 少なくともgcc 2.95では、mallocが本当に失敗すればbad_alloc
投げてくれるはず。(cp/new1.cc)
楽観的メモリ割り当てとかで、malloc自体が成功しているからでは?
intel 系っつーか PentiumPro 系のハナシですが、 gcc2.95 って妙に速いコード出すことがあるですね。 gcc3.2 や icc より速い。。。
> 260さん ありがとうございます.それはそうなのでしょうけど, (最初にCを作った人は"Cで書いてコンパイルしたC Compiler" がそれこそ世界になかったわけですから!) その "FortranやPL/Iで書いたC Compiler"を作るための "FortranやPL/IのCompiler"をやはり作らなければいけませんよね... でも教えてばっかりでもなんだか悪いのでいろいろ調べてみます。 どう考えても最初は簡単な(機能が少ない)言語Aをアセンブリ言語で書き、 その言語Aを使ってもうちょっと高水準の(機能が多い)言語Bのコンパイラ を書く.-> 以下同文 とやっていったのだとは思いますが.
つーか、別にアセンブラだけで(機械語だけでさえも) Cコンパイラ作れるんですが。
265 :
名無しさん@お腹いっぱい。 :02/09/04 00:10
>>263 理論的には可能であるとしても、
アセンブラで書いたC compilerは山田かつて見たことがない。
> hogecc-1のsourceはどうやってcompileしたんでしょう?
> 最初は誰かえらい人がアセンブラで書いてくれた.位しか
よって
>>260 ではこの行間の話をした。以上。
リッチーさんが最初にPDP-7上で書いたCコンパイラは、アセンブラだったのでは。
PDP-11に移植してからだったか?
>263
> 以下同文とやっていったのだとは思いますが.
で、結局
>>226 まで遡ると。
dmrセンセイはBでCを書いたんじゃないの?
アセンブラの登場はFortranコンパイラよりも後のはず。
Unixの歴史とかの書籍を見ると 「コンパイラコンパイラ」 ってのがあったらしいが... ....一番最初はどうだったんだろう。 謎、謎。
yacc?
273 :
名無しさん@Emacs :02/09/06 10:02
libungif コンパイルできねー
@ gcc-3.2
>>266-267 gcc は yacc/bison が無いと動かないよね
yacc/bison は C で書かれているよね
。。。
>275 最初のCコンパイラはgccではないわけだが...
277 :
名無しさん@お腹いっぱい。 :02/09/06 16:09
g++ 3.2 で ostream_iterator が未定義だといわれるんだが。 % cat foo.cpp #include <ostream> #include <string> int main() { std::ostream_iterator<std::string> *i; } % g++ -dumpversion 3.2 % g++ -c foo.cpp foo.cpp: In function `int main()': foo.cpp:5: `ostream_iterator' undeclared in namespace `std' foo.cpp:5: parse error before `>' token
#include <iterator>
サンクス。 標準では <iterator> なのか。やっぱり古い知識のままじゃいかんなぁ。
280 :
名無しさん@お腹いっぱい。 :02/09/09 00:06
gcc をビルドしてできる libstdc++.so.5 とかは、どこにインストール すべきものなんでしょうか。 configure --prefix=/usr/local/gcc-3.2 とかでビルドして make install すると、/usr/local/gcc-3.2/lib/ の下にインストールされるのですが、 g++ 3.2 で作成した実行ファイルを起動すると、libstdc++.so.5 が 見つからない、と言われてしまいます。
OS は? ldconfig とか、LOAD_LIBRARY_PATH とか?
あぼーん
>280 リンク時に g++ -Wl,-rpath -Wl,/usr/local/gcc-3.2/lib と書いておけば? specs ファイルでも指定できるかもしれんが。
アドバイス、ありがとうございます。
>>281 Linux 2.2 です。
ldconfig とか LOAD_LIBRARY_PATH とかは、とく使ってませんでした。
man を見ると、ldconfig で解決できそうな感じがします。
>>283 これは、スタティックリンクをするときの話でしょうか。できれば、
実行時にリンクを解決したいのです。
ダイナミックリンクする場合の指定方法だよ
libstdc++ の件は # echo /usr/local/gcc-3.2/lib >> /etc/ld.so.conf # ldconfig で解決しました。 g++ 3.2 で別の問題なんですが、std::wstring を使おうとして、 #include <string> int main() { std::wstring s; return 0; } をコンパイルしたら、 /tmp/ccSgXbtC.o: In function `main': /tmp/ccSgXbtC.o(.text+0x17): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string[in-charge]()' /tmp/ccSgXbtC.o(.text+0x22): undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string [in-charge]()' のようなリンクエラーが出ました。もともと普通にビルド&インストール しただけでは wstring が使えないので、c++config.h で #define _GLIBCPP_USE_WCHAR_T 1 として (無理やり?) 使っていたのですが、3.0.4 あたりではうまくいって いたのに、3.2 では上のようなエラーが出るのです。 これは、3.2 の basic_string では、メンバ関数がインライン展開されずに 別モジュールとしてコンパイルされているんですかね。
なんと、basic_string クラスのインスタンス自体が外部宣言されていました。 gcc-3.2/include/c++/3.2/bits/basic_string.tcc: extern template class basic_string<wchar_t>; gcc じゃ、こんな書き方ができるのか。 で、ビルド時には _GLIBCPP_USE_WCHAR_T が undef になっていたので、 ライブラリには、wstring の実体が作られていないのでしょう。自前で template class std::wstring; とやってやれば、うまいことリンクできました。 ところで、ビルド時から _GLIBCPP_USE_WCHAR_T を有効にするには どうすればいいんでしょう。
結局、システムに入っていた glibc が古くて wchar_t 関係の 関数がそろっていなかったのが原因のようですね。現在、 glibc-2.2.5 をビルド中。
289 :
名無しさん@お腹いっぱい。 :02/10/02 09:57
g++3で書いた中身C++、インターフェースCなライブラリを、g++2 から利用する(またはその逆)ための、良い方法は無いでしょうか? 普通にやろうとすると__dynamic_castなどが衝突するので、 リンカ側で色々工夫をする必要があるようなのです。 FreeBSDで、-symbolicなどを駆使して、一応例外などを 動かすことはできましたが、とてもポータブルとは思えない ので、もっと正しい方法があれば教えてください。
290 :
名無しさん@お腹いっぱい。 :02/10/17 22:29
64bit Solaris 8でgcc 3.2をコンパイルできた人いますか? Companion CDで入る/opt/sfw/bin/gcc (2.95.3)を使って やっているのですが(make checkの)エラーが消えません。 $ /usr/local/bin/tar xvfz gcc-3.2.tar.gz $ cd gcc-3.2; mkdir objdir; cd objdir $ echo $PATH /opt/sfw/bin /usr/bin /bin /usr/ccs/bin /usr/local/bin $ ../configure --enable-languages=c,c++ --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls $ /usr/local/bin/make bootstrap (Errorは出ません。) $ echo $TCL_LIBRARY /usr/local/lib/tcl8.4 $ echo $DEJAGNULIBS /usr/local/share/dejagnu $ /usr/local/bin/make -k check | tee check.log で,check.logからサマリ部分だけ抜き出すと、
291 :
名無しさん@お腹いっぱい。 :02/10/17 22:30
=== libstdc++-v3 Summary ===
# of expected passes 407
# of unexpected failures 2
# of unexpected successes 10
# of expected failures 16
=== gcc Summary ===
# of expected passes 18688
# of expected failures 66
# of unsupported tests 111
=== g++ Summary ===
# of expected passes 7248
# of unexpected failures 3
# of expected failures 88
# of untested testcases 21
# of unsupported tests 4
bootstrapまでは通っているけどtestsuiteのC++関連の
unexpected failuresがあるのが不安です。
http://gcc.gnu.org/gcc-3.2/buildstat.htmlを見ると (Test resultsでエラーがある人もいるけど)Successfulの
人もそれ以上に結構いて、なんで私のだけエラーが出るのかと...
292 :
名無しさん@お腹いっぱい。 :02/10/17 22:35
$ cd gcc/ $ for file in *.o ; do cmp $file stage2/$file; done でのstage2とstage3の比較はOKのようなのですが... そもそもtestsuiteでunexpexted failuresが0になるものでしょうか。 gccをsourceからbuildするのは初めてなのでよく作法/流儀が... Package版があるようなのでそっちを入れた方がいいんでしょうか。
gcc3.xをメインに使わないやしは氏ね
294 :
名無しさん@お腹いっぱい。 :02/11/20 22:14
gcc-3.2でperl-5.6.1がmake出来ない(´・ω・`) ショボーン
>>295 もしよければ詳細キボンヌ
gcc-3.2は最適化でバグがあるらしいね…「-fno-strength-reduce」を追加して対処
した方がいいらしい(Vim-6.1のパッチ260より)
gcc-3.2.1ではfixされているのかな?
299 :
名無しさん@お腹いっぱい。 :02/12/12 20:20
300 :
名無しさん@お腹いっぱい。 :02/12/13 16:47
正式書類にはこう書くのか(藁 インターナショナル・ビジネス・マシーンズ・コーポレ−ション
>>300 使ってもお金とられなきゃ特許でもいいや…
泳がせておいて後で回収と言うunisys方式もあるよ。
305 :
名無しさん@お腹いっぱい。 :02/12/14 08:58
特許を申請した理由が知りたい… 日付からするとパッチを公開した時期なのかな?
特許申請しないと公開させてもらえなかったのかも。 特許の文書もやけに教育的だし。
307 :
名無しさん@お腹いっぱい。 :02/12/14 12:11
特許は申請じゃなくて出願するもんだろう。
あぼーん
309 :
名無しさん@お腹いっぱい。 :02/12/14 15:32
みなさん、リリース間近の3.3は試していますか?
310 :
名無しさん@お腹いっぱい。 :02/12/15 09:27
propolice開発者です。GCCに提出している部分はGPLとしていますから、この部分に関して特許の心配はありません。 但し他のコンパイラ製品には適用されます。 このスレッドは見ているわけではないので、できれば私宛にメールを送ってください。アドレスはホームページから探してください。
311 :
名無しさん@お腹いっぱい。 :02/12/16 22:19
>>310 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
>Support for thread local storage has been added to the IA-32 and x86-64 ports. ほう。port限定だけど3.3でTLSサポート入るのか。 >IBM ROMP, romp-*-* >IBM大騒ぎ、romp-*-* (´∀`)
TLS サポートって TLS をどうサポートするんだろう? 下校できるとか
315 :
名無しさん@お腹いっぱい。 :02/12/20 17:29
3.2.1いい感じだね。 安定してきた感じ。
そろそろ、全面的に3を採用してもいい頃なんじゃないかねえ。 Cに関しては移行についての問題も少なそうだし。g++がなあ 2.XXはおかしいから早いところなくなって欲しいのだけど。
317 :
名無しさん@お腹いっぱい。 :03/01/08 12:35
祝 Debian sid で gcc = gcc-3.2 化
これで、開発系は全部がgcc-3.2になったのかな?
>>318 まあ、Linux-2.5.54 は Documentation/Changes では
The recommended compiler for the kernel is gcc 2.95.x (x >= 3), and it
should be used when you need absolute stability. You may use gcc 3.0.x
instead if you wish, although it may cause problems. Later versions of gcc
have not received much testing for Linux kernel compilation, and there are
almost certainly bugs (mainly, but not exclusively, in the kernel) that
will need to be fixed in order to use these compilers. In any case, using
pgcc instead of plain gcc is just asking for trouble.
なんて書かれてはいるけどね。
vim 6.1のconfigureにもこんなのがあるなぁ。 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"' CFLAGS="$CFLAGS -fno-strength-reduce" fi
321 :
名無しさん@お腹いっぱい。 :03/01/12 11:35
>>320 ま、3.2.1でも3.2と同様問題がある…ということですか ショボーン
>>322 ちなみに、debian sid 標準なのは pre-release な 3.2.2。2003-01-09 版。
(^^)
325 :
名無しさん@お腹いっぱい。 :03/03/05 02:46
3.3ってどうよ
>>325 普通に動いてるけど。
最適化に関して改善されたみたいだけどどうだろう。
ベンチなんてとったりしてないし。。。
しかし、最近は簡単にマイナーバージョンを上げるなぁ。
>>327 3.3ってのは実質3.2だってことをお忘れなく。
3.1.1 -> 3.2 になったからってことかな?
330 :
名無しさん@お腹いっぱい。 :03/03/11 05:40
上書きしてトラブっても自力で対処できないような香具師は おとなしく新しいディレクトリ掘っとけ、ということでしょう。 /usr/local/gcc-3.2.2/ とか。
>>332 あんたは、バージョンごとにディレクトリ分けてるのかい?
>>333 $ ls /usr/lib/gcc-lib/i386-redhat-linux
2.96
3.2.1
egcs-2.91.66
少なくともRedHat Inc.は分けてる。
>>334 ここで出ている target directory をたがえるいうのは、
そういうことではないと思うが。
おまい、自分でgccをインストールしたことすらないでしょ。
もれはCVSの日付で分けてるけど。
>>335 > おまい、自分でgccをインストールしたことすらないでしょ。
たしかに久しくやってないな。
(^^)
339 :
名無しさん@お腹いっぱい。 :03/03/14 19:56
長寿だなぁ、このスレ。
(^^)
あぼーん
343 :
名無しさん@お腹いっぱい。 :03/04/26 13:14
age
gcc-3.2.3 リリース記念sage
ちゃんと3.2.2がCurrentReleaseになったのは4/25 だし。遅いってことも無いんじゃない? 上で3.2.2キタ━(゚∀゚)━!って言ってたのはDebianに PreReleaseが入ったってだけだし。
間違えた。3.2.3ね。
debian serge の無印gccがgcc-3.2(3.2.3) になってったよ! さらば2.95
350 :
名無しさん@お腹いっぱい。 :03/05/08 01:39
Pentium Mで最適化って-mcpu=pentium3でエエのかしら? i686にしといたほうが無難か?
-O3 が無難
352 :
名無しさん@お腹いっぱい。 :03/05/08 04:22
-mcpu=pentium3と-mcpu=i686ってどこがちがうの?
i686にはPenPro,Pen2やAthlonも含むんじゃないの?
354 :
名無しさん@お腹いっぱい。 :03/05/08 04:32
>>352 gccのソース嫁
とりあえずi386.mdってのを探すべし
355 :
名無しさん@お腹いっぱい。 :03/05/15 13:27
9か月ぶり。おめでとう!!
3.3だとglibc-2.3.2がコンパイル通らなくねっすか?
>>357 そんなものを何のためにコンパイルするのかな?
ひょっとして禿しく板違い?
あぼーん
360 :
名無しさん@お腹いっぱい。 :03/05/30 22:13
gcc 3.3 でCのコードをコンパイルしようとした時, /tmp/ccSthUIX.s: Assembler messages: /tmp/ccSthUIX.s:1820: Error: invalid character '.' in mnemonic というようなエラーが出てきて,該当するアセンブリ出力を見てみたら cmovl.ge %eax, %ebx というものだったんだけど,これは gcc 側がおかしなニーモニックを 吐き出しているのか,それとも as 側がおかしいのか,どちらでしょうか? as は binutils 2.13.2.1
>>361 CMOVGEでは?
gasのオペコードもcmovgeで定義されてるねえ。
gccのi386.md追っかけてないけど、gccの問題臭いな。
363 :
名無しさん@お腹いっぱい。 :03/06/01 17:26
gcc2.9x系と3.0との違いは何ですか? ポインタだけでも結構ですので、ご存知の方がいれば おしえてください。
>>364 さんくす。
主な変更点は、
・最適化の強化(末尾再帰呼び出しの除去など)
・サポートするプラットフォームの増加(IA64など)
・Javaのサポート
・C++まわりの改良
・C言語の新しい規格C99への対応を強化(完全準拠ではないみたい)
・新しく書き直されたプリプロセッサ
・内部仕様の変更(ガーベージコレクションを採用、文脈自由文法の
解析アルゴリズムを変更など)
こんなかんじでしょうか。
ところで
「New tail call and sibling call elimination optimizations.」
は末尾再帰呼び出しの除去だと思ったんだけど、あってる?
再帰だけじゃなくて、 return foo(); みたいのを関数呼び出しからジャンプに変更するとかも含まれんじゃないかな。
そもそも見慣れない構文なんだが。C99か? いずれにしても、そんな機能を使ってるプログラムは まず無いだろうな。
369 :
名無しさん@お腹いっぱい。 :03/07/10 12:53
Debian/sarge使ってます。 g++を3.3.1-0pre0にしたらblitz++がコンパイルできなくなっちゃって、 3.3-2に戻したらコンパイルできるようになりました。 gccが悪いのかblitz++が悪いのかはわかりません。 こういうときはどこかに報告するべき?
>>369 原因を特定できないのなら、ろくな説明ができないと
思われますので報告は必要ないですね。
特定できるのなら詳細なバグレポートを。
371 :
名無しさん@お腹いっぱい。 :03/07/10 14:08
/* BEGIN----------- #include<iostream> #include<fstream> using namespace std; int main(){ return 0; } /* END------------- というプログラムをFreeBSD5.1のGCC3.2.2でコンパイルしたら #include<fstream>の部分が原因で、 /usr/include/g++/fstream:304: warning: `typename std::basic_filebuf<_CharT, _Traits>::int_type' is implicitly a typename /usr/include/g++/fstream:304: warning: implicit typename is deprecated, please see the documentation for details /usr/include/g++/fstream:309: warning: `typename std::basic_filebuf<_CharT, _Traits>::int_type' is implicitly a typename /usr/include/g++/fstream:309: warning: implicit typename is deprecated, please see the documentation for details というエラーがでます。 GCC2.9.5では何もエラーは起らないのですが、原因知ってる人がいたらおねがいします。
(´-`).。oO(warningとerrorの区別がつかないDQNがここにもひとり…)
(´-`).。oO('GCC2.9.5'とは随分若いバージョンを使ってるな)
(´-`).。oO(それ以前に2.9.xなんてバージョン世間一般に公開されてないだろ)
>>371 なんか-CURRENTでそんな話読んだ記憶がある。
ヘッダファイルが古いからだったか。
どうせg++3.3に上げるから放置じゃなかったかな。
portsからいれれば問題ない。
>>372 正しいプログラムにwarningが出るのは問題だろ。
C++ってしってる?
"正しい"プログラムだからこそwarningになるのであって、
"正しくない"プログラムが(errorではなく)warningにしかならないのであれば、
そっちのほうが大問題。
まあ、C++規格のうつろいの激しさを知らないピュアな
>>375 に乾杯。
>"正しい"プログラムだからこそwarningになるのであって、 > 結局このwarningは消せないのでしょうか? 毎回出て来るのは正直ウザいので
>>377 portsのgcc32かgcc33でもインスコして常にそっちを使うようmake.confで指定しとくとか
warning
とりあえずCFLAGSに"-Werror"を付けておけば warningで悩まされることはなくなる次第
ワーニング
>>376 > "正しい"プログラムだからこそwarningになるのであって、
はぁ?ISO/IEC 14882って読んだことありますか?
> まあ、C++規格のうつろいの激しさを知らないピュアな
>>375 に乾杯。
自分のことだろw
いまだに頭の中がARMなんだろうな…
非建設的な煽りは御遠慮ください
>>383 372-384のうち375の前半と378以外は全て非建設的だがな。
わはは、ピュアな脊髄反射だなあw んで、マジレスするとISO/IEC 14882には そもそもここで言うerrorとかwarningという用語は登場しないし、 "正しい"プログラムにdiagnostic messageを出してはいけないとも書いてないわけだが。
そういう話題はプログラミング板とかでやって。
プログラミング板ってどこ?
>>386 =382=375
まあ、FreeBSDなんぞの不具合を延々引っ張られるのも
たしかに迷惑だが。
>>387 本当は375==382==384==388だよ。
まあ、とりあえず、 > `typename std::basic_filebuf<_CharT, _Traits>::int_type' is implicitly a typename > implicit typename is deprecated ちゅうことで。
あぼーん
393 :
名無しさん@お腹いっぱい。 :03/07/18 00:42
gcc3.3でmips用が作れない…。 どうしたものか
>>395 はい、まず手順から
gcc-3.3.tar.gz,newlib-1.11.0.tar.gz,binutils-2.13.2.1.tar.gzを
ftp.ring.gr.jpからもってくる
~/source/toolchain/以下に展開する。
# binutilsのインストール
cd binutils-2.13.2.1
./configure --prefix=/usr/local/cross --target=mips-embedded-elf
make
su -m
make install
ここで~/.cshrcに手を入れて/usr/local/crossにPATHを通す。
source ~/.cshrc
# gccのインストール
cd ,../gcc-3.3
ln -s ../newlib-1.11.0/newlib .
./configure --prefix=/usr/local/cross --target=mips-embedded-elf \
--with-newlib --enable-languages="c,c++"
make (ここでエラー)
xgcc: installation problem, cannot exec `mips-tfile': No such file or directory
*** Error code 1
Stop.
make: stopped in /home/tak/source/toolchain/gcc-3.3/gcc
*** Error code 1
Stop.
make: stopped in /home/tak/source/toolchain/gcc-3.3/gcc
*** Error code 1
Stop.
make: stopped in /home/tak/source/toolchain/gcc-3.3
googleでmips-tflileを検索すると--with-gnu-asをつけた方がよい
との例があったので、それを追加して再チャレンジ
http://www.spacelan.ne.jp/~m-yana/micro/gnu/mips/mipsegcs.htm (gcc-3.3/ ディレクトリは一度消してやりなおし)
make (またエラー) tiswctype.c ..linked twctrans.c ..linked twctype.c ..linked wctype.exp ..linked creating cache ../config.cache configure: error: can not find install-sh or install.sh in .. ./.. *** Error code 1 Stop. make: stopped in /home/tak/source/toolchain/gcc-3.3 ここで力尽きました。(gcc-3.3/ にはinstall-shがあるのに・・・)
本当は--enable-sharedと--enable-threadsもつけたいのですが
まず基本をするためにこのように(
>>396-398 )しました。
ただわからないのは、BSDには自前のlibcがあるのに
newlibが必要なのかと言うところです。
googleで検索するとみんなやり方がばらばらで
調べれば調べるほどどんどんわからなくなっていきます。。。
このやり方はgoogleとEmbedde UNIX,、 UNIX USERのGBA特集(--targetの指定の仕方)を参考にしました。 長くなりましたがよろしくお願いします
何度もすいません hostはAthlon-xp1800+(つまりi386)のNetBSDです。
そんなに苦労して再コンパイルしたって、 目に見えて大きな変化は無いと思うんだけどね。
install-shをそれっぽいディレクトリにばらまいてみては?
っていうか、 .. って云ってるんだから gcc-3.3/ じゃなくてその上、 toolchain/ に置けばよさそうな気がする… 昔 cygwin で gcc compile したときも、一つ上に置いてたし。
>>402 VR4100シリーズのパイプライン最適化を試してみたいのです。
(GCC-3.3からなので)
効果がなるほどと思える物であれば
この先の3.4とかをプロジェクトに使おうかと・・・。
少しでも性能を上げたいんです、はい。
>>403-404 ではやってみます。
>>399 > ただわからないのは、BSDには自前のlibcがあるのに
> newlibが必要なのかと言うところです。
自前のlibcなんて、今後放置プレーなんじゃないの?
無知がnewlib使ってGPL汚染ウマー
newlibってeCosのためのライブラリだと思ってたけど これって間違ってますか?
まあもともとは組み込みOS向けのちっこいlibcってことで開発 されたんだろうけど、いまとなってはCygwinが主要ターゲットって 説も…。
試行錯誤してました。
まず、
>>403-404 install.shをばらまくのはどうもだめでした。
ここで途方に暮れること数日・・・・。
そこでNetBSD1.6.1のクロスtoolchainの構築をlogに残して
どんなことやってるのか見てみました。
あと、build.shで作ることの出来るmips用includeファイルと
libを使えば良いんじゃないかと思い
こんなconfigureオプションにしてみました。
binutils
./configure --prefix=/usr/local/cross \
--target=mipsel--netbsd --with-gnu-as --with-gnu-ld \
--disable-nls --disable-shared
gcc-3.3
./configure --prefix=/usr/local/cross \
--target=mipsel--netbsd --with-gnu-as --with-gnu-ld \
--disable-nls --disable-shared \
--with-headers=$mipsel_include_path --with-libs=$mipsel_libs_path
なんとかうまくいきましたが疑問が・・・・・。
このheaderとlibは、あるディレクトリ以下の閉じたソースで
includeファイルをmake時に決めうちする場合
このgcc-3.3でつくるオブジェクトには影響しないんですよね。
つまりはこのheaderとlibはgcc-3.3構築のみに
使われると思ってるんですが・・・
認識あってますでしょうか?
あとgcc-3.3のマニュアルには -mno-half-pic -mhalf-picがあるんですが しらないオプションと言われるんです。 gccのメーリングリストで見つけました。 昨年の6月に削除されたようです・・・。 そのためNetBSDカーネルコンパイルできない・・・・。 マニュアルアップデートしてないのホントですね
>>413 libsupc++とか作るときに見るはず。
libgccも見てるっけ?
あぼーん
417 :
名無しさん@お腹いっぱい。 :03/08/09 13:53
3.3.1 age
あぼーん
あぼーん
あぼーん
421 :
名無しさん@お腹いっぱい。 :03/09/04 16:21
gccは糞
お通じありがたし
423 :
名無しさん@お腹いっぱい。 :03/09/05 23:04
gccは糞
3.4 でまた C++ ABI 変わるってほんと?
426 :
名無しさん@お腹いっぱい。 :03/10/19 00:30
3.3.2age
Plamo Linux 2.2.6 上で gcc-3.3.2 をビルドしようとしてるんだが、 $ cd /usr/local/src $ tar zxf ~/gcc-3.3.2.tar.gz $ mkdir gccobj $ cd gccobj $ ../gcc-3.3.2/configure --prefix=/usr $ make bootstrap /bin/sh ./libtool --tag=CXX --mode=link /usr/local/src/gccobj/gcc/xgcc -shared-l ibgcc -B/usr/local/src/gccobj/gcc/ -nostdinc++ -L/usr/local/src/gccobj/i686-pc- linux-gnu/libstdc++-v3/src -L/usr/local/src/gccobj/i686-pc-linux-gnu/libstdc++-v 3/src/.libs -B/usr/i686-pc-linux-gnu/bin/ -B/usr/i686-pc-linux-gnu/lib/ -isystem /usr/i686-pc-linux-gnu/include -L/usr/local/src/gccobj/i686-pc-linux-gnu/libjav a -ffloat-store -g -O2 -o libgcj.la -objectlist libgcj.objectlist \ ../boehm-gc/libgcjgc_convenience.la ../libffi/libffi_convenience.la ../zlib/libz gcj_convenience.la \ -rpath /usr/lib/. -rpath /usr/lib/. -lpthread ./libltdl/libltdlc.la -version-i nfo `grep -v '^#' ../../../gcc-3.3.2/libjava/libtool-version` ここでループしちゃって帰ってこない。 なんでだろ?
>>427 > ここでループしちゃって帰ってこない。
> なんでだろ?
まちつづけることが重要です。
>>428 修行がたりませんでした。
いい子にして待ちます。
ども。
長い...。 24 時間たっても終わらないよぅ(Celeron 1.4GHz)。
終わった...。 26 時間ばかりかかったです。 こーゆーのを見ると旧式になったのだなぁと思ふ。
世間ではCeleron 1.4GHzで旧式なのか...........
いや、俺もそんなことはないと思いたいのだが、 1アプリにすぎない gcc のビルドに丸1日かかっちゃうと ちょっと切ない気持ちになる。 フツーに使う分には十分な性能なんだがな。
>>431 gmake -j 2 bootstrap
とかしてる?
Status of processor 1 as of: 10/21/03 22:19:15 Processor has been on-line since 10/20/03 02:54:11. The sparcv9 processor operates at 296 MHz, and has a sparcv9 floating point processor. Status of processor 3 as of: 10/21/03 22:19:15 Processor has been on-line since 10/20/03 02:54:12. The sparcv9 processor operates at 296 MHz, and has a sparcv9 floating point processor. というマシンで今からビルドしてみます。 とれくらいかかるかな?
書きわすれた。
>>427 java で馬鹿みたいに時間喰ってるので、java を使用しないのであれば、
--enable-languages="c,c++,f77,objc,ada"
でかなり時間を節約できます。
漏れは--enable-languages=c,c++だけだな
libgcc_s.soをdynamic linkされるのがうっとおしいので いつもspecsファイルを手で変更しているのですが、./configure のオプションなどで変更できるのでしょうか?
>>435 03:38 に終わっていました。
一日もかかりませんでした。
あー、何も考えないで 427 の手順のままやっちまったよ。
>>434 CPU 1個のシステムでも結構効果上がる?
つか、試してみます。
>>436 ですね。
今までこんなに時間がかかったことがなかったから
ちとびっくりした。
3.3 のときはせいぜい数時間だったような。
>>441 なんとなくメモリ不足でスラッシング起こしているんでは?
とか思ってみる。
>>442 ちなみに、既にインストールされているものは手動で消さなきゃだめ。
H8用cross、未だ3.0.3+平田patchを超えられず(;´Д`)
うちのSS5だとどれ位かかるかな…
>>445 そうかなあ?
たしかに謎な挙動が結構あるが。
そういえば3.4は最適化がちょっと強化されるらしい。
3.4 はまた C++ ABI が変わるんだとか...
ヽ(`Д´)ノ
450 :
名無しさん@お腹いっぱい。 :03/11/09 03:43
Solaris で、マルチスレッドのコンパイル&リンクするときって、どうやるの?
#define _REENTRANT #include <pthread.h> #include <thread.h> Sunのcc: -mt ... -lpthread [必要ならば -lrt] gcc: -pthread ... -lpthread [必要ならば -lrt]
gccはoption無しで大丈夫。
453 :
名無しさん@お腹いっぱい。 :03/11/16 09:20
make age
454 :
オブジェクト指向促進運動 :03/11/16 21:12
IT業界にアージャイル開発とデザインパターンを広めよう! C言語を使ってかなり苦労したので その苦労を最小限におさえるために アージャイル開発、デザインパターンを 多くのプログラマに使って欲しいと思うことがある。 一種の挨拶みたいなものだね。 「なるべく挨拶を心がけましょう。」 「なるべき綺麗な字で書きましょう。」 のように デザインパターンを使うこと、アージャイル開発することが プログラマの習慣、常識になってほしい。 なんとか、デザインパターン文化、アージャイル開発文化を押し広げられたら・・・。 IT業界の将来はオブジェクト指向とアージャイル開発が握っています!
オブジェクト指向==デザパタですか。ずいぶん視野の狭いお話で。
456 :
名無しさん@お腹いっぱい。 :03/11/17 10:17
いまだに2.95ですが何か
俺的にさっさとlispのコンパイラ作って欲しい
Gnu is Not Unix RMSおよびGNUはUNIX市場をぶち壊すことがその目的です。 LISP,関数型言語の繁栄のために日夜努力されているのです。 Allegroの商圏を踏み荒らすような真似をするはずも ありません。
anonymous cvs server落ちてる?
ここ最近ずっとおかしくない?
うん、gnu.orgのCVS serverおかしい
まあg++の作業はちょっと遅れてるっぽいし、 3.3の完成度は高いから、2年ぐらいは 新規のリリースなしでもいいかな〜なんて。
gcc 3.4 って、cc1 とか collect2 が /usr/libexec に移動しているね。 それと /usr/lib/gcc-lib が /usr/lib/gcc になってた。
465 :
名無しさん@お腹いっぱい。 :04/01/24 05:44
WE LOVE GCC!!!
>>463 そろそろ3.4.0Releaseという噂が聞こえてきましたよ…
>>462 できればrsyncだけでなくcvsupとかも動かしてくれるとディスクを
たくさんガリガリやらなくて済むんだけどな。
468 :
名無しさん@お腹いっぱい。 :04/02/08 12:38
このスレの温度 | |- 20 | | | |- 10 | | | |- 0 | | | |- -10 ∧_∧ |┃| (´∀` ) |┃| ( ) . (●) | | |  ̄ (_(__)
469 :
名無しさん@お腹いっぱい。 :04/02/12 03:05
3.3の完成度は高いのか....(泣)
insn:HI 2040 2044 3203 137 ff01ebc0 (set (reg:DI 31 %i7 [32])
(fix:DI (fix:DF (reg:DF 32 %f0 [647])))) 166 {fix_truncdfdi2} (insn_list 2037 (nil))
(nil))
exif.c:673: internal compiler error: in reload_cse_simplify_operands, at reload1.c:8345
完全なバグ報告を送って下さい。
適切ならばプリプロセス後のソースをつけてください。
<URL:
http://gcc.gnu.org/bugs.html > を見れば方法が書いてあります。
gmake: *** [exif.o] Error 1
bash-2.05$ gcc -v
/opt/gnu/lib/gcc-lib/sparc-sun-solaris2.9/3.3.2/specs から spec を読み込み中
コンフィグオプション: ../gcc-3.3.2/configure --prefix=/opt/gnu --enable-languages=c,c++
スレッドモデル: posix
gcc バージョン 3.3.2
漏れは3つ位出したぞ。sparcじゃないけど。 マイナーなアーキテクチャの宿命だ。 メンテナが頑張ってくれているので消えることは無さそうだが。
少しぐらいのバギー加減は、ユーザーにコンパイラの内部動作に 関心持ってもらうためには必要だと思われ。とかいってみる。
>>471 emacs-21.3をleim入れてコンパイルしたら使い物にならないバイナリを吐くのも
啓発のためっすか?(泣)
最初 big-5 あたりでcore吐いていたので configure と Makefile いじれば
なんとかなるかと思って色々やってみたんだけど...
結局 3.2.3 にダウングレードしちゃった。手持ちソースではこちらの方が安定
しているみたいだし。
>>472 Emacs current つかいなよ。
いつの間にか 3.3.3 出てるのな。 アーカイブのディレクトリ構成かわってて気づかなかった。
475 :
◆ieqrh9GF7Y :04/04/18 11:20
gccの挙動に関しての質問てどこに投げればいいの? gcc-help ? 因みに質問は以下のコードをコンパイルすると if の部分 がなくなるのはなぜ?ってことなんだけど。 int hoge(signed char ch) { if ((unsigned short)ch > 127) return 0; return 1; }
(キミのプラットフォームでは) signed char が取り得る範囲が -128〜 127 で、その if は常に false でそ。
charが1byteではない。もしくは -128から127っていう範囲でないっていう環境はあるの?
479 :
名無しさん@お腹いっぱい。 :04/04/18 13:43
いまだにOpenBSD上でgcc2.95系使ってる俺って…
>>477 その説明はおかしい。
unsigned short にキャストしているから、
たとえば ch が -128 なら
(unsigned short の最大の値+1)-128になる。
大抵の環境で、unsigned short の最大の値は 127 より大きいので、
(unsigned short)ch は 127 よりおおきい値になり得る。
>>475 gccの問題のようですね。比較の相手を127でなくて1にしても
同じ症状が出ますから、charの範囲、という問題でもない。
>>480 > 大抵の環境で、unsigned short の最大の値は 127 より大きいので、
> (unsigned short)ch は 127 よりおおきい値になり得る。
そこで止まっちゃだめだよ。
もしch = -128だったら、unsigned shortにキャストした段階で符号ビットを
延長するので左辺は1...10000000。一方、右辺は整数定数127。これはサフィ
クスがない10進数でintで表現しきれるのでintとして扱われる。
比較演算子の左辺はunsigned short、右辺はintだから、演算を適用する前に
両方ともintへキャストされる。intはunsigned shortより小さいことはないか
ら、左辺のビットパターンはそのまま。よって最初のchが負の値の場合、キャ
スト後のintとしての左辺も必ず負の値になるので、この条件文は常に偽。
>>481 > intとしての左辺も必ず負の値になるので
なりませんよ。
signedをunsignedにしたばあい、unsignedの範囲に入るようにunsignedの最大値+1を
必要な回数だけ加算する。singed char -1をunsigned shortにした場合USHRT_MAXになる。
つぎに、int以下の整数演算はintに格上げされて演算される(右辺がintでなくても格上
げされる)が、値保存で変換されるのでUSHRT_MAXのまま。
unsigned shortがintより範囲が広い場合、両辺がunsigned shortに変換されて比較されるので、
結果は同じ。
>>481 ちがう。ch=-128 (10000000) で
unsigned short が 16 ビットだとしたら、
左辺は 1111111110000000 になる。これを int (符号付き)
に promote (キャストではない) させる。
int が 32 bit だとしても、unsigned short からの
変換だから、左に 1 は補われない。ゆえに、
00000000000000001111111110000000
になる。
>>475 if ((unsigned int)ch > 127)
にしる。
どうしても unsigned short で比較したい場合は
右辺も unsigned short の入れ物に入れる。
unsigned shortにキャストする意味って何?
プログラムの意図が全くわからんな。 int hoge(signed char ch) { return ch >= 0; } ってやりたいわけ?
gcc の中の人も大変だな。
signed charなんてものを作った奴は腹かっさばいてお詫びしろや。
符合付き8bit整数はごく普通のデータ型ですよ。 8080とかね。
つーか最初にchar をungigned なoctet にした奴に栄光あれ、だな。
規格上はどっちでもいいよ。 signed char, unsigned charと同じ値を持たなくてもいいし。
493 :
◆ieqrh9GF7Y :04/04/18 22:49
例はバグを簡略化したものです。
>>484 同じ解釈です。
>>480 gcc の問題とすると報告すべきはどこ? <- 元の質問の意図
127 を 128 にすると、if は残る。逆に gcc -O0 で作っても
if 部分は影も形もなくなるので、Optimizer の仕業ではなく、
C言語仕様解釈の問題だと思ってる。
このプログラムのほうが問題点が明確になるかな。 i は明らかに 1より大きいのに、それを1と比較すると0になる。 -O0でも同じ。 gcc2.95.4だと期待した通りになる。 #include <stdio.h> main() { char c = -128; int f, i; i = (unsigned short) c; f = (unsigned short) c > 1; printf("i => %d, i>1 => %d\n", i, f); }
些細なことですが return 0; しとこうね。
precompiled header に魅かれてgcc3.4インストールしたのに >sorry, unimplemented: had to relocate PCH って言われた。 どういうことじゃヽ(`Д´)ノ
498 :
名無しさん@お腹いっぱい。 :04/04/19 07:01
>>495-496 C99では明示的にreturn 0;を書く必要はありませんね。
まあ gcc2.95.4 には関係ないことでしょうけど。
>>478 SHARC/TigerSHARC は char は32bitですよ。
こいつはGCCが標準コンパイラです。
じゃ、shortも32bitなんだ
>>495 を、
gcc -c -O -dra foo.c すると、"ce1"の後に消える。
gcc -c -O0 -dra foo.c すると、なぜかcompareは残ったままだね。
"mach"の後で消えてるのかな。
>>500 鋭いですね、そうですよ。
で、sizeof( 整数の型名 ) するとどれも1が返ってきてあせる(笑)
バイトアドレシッシングじゃなくてワードアドレッシングだからこれで正解なんだろうけど
BCPLかよ!?
よく分かんないんだけど、つまりCHAR_BITSが32ってこと?
3.4.0 release sage
506 :
名無しさん@お腹いっぱい。 :04/04/21 21:45
>>505 gccの公式ページよりdistrowatchの方が早くアナウンスしてたのには
驚いた。
まだ使うにはたぶん危険だよね?パフォーマンスはアップしてるのかな?
危険大好き
>The cast-as-lvalue extension has been removed for C++ and deprecated for C and Objective-C. これってANSIかなんかの規格がそうなってるのかな? ときどき使ってるからちょと痛い
ミラー逝きわたるっていったいどこを泳いでるの? 全然見当たらないんだけど。
>>510 一昨日にはもう ftp.iij.ad.jp にあったぞ。
ringも来てるところはある。
そんなことより3.3.3はなんで沈没してるんだ
gccは3.3.3が最高傑作。とか後々までかたられるでしょう。
騙られる、だったりして
519 :
名無しさん@お腹いっぱい。 :04/04/30 01:16
>>508 3.4.0でのビルドを試して見ましたが、3.3以前でOKだった、幾つかの作法の悪いプログラムは全滅ですね。
丁寧に直せばいいんでしょうけどね…
3.5からはCもエラーにするらしい。 早めに直しておきませう。
縛りがきつい方が有難い。
きついのに血行を妨げないのがプロの縛り方
523 :
名無しさん@お腹いっぱい。 :04/04/30 14:36
nmしたときやg++ -Sしたときに、コンストラクタやデストラクタに Foo::Foo[in-charge]() のように[なんちゃら]と注釈が入っている場合がありますけど、 これって何ですか?どこかに解説ありませんか? in-charge, not-in-charge, in-charge deleting などがあるようで...
524 :
名無しさん@お腹いっぱい。 :04/05/02 12:37
ドスドスドスドス この洗いを作ったのは誰だぁ!!
雄山?
526 :
名無しさん@お腹いっぱい。 :04/05/03 18:17
だな。
>>523 $(GCC)/gcc/cp/decl2.c
/* Constructors for types with virtual baseclasses need an "in-charge" flag
saying whether this constructor is responsible for initialization of
virtual baseclasses or not. All destructors also need this "in-charge"
flag, which additionally determines whether or not the destructor should
free the memory for the object.
$(GCC)/gcc/cp/mangle.c
/* Handle destructor productions of non-terminal <special-name>.
DTOR is a destructor FUNCTION_DECL.
<special-name> ::= D0 # deleting (in-charge) destructor
::= D1 # complete object (in-charge) destructor
::= D2 # base object (not-in-charge) destructor
gcc3.3.4のチャンゲログが無いですがな
3.x はバージョン進むのが早いな。
ICEってかっこいい響きだよな
ドイツの新幹線もICE
Inter City Express というのか。 In-Circuit Emurator Internal Compiler Error あとは?
X11のInter-Client Exchange protocolもな
Integral Cool Energy
536 :
名無しさん@お腹いっぱい。 :04/09/09 18:35
Solaris9で、バイナリーのgcc-3.4.1をインスコしたら ld.so.1: gcc: 重大なエラー: libiconv.so.2: open に失敗しました: ファイルもディレクトリもありません。 強制終了 となってしまいます。 2台やって2台とも同じでした。 iconvのバイナリーってどこで入手できますか?
538 :
名無しさん@お腹いっぱい。 :04/09/10 01:24
GCC 3.4.2 age
3.4.1 から 3.4.2 に上げたら生成されるバイナリが libgcc_s.so.1 をリンクするようになった。 このへん何か変わった?
うん。
GCC 4.0のおいしいところは?
スパイスが効いているところ。
ひどいめにあわすよ
プリコンパイルヘッダの作り方は gcc /usr/include/**/*.h でいいんだっけ?
Reading specs from /usr/local/lib/gcc/sparc-sun-solaris2.9/3.4.3/specs Configured with: ../gcc-3.4.3/configure --disable-nls Thread model: posix gcc version 3.4.3
さてGCC4のリリースも近づきつつある今日この頃。 自分はこまめにビルド・チェックするほどの追っかけじゃなかったけど、GCC3というプロダクトはどのような評価に値する物だったのでしょか。 漏れには、伽藍時代よりテンポ良くリリースされていった分、各Linuxディストロもそれに振り回されてたような印象が。 あとGCC3は、例えば2.95.xや2.7.2.3並みに安定感のあるリリースがなされてたのでしょうか。 よろしければみんなの御意見、どぞ。
g++のC++規格追従上、3.X以外に考えられない。
3.4系はほとんど使われないまま4.0に移行しそうな予感が。
いまだに 2.95.x だよ。もう 4.x の足音が聞こえるような時期なのか。
553 :
名無しさん@お腹いっぱい。 :05/01/27 12:55:20
あげ
gcc-4.0 が出るまでにこのスレを使いきろう…
いつ出るのさ
>>555 予定では近いうちに出るはずだが。
漏れ的にはsh-elfの-m2aが腐っているぽいのでもう少し待ってほしい所ですな。
(´-`).。oO(Unix板にGCCって必要なんだろうか。。。)
gcc.gnu.orgがHDDあぼーんしたらしい。
>>559 そうらしいね。
なんかファイルシステムに問題あったらしいよ。
現在、復旧中らしい。
反GPLな奴らのアタック
アナウンスが来てから12時間ほど経ったが…まだ復旧してないのか。 これは長引きそうだな。 まあ急ぐ用事も無いから別に構わんが。
gcc-4.0 が出たらしいですが、スレ違いでしょうか
びみょー
566 :
名無しさん@お腹いっぱい。 :2005/04/27(水) 13:50:34
gcc-4.0 で fortran を使うにはどうしたらよいでしょうか?
>>566 スレタイ見ろよ。
スレ違いもいいとこだろが。
ったく。
GCC 3.0がリリーナされるのはいつですか?
3と4は別スレじゃなくてもいいんじゃね?
しっかし、このスレ息長すぎー。 4年近く存在するのか。
遅蒔きながら、祝・GCC 4.0リリース。 gcc.gnu.org/gcc-4.0/changes.html とかは当然読んだんだけれど、他のサイトでリリースに対する反応があったらURLコピペぷりーず。
いまだにgcc-2を使っていますが何か?
ABIを変えたら負けだとおもってる。 gcc2.95を使ってる自分は勝ってるとおもいます。
むぅ……。gcc-4.0.0 で rrdtool を作れない。
3.4.3 で作れたから困りゃしないんだけど。Solaris10。
checking if IEEE math works out of the box... no
checking if IEEE math works with the -ieee switch... no
checking if IEEE math works with the -qfloat=nofold switch... no
checking if IEEE math works with the -w -qflttrap=enable:zerodivide... no
checking if IEEE math works with the -mieee switch... no
checking if IEEE math works with the -q float=rndsngl switch... no
checking if IEEE math works with the -OPT:IEEE_NaN_inf=ON switch... no
checking if IEEE math works with the -OPT:IEEE_comparisons=ON switch... no
checking if IEEE math works with fpsetmask(0)... no
checking if IEEE math works with signal(SIGFPE,SIG_IGN)... no
configure: error:
Your Compiler does not do propper IEEE math ... Please find out how to
make IEEE math work with your compiler and let me know (
[email protected] ).
Check config.log to see what went wrong ...
むぅ……。top-3.5.1 もコケた。gcc-3.4.3 なら問題なし。 4.0 はまだ手を出すべきじゃないのかしらん。
バグレポートしろよ
そうなんだけど、プログラムは専門外だから ソースが悪いのかコンパイラが悪いのか切り分けできないんだもん。
gcc 3.4.4出ましたよ。今のところ、これが一番安全パイ?
3.3.5じゃない?
3.3.6じゃなくて?
うちも 3.3.6
2.95.2
2.95.3 じゃなくてーってなんかもう話題ないんか
m68kでi*86のクロスとか、変なことしてる奴いるけ?
592 :
名無しさん@お腹いっぱい。 :2005/05/25(水) 23:26:56
いるけ?
593 :
名無しさん@お腹いっぱい。 :2005/05/25(水) 23:38:09
アホみたいにメモリ喰うようになったな。 おれがdjgccで1.3Xとか使ってた頃は(以下略・・・
なんだいないのけ.
惰性で見てるよこのスレ。 gcc が出たころは衝撃だったなー。 売りもんのコンパイラよりいい最適化コード吐くし、 gcc のソースコードとかマニュアルとか読んでぞくぞくしてた。
>>596 スパーハッカキタ━(゜∀゜)━( ゜∀)━( ゜)━( )━(゜ )━(∀゜ )━(゜∀゜)━!!!!
gccはANSI Cを使うためだけに入れました。バージョン忘れた。
1.27とか1.36とか? つーか1000行くまでに4.1出てるし(w
このペースなら5.0も期待できるな
そろそろ4.0.1かな?
602 :
名無しさん@お腹いっぱい。 :2005/07/08(金) 23:46:44
gccの中の人GJ! 低脳支那人逝ってよし
>>602 支那人が!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
すまん、火病おこしてしまったwwwwwwwwwwww
>>580 カメレスだけど。
CFLAGS=-fno-builtin でいけるよ。
gcc-4.0.1でperl-5.8.7がコンパイル出来ない。 miniperlがPATHどうこう言ってるけど、コンパイラの違いでそんなの影響出るんだろうか?
>>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はあるんだけど。
>>609 ふむ、よくわからんけど、config.sh の optim から最適化を外し
て、./Configure -S したあと、gmake するとか、thread 無しでコンパイルし
てみるとか。やってみたらどうかね。
よくわからんけど、メッセージだけ読むと PATH=.:$PATH make コンパイラの違いは不明
612 :
607 :2005/07/15(金) 15:45:30
やっぱり、インタプリタレベルスレッドを使わないと問題ないようです。 とりあえず、しばらくはperlだけ諦めます。
libpcapがgcc-4.0.1だと死にました。実際はtcpdumpから呼び出されて死ぬんだけど。 もう詳しい事はわからん。
>>613 gdb tcpdump core
backtrace
615 :
613 :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
-finline-functionsが原因みたい。単体でも落ちた。
x86_64 ってOSによっては安定してなかったり?
どうなんでしょう。私は、gentoo linux使ってます。 4.1-CVSでもprofilebootstrap失敗するし、i386と比べたら安定してないんでしょうね。
>>615 > アーキテクチャはx86_64です。
何故先に言わん(w
シグナル受けたんならどのシグナルかくらい晒さないと…
>>619 シグナル核の忘れてました。SEGVです。
dmesgが埋め尽くされてる。
tcpdump[24386]: segfault at 0000000000000030 rip 00002aaaaae3125b rsp 00007fffff82f1a8 error 4
バウンダリ関係かねえ。 libpcapを-g付きでcompileしてdebugが王道だと思うけど、 -mpreferred-stack-boundary= 辺りを試してみるのもいいかもねえ。 -march=k8にはなっているよね?
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使ってみたけど何も出ませんでした。
ifのjumpかな? -Osだとどうだろう。 -falign-functions -falign-jumps -falign-loops -falign-labels -freorder-blocks -fprefetch-loop-arrays がオフ。
>>623 -Osはだめでした。
>>624 いけました。ばっちりです。
いろいろ問題ありそうですけど、今のところこれ以外当たってないんですよね。
portageつかってるから、まずいのがわかっている場合は回避してる可能性がありますが。
626 :
名無しさん@お腹いっぱい。 :2005/09/18(日) 16:40:56
gcc4は-O1でも-fprefetch-loop-arrays効くのかな
4.0.2が出ました。
3.3や3.4より早いバイナリを作れるようになるのはいつですか?
4.3や4.4になるまでお待ちください。
つーか3.3, 3.4でいいじゃん。 4系はerror recoveryちょっと賢くなった気がするが。
GCCは3.2.xのころが一番早くて安定しててよかった。。。
631です。漢字間違えた。 「早」 → 「速」
でも4.xのcc1plusは明らかに3.xのより速いよ。
4.1のcc1plusは速い。 吐くコードは知らん。
635 :
名無しさん@お腹いっぱい。 :2005/11/28(月) 17:33:48
gcc-2.9では通るのにgcc-3.3では voidのとこでエラーになるんですが何故? prase error before `!' token
コードさらせYO
なんでだお!
それだけの情報で、どう指摘するんだお!
先生! 問題を明確にしない限り、答える事もできないと思います! \  ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧∩ ( ・∀・)/ _ / / / \⊂ノ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄||
(・3・) 先生は出張中です。
3.4.5 が出ました。
4.2まだー?
5.0はどうですか
>>635 そのgccエラーメッセージおかしいよ
野良ビルドしたんじゃないの?
praseってスペルミスありえない
エラーメッセージはコピペが基本だよなあ
ところでアンインストールはどうやったらいいの? make uninstallだと弾かれる。
648 :
名無しさん@お腹いっぱい。 :2006/02/25(土) 21:54:59
4.1って安定版?
まだスナップショットしか出てないと思うけど。 私はLinux on amd64でメインに使ってます。
650 :
名無しさん@お腹いっぱい。 :2006/02/26(日) 00:37:13
>649 完成したら4.2として公開されるのでしょうか?
4.2ってスナップ出てるんあないっけ?
>>650 4.1が完成したら4.1として公開されますよ。
Linuxみたいに「このバージョンは安定版、このバージョンは実験版」
という区別はありません。
653 :
648 :2006/02/26(日) 23:58:48
どうもありがとうございました
そうはいってもGCCってmajor > minorなうちは実験版という評価がもっぱらのような
2.5.8とか
gcc-1.4.2 はいいデキでしたよ。
gcc-4.1.0 キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
659 :
名無しさん@お腹いっぱい。 :2006/03/02(木) 04:56:28
maji?
4.0.2 までは素直にbuild通ってたのに4.1.0で落ちる orz Solarisダメポ
Solarisはgccのバージョンが上がる最初の版は大抵そのままではうまくいかないw
664 :
名無しさん@お腹いっぱい。 :2006/03/05(日) 11:34:19
>>664 十分に詳しいと思うが。もっと必要ならWikiなりML Archiveなり漁るが良し。
666 :
名無しさん@お腹いっぱい。 :2006/03/05(日) 17:30:07
4.1使った人、どうよ?
.0のバージョンの割には3.4.0や4.0.0の時よりいい
sparc Solaris9 でlibtool と texinfo 入れて --disable-libgcj したらなんとか gcc4.1.0コンパイルできた・・・ -m64 も使える。さて、何からやるか。
ちょっとコンパイルしてみたけど、以前のバージョンなら通ってたものが エラーになるね。 error: static declaration of 'XXXXX' follows non-static declaration とか、、、該当行のstatic外したら通ったが。
4系列になってから、全体的にCの構文に厳しくなったらしい。 muttなんかも構文警告が構文エラーになって、ビルドできなかった事がある。
3も2よりだいぶ厳しくなったといわれてたな。
LLVMまだ?
gcc4.1.0でgcc4.1.0を何回もコンパイルすると不定期にアセンブラが.identが見付からないよと言う壊れたコンパイラになる
gcc4.1.1きた?
gcc-4.1.1 Solaris玉砕 T_T);
GCCもそうだけど、GNUのツールってだいぶLinux-centricに なってきて、広い影響力は以前より落ちている気がするね。
NetBSD-currentなんかも、ずっと3.3.3のまんまだもんな。 *BSDにおいてはGNU関連ツールは使わざるを得ないから使ってると 誰かが雑誌で言ってたな。
NetBSDは只今GCC4に切り替え中。 確かに NetBSD ぐらい CPU に対応してると、それ全部で使えるコンパイラを 新たに用意するのは難しいでしょうね。 GCCでもマイナーなCPUは切り捨てそうですけど。
OpenCC書いてくれTheo
683 :
名無しさん@お腹いっぱい。 :2006/09/03(日) 11:45:37
gcc 大きくなりすぎ もっと軽い free な cc ないんだっけ?
お前には関係ない。
ビーのコアチームとやらで作ればいいじゃんwwwwwwwww
吐くコードが小さくて速けりゃgccが大きくたって問題はなかろうに。 軽い処理系だと十分なoptimizeができるとは思えんが。
gccもそのうちXみたいにモジュール化するんだろうか
サイズに関する最適化は欲しい
熟女系の作品だとサイズが縮みます。
膨らむ奴もいる
保守
>>681 gccの問題というより、
NetBSDの方がバージョン移行のCPUテスター不足なんじゃないの?
Linuxはバージョン上げるのに成功しているし。
マイナーだと厳しいよね。
>>694 Linuxはとりあえずバージョン上げて、何かあったら大騒ぎするというやり方。
「Linuxは」というほどディストリでgccの扱い共通してない。 カーネルがgcc依存ってのくらい。
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++の仕様じゃないかな?
タイムトラベラーの方ですか? C89以降、関数のプロトタイプ宣言(とそれに基いた昇格)はCでも当たり前の事ですが。
701 :
名無しさん@お腹いっぱい。 :2008/08/11(月) 16:11:49
ついでに質問しちゃおう。xを変数とするとき、 x = x++; という代入文は、結果がどうなるか不定だと思うんだけども、 そこのあたりどうなっているでしょうか?
ム板で聞いた方がよくね
>>701 おいおい、よく見てみろ。(例が悪いよ)
= と ++ の動作が、どちらが先だとしても x の値は +1 されるだろ。
よって、結果がどうなるか不定ではない。
>>701 つ シーケンスポイント
規格持っているならそこを読んで。
ないならググッて。
せっかく2.95を超える世界制覇バージョンとなることが約束された3.0がリリースされたのに 他に言うことはないのか?
ないな。
707 :
名無しさん@お腹いっぱい。 :2008/08/11(月) 17:54:18
「シーケンスポイントに関する規約」に適合していないプログラムは 実行結果が保証されないことが分かった。 さて、そうなると、規約を破っているソースコードに対しては、 それを警告してくれるコンパイラの機能が望まれる。 GCCではそのあたりがどうなっているのだろうか?
もうこの板のスレ2年過ぎたら強制dat落ちにしようぜ・・・
5年先まで見通してスレ立てればいいだけの話
投票所を作って、反対意見が出ないようなら削除依頼とかな 依頼してもなかなか削除されねーけど
714 :
名無しさん@お腹いっぱい。 :2008/08/16(土) 04:42:49
このしらいさんという方も勘違いしてますね。
718 :
名無しさん@お腹いっぱい。 :2008/10/05(日) 05:53:48 BE:1345128858-2BP(0)
OpenBSDは未だに、2.95ですね。
719 :
名無しさん@お腹いっぱい。 :2009/01/11(日) 15:34:03
gccで関数プロトタイプ宣言を自動的に生成する機能があると聞いたのですが、 ぐぐってみてもそのような機能は見つかりませんでした。 もし本当にそういう機能があれば、どなたか教えていただけないでしょうか。 またgccに限らず、*.cから*.hを自動的に生成するツールについておすすめのものがあれば教えてください。
GCC3スレにようこそw
ttp://www.kouno.jp/home/c_faq/c11.html#31 > 関数プロトタイプの自動生成ソフトはいくつか存在する。多くはlint に手を
> 入れたものになっている。CPROTOというプログラムが1992年3 月に
> comp.sources.miscにポストされた。他にもcextractというツー ルが存在する。
> コンパイラのベンダーの多くは単純なユーティリティー を用意している。
> 質問18.16も参照のこと。(古いコード用にプロトタ イプを生成するときは"狭い"
> 引数に注意すること。質問11.3も参照の こと。)
gccにそういう機能ってあったかなぁ
721 :
名無しさん@お腹いっぱい。 :2011/06/11(土) 00:12:40.83
class A { public: A(){} }; class B : public A { B() {A::A();} }; ↑こういうコードで、g++-4.1.2だとエラーなし、 g++-4.6.0だと cannot call constructor 'B::A' directly というエラーが出ます。どう修正するのが適切ですか?
>>721 class A { public: A(){} };
class B : public A
{
B() {}
};
で、暗黙的にAのコンストラクタが呼ばれる。
もしくは、渡す引数があれば、
class A { public: A(int arg){} };
class B : public A
{
B() : A(123) {}
};
とする。
>>722 ありがとうございます。それでやってみます。
ところで、逆に Bをコンストラクトする時に、
暗黙にAのコンストラクタを呼ばないようにするにはどうしたらいいですか?
>>723 理屈上おかしいし、それは多分できない。
実装上は、Aに何もしないコンストラクタを用意すれば、呼ばれてないのと同じことにはなるかもしれない。
>>724 できないんですね。わかりました
ところで、最初の
>>721 の質問のように
わざわざ継承元のコンストラクタを呼んでるようなコードが
複数のソフトで見つかるんですが
これ、何か意味があったのではないのでしょうか?
それとも、こういう誤解が広範囲に広まっていたのでしょうか?
>>725 実はC++に詳しくないので、そういう書き方があったのは初めて知った。
今の言語規格にはないやり方で、わざわざ利用しているとしたら、理由はわからない。
ただ、今の言語規格ではAのコンストラクタは必ずBのコンストラクタに先立って実行されるので、
継承元のコンストラクタを呼んでるようなコードが、Bのクラスの一番初めの実行文でない場合、
処理の実行に影響がないかどうかは気をつけないといけないと思う。
>>725 コンストラクタを呼んでるつもりで、実は一時オブジェクトを作って捨ててるだけ、ってのはたまに見る。
公開されてるソフトにそんなの入ってるとは思わないけどな。
ソフト名を晒してくれると面白いかもしれない。
初期化子は結構早い段階で規格に入っているしなあ。 "annotated"の頃には入っていたんじゃない?
>>727 kdeaddons-3.5.10の中の kate/tabbarextension/plugin_katetabbarextension.h
というファイルでそういう箇所があります。(本家で公開されてるソースです)
gccのバージョンを上げるとエラーになるため、問題が発覚します。
730 :
名無しさん@お腹いっぱい。 :2012/09/14(金) 21:23:43.48
GNU asで、 mov (%ebx), %eax ← ディスプレイスメント(オフセット)なし mov 0x12(%ebx), %eax ← 8bitディスプレイスメント mov 0x12345678(%ebx), %eax ← 32bitディスプレイスメント のようなアドレッシングモードがあって、 ディスプレイスメントのサイズの違う各命令のどれを使うかは アセンブル時に実際の値で判断して自動決定されますが、 敢えてディスプレイスメントのサイズを明示指定するにはどう書けばいいんでしょう? たとえば、強制的に32bitディスプレイスメントの命令を使いたいのですが、 mov 0x00000000(%ebx), %eax とか書いても mov (%ebx), %eax でアセンブルされてしまいます。(dispなし) mov 0x00000012(%ebx), %eax とか書いても mov 0x12(%ebx), %eax でアセンブルされてしまいます。(dispは8bit) (わかってるとは思いますが、オペランドのデータサイズのことではありません) 命令コードを直接.byteで書け、はナシでお願いします。 わかる方いますか?
731 :
730 :2012/09/15(土) 10:44:48.95
自己解決しました
回答できなかった者の逆に教える義理はないよ
日本語で。
元々疑問にも思ってなかったことの回答聞かされても誰も興味ねーだろ
736 :
名無しさん@お腹いっぱい。 :2012/09/15(土) 22:13:01.41
このスレなんですか
今月はじめ、職場に新しい組み込みマシン(ファンレスの結構省電力構成)が入りました。 多分私が開発全般をまかされそうな雰囲気です。業務的にとある構造分析や シミュレーションなど行う必要があり、プログラムにアセンブラを使用するのは 聞いていたのですが、添付のサンプルソースコードからチラッと見えたのは LD A,(HL)という命令でした。 「うへぇ〜、よりによってZ80かよ」 アドレッシングモード皆無、リロケート不可、使いにくいインデックスレジスタ、 今時の関数引数のスタック渡しに対応できるのか不安はつきませんし、 今の若者はこんなCPU使わないので人材も少なくソフト開発も大変です。 おそらく導入に際して、大学など教育機関で最初にZ80に触れて刷りこまれた人間が 強気の知ったかぶりをして発言権を得て「俺流」をつらぬき紛れ込ませたのでしょう。 昔、当時、8bitCPUでi8080上位互換でi8085よりも多くのツギハギ命令を追加拡張した Z80は大学など教育機関に浸透していて、日本のCPU界に多くのバカが輩出しました。 これから私は、おそらくそういうバカが、ADD A,(HL)はできるのにADD B,(HL)は できないのかとか、相対アドレスのCALL命令はないのとか、 スタックフレームポインタとして使いたいのにLD HL,SPっていう命令ないじゃんとか、 アセンブラ通気取りの偏ったどうでもいい我侭を言い出し(だからZ80使うんじゃねーよ) それと戦わなければならないのでしょう。そして時代によって決着している、 過去30余年のCPU界隈のくだらないそれらの議論が再現され、それに巻き込まれるの でしょう。もう今からうんざりです。 だからお願いです。教育現場ではi386でもi568でもi686でも x86_64でもなんでもいいですが現行のCPUにしてください。 教育機関で懐古趣味のバカを量産されると現場が非常に苦労するのです。
>>737 ネタニマジレスするとLD HL,SPは LD HL,0 / ADD HL,SP で桶。
スタックフレームならオフセット加算は必須なので、
オフセットを先にHLにロードしておいてからSPを加算する。
例えば関数の第1引数ならreturn addressの2byteの次だから、
LD HL,2 / ADD HL,SP ってやって、以降(HL)で値を取ってくる。
ほむほむ
祝・GCC 3.0リリース
祝・GCC 3.0リリース
今のバージョンは?
あ
ぬるぽ
かっ!
祝
ぬるぽ
祝・GCC 3.0リリース
751 :
名無しさん@そうだ選挙に行こう :2014/12/13(土) 21:22:45.35
質問です。 gccって、同じ文字列をまとめて最適化してくれますよね、 ソース中に複数 "hogehoge" と "hogehoge" のように同じ文字列があった場合。 ソースファイルが1個の時はこれでいいんですが、 ソースが file1.c と file2.c に分かれてる時、 file1.c に "hogehoge" があって、file2.c にも同じ "hogehoge" があっても コンパイル(リンク)したときにまとめてくれません。(同じ文字列2回埋め込まれる) これをひとつにまとめるオプションか何かありますか?
まとめられるだろw
-flto ?