祝・GCC 3.0リリース

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

 とりあえずインストールしてみよう
NGNG
まあもともとは組み込みOS向けのちっこいlibcってことで開発
されたんだろうけど、いまとなってはCygwinが主要ターゲットって
説も…。
NGNG
>>410
元になってるだけ。
413393
垢版 |
NGNG
試行錯誤してました。
まず、>>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構築のみに
使われると思ってるんですが・・・
認識あってますでしょうか?
414393
垢版 |
NGNG
あとgcc-3.3のマニュアルには
-mno-half-pic -mhalf-picがあるんですが
しらないオプションと言われるんです。
gccのメーリングリストで見つけました。

昨年の6月に削除されたようです・・・。
そのためNetBSDカーネルコンパイルできない・・・・。

マニュアルアップデートしてないのホントですね
NGNG
>>413
libsupc++とか作るときに見るはず。
libgccも見てるっけ?
416あぼーん
垢版 |
NGNG
あぼーん
417名無しさん@お腹いっぱい。
垢版 |
NGNG
3.3.1 age
418あぼーん
垢版 |
NGNG
あぼーん
419あぼーん
垢版 |
NGNG
あぼーん
420あぼーん
垢版 |
NGNG
あぼーん
421名無しさん@お腹いっぱい。
垢版 |
NGNG
gccは糞
NGNG
お通じありがたし
423名無しさん@お腹いっぱい。
垢版 |
NGNG
gccは糞
NGNG
3.4 でまた C++ ABI 変わるってほんと?
NGNG
>>424
http://gcc.gnu.org/ml/gcc/2003-09/msg00222.html
426名無しさん@お腹いっぱい。
垢版 |
NGNG
3.3.2age
NGNG
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`

ここでループしちゃって帰ってこない。
なんでだろ?
NGNG
>>427
> ここでループしちゃって帰ってこない。
> なんでだろ?

まちつづけることが重要です。
429427
垢版 |
NGNG
>>428
修行がたりませんでした。
いい子にして待ちます。
ども。
430427
垢版 |
NGNG
長い...。
24 時間たっても終わらないよぅ(Celeron 1.4GHz)。
431427
垢版 |
NGNG
終わった...。
26 時間ばかりかかったです。

こーゆーのを見ると旧式になったのだなぁと思ふ。
NGNG
世間ではCeleron 1.4GHzで旧式なのか...........
433427
垢版 |
NGNG
いや、俺もそんなことはないと思いたいのだが、
1アプリにすぎない gcc のビルドに丸1日かかっちゃうと
ちょっと切ない気持ちになる。

フツーに使う分には十分な性能なんだがな。
NGNG
>>431
gmake -j 2 bootstrap
とかしてる?
NGNG
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.

というマシンで今からビルドしてみます。
とれくらいかかるかな?
NGNG
書きわすれた。
>>427
java で馬鹿みたいに時間喰ってるので、java を使用しないのであれば、
--enable-languages="c,c++,f77,objc,ada"
でかなり時間を節約できます。
NGNG
漏れは--enable-languages=c,c++だけだな
NGNG
libgcc_s.soをdynamic linkされるのがうっとおしいので
いつもspecsファイルを手で変更しているのですが、./configure
のオプションなどで変更できるのでしょうか?
NGNG
>>438
--disable-shared
NGNG
>>435
03:38 に終わっていました。
一日もかかりませんでした。
441427
垢版 |
NGNG
あー、何も考えないで 427 の手順のままやっちまったよ。

>>434
CPU 1個のシステムでも結構効果上がる?
つか、試してみます。

>>436
ですね。
今までこんなに時間がかかったことがなかったから
ちとびっくりした。
3.3 のときはせいぜい数時間だったような。
442438
垢版 |
NGNG
>>439 THX
NGNG
>>441
なんとなくメモリ不足でスラッシング起こしているんでは?
とか思ってみる。
NGNG
>>442
ちなみに、既にインストールされているものは手動で消さなきゃだめ。
NGNG
H8用cross、未だ3.0.3+平田patchを超えられず(;´Д`)
NGNG
うちのSS5だとどれ位かかるかな…
NGNG
>>445
そうかなあ?
たしかに謎な挙動が結構あるが。

そういえば3.4は最適化がちょっと強化されるらしい。
NGNG
3.4 はまた C++ ABI が変わるんだとか...
NGNG
ヽ(`Д´)ノ
450名無しさん@お腹いっぱい。
垢版 |
NGNG
Solaris で、マルチスレッドのコンパイル&リンクするときって、どうやるの?
NGNG
#define _REENTRANT
#include <pthread.h>
#include <thread.h>

Sunのcc: -mt ... -lpthread [必要ならば -lrt]
gcc: -pthread ... -lpthread [必要ならば -lrt]
NGNG
gccはoption無しで大丈夫。
453名無しさん@お腹いっぱい。
垢版 |
NGNG
make age
454オブジェクト指向促進運動
垢版 |
NGNG
IT業界にアージャイル開発とデザインパターンを広めよう!

C言語を使ってかなり苦労したので
その苦労を最小限におさえるために
アージャイル開発、デザインパターンを
多くのプログラマに使って欲しいと思うことがある。

一種の挨拶みたいなものだね。
「なるべく挨拶を心がけましょう。」
「なるべき綺麗な字で書きましょう。」
のように

デザインパターンを使うこと、アージャイル開発することが
プログラマの習慣、常識になってほしい。

なんとか、デザインパターン文化、アージャイル開発文化を押し広げられたら・・・。

IT業界の将来はオブジェクト指向とアージャイル開発が握っています!
NGNG
オブジェクト指向==デザパタですか。ずいぶん視野の狭いお話で。
456名無しさん@お腹いっぱい。
垢版 |
NGNG
いまだに2.95ですが何か
NGNG
>>456
ちんぽむけてますか?
NGNG
俺的にさっさとlispのコンパイラ作って欲しい
NGNG
Gnu is Not Unix
RMSおよびGNUはUNIX市場をぶち壊すことがその目的です。
LISP,関数型言語の繁栄のために日夜努力されているのです。
Allegroの商圏を踏み荒らすような真似をするはずも
ありません。
NGNG
anonymous cvs server落ちてる?
NGNG
ここ最近ずっとおかしくない?
NGNG
うん、gnu.orgのCVS serverおかしい
NGNG
まあg++の作業はちょっと遅れてるっぽいし、
3.3の完成度は高いから、2年ぐらいは
新規のリリースなしでもいいかな〜なんて。
NGNG
gcc 3.4 って、cc1 とか collect2 が /usr/libexec に移動しているね。
それと /usr/lib/gcc-lib が /usr/lib/gcc になってた。
465名無しさん@お腹いっぱい。
垢版 |
NGNG
WE LOVE GCC!!!
NGNG
>>463
そろそろ3.4.0Releaseという噂が聞こえてきましたよ…
467461
垢版 |
NGNG
>>462
できればrsyncだけでなくcvsupとかも動かしてくれるとディスクを
たくさんガリガリやらなくて済むんだけどな。
468名無しさん@お腹いっぱい。
垢版 |
NGNG
このスレの温度

 |  |- 20
 |  |
 |  |- 10
 |  |
 |  |-  0
 |  |
 |  |- -10  ∧_∧
 |┃|       (´∀` )
 |┃|       (    )
. (●)     | | |
   ̄     (_(__)
469名無しさん@お腹いっぱい。
垢版 |
NGNG
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
NGNG
漏れは3つ位出したぞ。sparcじゃないけど。
マイナーなアーキテクチャの宿命だ。
メンテナが頑張ってくれているので消えることは無さそうだが。
NGNG
少しぐらいのバギー加減は、ユーザーにコンパイラの内部動作に
関心持ってもらうためには必要だと思われ。とかいってみる。
NGNG
>>471
emacs-21.3をleim入れてコンパイルしたら使い物にならないバイナリを吐くのも
啓発のためっすか?(泣)

最初 big-5 あたりでcore吐いていたので configure と Makefile いじれば
なんとかなるかと思って色々やってみたんだけど...

結局 3.2.3 にダウングレードしちゃった。手持ちソースではこちらの方が安定
しているみたいだし。
NGNG
>>472
Emacs current つかいなよ。
NGNG
いつの間にか 3.3.3 出てるのな。
アーカイブのディレクトリ構成かわってて気づかなかった。
475 ◆ieqrh9GF7Y
垢版 |
NGNG
gccの挙動に関しての質問てどこに投げればいいの?
gcc-help ?
因みに質問は以下のコードをコンパイルすると if の部分
がなくなるのはなぜ?ってことなんだけど。

int hoge(signed char ch)
{
if ((unsigned short)ch > 127)
return 0;
return 1;
}
NGNG
くだらない質問はここに書き込め!なんでもアリ32
http://pc3.2ch.net/test/read.cgi/unix/1079699147/

エスパーが次の人にアドバイスするスレ
http://pc3.2ch.net/test/read.cgi/unix/1081522053/
NGNG
(キミのプラットフォームでは) signed char が取り得る範囲が -128〜
127 で、その if は常に false でそ。
NGNG
charが1byteではない。もしくは
-128から127っていう範囲でないっていう環境はあるの?
479名無しさん@お腹いっぱい。
垢版 |
NGNG
いまだにOpenBSD上でgcc2.95系使ってる俺って…
NGNG
>>477
その説明はおかしい。
unsigned short にキャストしているから、
たとえば ch が -128 なら
(unsigned short の最大の値+1)-128になる。
大抵の環境で、unsigned short の最大の値は 127 より大きいので、
(unsigned short)ch は 127 よりおおきい値になり得る。
>>475
gccの問題のようですね。比較の相手を127でなくて1にしても
同じ症状が出ますから、charの範囲、という問題でもない。
NGNG
>>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としての左辺も必ず負の値になるので、この条件文は常に偽。
NGNG
>>481
感動した
NGNG
>>481
> intとしての左辺も必ず負の値になるので

なりませんよ。
signedをunsignedにしたばあい、unsignedの範囲に入るようにunsignedの最大値+1を
必要な回数だけ加算する。singed char -1をunsigned shortにした場合USHRT_MAXになる。
つぎに、int以下の整数演算はintに格上げされて演算される(右辺がintでなくても格上
げされる)が、値保存で変換されるのでUSHRT_MAXのまま。

unsigned shortがintより範囲が広い場合、両辺がunsigned shortに変換されて比較されるので、
結果は同じ。
NGNG
>>481
ちがう。ch=-128 (10000000) で
unsigned short が 16 ビットだとしたら、
左辺は 1111111110000000 になる。これを int (符号付き)
に promote (キャストではない) させる。
int が 32 bit だとしても、unsigned short からの
変換だから、左に 1 は補われない。ゆえに、
00000000000000001111111110000000
になる。
NGNG
>>475
if ((unsigned int)ch > 127)
にしる。
どうしても unsigned short で比較したい場合は
右辺も unsigned short の入れ物に入れる。
NGNG
unsigned shortにキャストする意味って何?
NGNG
プログラムの意図が全くわからんな。
int hoge(signed char ch)
{
return ch >= 0;
}
ってやりたいわけ?
NGNG
gcc の中の人も大変だな。
NGNG
signed charなんてものを作った奴は腹かっさばいてお詫びしろや。
NGNG
符合付き8bit整数はごく普通のデータ型ですよ。
8080とかね。
NGNG
つーか最初にchar をungigned なoctet にした奴に栄光あれ、だな。
NGNG
規格上はどっちでもいいよ。
signed char, unsigned charと同じ値を持たなくてもいいし。
493 ◆ieqrh9GF7Y
垢版 |
NGNG
例はバグを簡略化したものです。
>>484 同じ解釈です。
>>480 gcc の問題とすると報告すべきはどこ? <- 元の質問の意図
127 を 128 にすると、if は残る。逆に gcc -O0 で作っても
if 部分は影も形もなくなるので、Optimizer の仕業ではなく、
C言語仕様解釈の問題だと思ってる。
NGNG
http://gcc.gnu.org/faq.html#bugreport
NGNG
このプログラムのほうが問題点が明確になるかな。
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);
}
NGNG
些細なことですが return 0; しとこうね。
NGNG
precompiled header に魅かれてgcc3.4インストールしたのに
>sorry, unimplemented: had to relocate PCH
って言われた。
どういうことじゃヽ(`Д´)ノ
498名無しさん@お腹いっぱい。
垢版 |
NGNG
>>495-496
C99では明示的にreturn 0;を書く必要はありませんね。
まあ gcc2.95.4 には関係ないことでしょうけど。
NGNG
>>478
SHARC/TigerSHARC は char は32bitですよ。
こいつはGCCが標準コンパイラです。
NGNG
じゃ、shortも32bitなんだ
NGNG
>>495を、
gcc -c -O -dra foo.c すると、"ce1"の後に消える。
gcc -c -O0 -dra foo.c すると、なぜかcompareは残ったままだね。
"mach"の後で消えてるのかな。

NGNG
>>500
鋭いですね、そうですよ。
で、sizeof( 整数の型名 ) するとどれも1が返ってきてあせる(笑)
バイトアドレシッシングじゃなくてワードアドレッシングだからこれで正解なんだろうけど
NGNG
BCPLかよ!?
NGNG
よく分かんないんだけど、つまりCHAR_BITSが32ってこと?
NGNG
3.4.0 release sage
506名無しさん@お腹いっぱい。
垢版 |
NGNG
>>505
gccの公式ページよりdistrowatchの方が早くアナウンスしてたのには
驚いた。
まだ使うにはたぶん危険だよね?パフォーマンスはアップしてるのかな?
NGNG
危険大好き
NGNG
>The cast-as-lvalue extension has been removed for C++ and deprecated for C and Objective-C.

これってANSIかなんかの規格がそうなってるのかな?
ときどき使ってるからちょと痛い
NGNG
ttp://gcc.gnu.org/ml/gcc-prs/2003-05/msg01253.html
NGNG
ミラー逝きわたるっていったいどこを泳いでるの?
全然見当たらないんだけど。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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