1 名前:デフォルトの名無しさん [2009/06/27(土) 08:34:50 ] 史上最強かもしれないツール、GCC(GNU Compiler Collection)について語るスレ。 GNU本家のGCCページ gcc.gnu.org/ Binutils - Collection of binary utilities ←これも必要だぞ。 www.gnu.org/directory/GNU/binutils.html GNU Binutils sources.redhat.com/binutils/ GCC online documentation gcc.gnu.org/onlinedocs/ Installing GCC gcc.gnu.org/install/ GCC Timeline gcc.gnu.org/releases.html#timeline Calendar gcc.gnu.org/develop.html#timeline 前スレ GCCについて part8 pc12.2ch.net/test/read.cgi/tech/1192201659/l50
36 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:16:50 ] どこまで馬鹿なんだ? 「GCCに貢献してない」と言い出したのはテメーだろうが それを論破されたからと言って無関係な事を言い出すなよ、気違いが
37 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:23:39 ] >>34 もういいです。Appleとまかが死ぬほど嫌いなのは良くわかりました。 お願いですからトリップつけてください。あぼーんするから。
38 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:14:33 ] その昔、MS相手にAppleがルックアンドフィールで訴訟を仕掛けたことを理由に RMSがAppleをdisって以来の筋金入りのRMS信者かなw
39 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 23:57:48 ] >>34 禿同! >>36 違う違う。それ俺。 とにかくマカーが狂ってるのは分かったから>>37 は トリップ付けろ。アボーンするから。<言い出しっぺの法則
40 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 00:01:30 ] 分裂したw
41 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 05:22:04 ] 貢献してねーじゃん(w 論破とか言って勝利宣言かよ。 マカー的には「アップルはgccに多大な貢献しているから多少のスレチは 我慢しろボケ」ってことかよ。意味わかんねー。
42 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 06:31:18 ] そういえば昔 NeXT を寄贈してたのってキヤノンだっけ? NeXT 社?
43 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 08:04:41 ] >>41 糞レスしてる暇あったらGCCのChangeLog見てみろよ ソースも無しに貢献してないしてないとわめくなクソガキが
44 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 09:13:45 ] そういや RMS が MIT の AI ラボを借りるときスティーブ・ジョブズが口利きしたっていう 話。 ttp://journal.mycom.co.jp/special/2004/gnu/004.html こういう貢献もあるってことで。 >>38 この頃はジョブズは NeXT で Apple に居なかったのでルック&フィール訴訟は関係なく、 現在ジョブズ信者である分には RMS 信者と対立しないとかw
45 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 20:15:58 ] >43 そのとおりですね。 パッチポストしてる人のメールアドレス見てみれば >41とか>39とかがおばかさんなのは良くわかります。 きっと39とか41とかはchangelogもMLも見たことさえ ないのでしょう。
46 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:11:14 ] じゃあ、gccに多大な貢献をしているApple関係のすれ違いは容認ってことで。 今からAppleスレね。 gccの話もしてもいいよ。
47 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:20:11 ] gccとか書いてる時点で馬鹿確定だな
48 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 21:56:33 ] 自己紹介は良いから(w
49 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:29:28 ] 次のようなプログラムをgcc(3.3.5, 4.4.0)でコンパイルするとハネられます。 PGIやwindows SDKのコンパイラなら問題なく通るのだけど、なにか間違ってる? T::size_type is parsed as a non-typeとか言ってくるし。 でも、 void func(const T&) [with T=std::vector<double, std::allocator;double> >]と、Tがvector型だとわかってインスタンス化してるんですがねぇ。 当然、vector<double>::size_typeは存在するのでテンプレートとして書かなければgccでも通ります。 バグ? #include <iostream> #include <vector> using namespace std; template <class T> inline void func(const T& a) { T::size_type length = a.size(); cout << length << endl; } int main(int argc, int argv) { vector<double> a(5); func(a); return 0; }
50 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:32:43 ] T::size_typeが一見して型名だとは解らないため (enum定数とかstatic変数かも) typename T::size_type としてみれ
51 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:32:58 ] >>49 gcc.gnu.org/gcc-3.4/changes.html#cplusplus > You must now use the typename and template keywords to disambiguate dependent names, ...
52 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:54:30 ] さんくす lengthの定義のところにtypenameを入れたら通りました。 C++って元からそんな仕様だったっけ? まあ通ったからいいや。
53 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 23:20:26 ] そういう仕様です。
54 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 23:36:16 ] 環境→OS:Fedora11 gccのバージョン:gcc 4.4.0 GEANT4というシュミレーションコードのコンパイルがうまくいかず、困っています。 3ヶ所ほどコンパイル中にエラーが出ていて、2つは潰したのですが… 最後に残った Compiling G4ScoreLogColorMap.cc ... src/G4ScoreLogColorMap.cc: In member function 'virtual void G4ScoreLogColorMap::DrawColorChartText(G4int)': src/G4ScoreLogColorMap.cc:157: error: 'sprintf' is not a member of 'std' gmake[2]: *** [/home/xxxxxxxxxxxxx/geant4/tmp/Linux-g++/G4detutils/G4ScoreLogColorMap.o] エラー 1 というエラーが取り除けなくて困っています。 読み込んでいるヘッダーがおかしいんだろうなぁとは思うのですが… ネットで調べて、色々読み込んでみました。 (1) ttp://www.drk7.jp/MT/archives/001498.html ここを参考に…(ここはatoiが読み込めませんと出ていた。) #include <cstdlib> #include <cstring> (2) ttp://code.google.com/p/pyminuit/issues/detail?id=8 を参考にして… #include <algorithm> (3) ttp://simd.jugem.jp/?eid=73 を参考にして、また、c++がcを下位互換でサポートしている事を踏まえて #include <stdio.h> これだけ加えてみましたが、同じエラーが続いています。 どのヘッダーに含まれているのか、ご存知の方いらっしゃいましたら、ご教示いただけませんか? 宜しくお願いいたします。
55 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 23:45:05 ] <cstdio>
56 名前:54 mailto:sage [2009/07/03(金) 23:47:06 ] >>55 本当にありがとうございます!解決しました!
57 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 06:54:06 ] 標準のINCLUDE PATHは変えられないのですか? 自分のHOMEにライブラリをインストールしたのですが、コンパイル時には システムに標準で入っている古いライブラリのヘッダを観に行ってしまって 失敗するようです。 /usr/localを見ないようにはできませんか?
58 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 09:52:14 ] >>57 -I-
59 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 11:36:33 ] 普通に見ない
60 名前:デフォルトの名無しさん mailto:sage [2009/07/16(木) 15:01:16 ] -isystem
61 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:22:21 ] gccのオプションで -mtune と -march の違いって何ですか?
62 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:27:36 ] man gcc
63 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:40:41 ] ありがとう ググって解決しました
64 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:30:20 ] 4.4.1
65 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 18:25:36 ] www.jp.kernel.org/pub/GNU/gnu/gcc/gcc-4.4.1/
66 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:02:45 ] gcc 4.4を使うとGPL強制されるので使っちゃダメです
67 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:21:13 ] 夏だなぁ
68 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:39:47 ] gccがパブリックドメインになるのは50年後です
69 名前:68 mailto:sage [2009/08/01(土) 19:52:06 ] 間違えた、著者の死後50年だよね。
70 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:02:18 ] 著作権についてロクに知らない馬鹿だな。 保護期間が50年なのは財産権であって、人格権は含まれない。 パブリックドメインは人格権に相当するものも含めパブリックと解される。
71 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:26:15 ] 人格権は日本では相続不可。保護期間は死後0年まで。
72 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:38:51 ] 116条
73 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:44:15 ] 影響しないはずの e_X のコメントの有無で結果が変わ る。誰か報告してくれ。 #include <stdio.h> // gcc version 4.2.1 20070719 [FreeBSD] // gcc version 4.1.2 20071124 (Red Hat 4.1.2-42) typedef enum { // e_X = -1, e_a, } enum_t; void foo(enum_t e) { printf("e %s\n", e < 0 ? "< 0" : ">= 0"); } int main() { enum_t e = -1; foo(e); return 0; }
74 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:56:33 ] > Each enumerated type shall be compatible with char, a signed integer type, or an > unsigned integer type. The choice of type is implementation-defined,108) but shall be > capable of representing the values of all the members of the enumeration. 意訳) enum の型は処理系定義だよ、ただしメンバの値はすべて表現できなければならない なので、メンバに負の値がなければ、処理系によっては unsigned を選ぶかもしれない unsigned になった場合は e = -1 は e = (unsigned) -1 のことだから、 なんというか、まぁ、仕方ないんじゃないか
75 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 20:57:19 ] e_Xがないとeが負とならないと判断して printf("e %s\n", e < 0 ? "< 0" : ">= 0"); が printf("e %s\n", ">= 0"); に最適化されてるみたい。
76 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:14:59 ] >>74 マジか…int とコンパチだと思ってたよ。
77 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:16:17 ] いやでも同一の implementation で揺れるのはどうなの?(w
78 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:26:09 ] コードとかの問題じゃないけど、わかる人いたら回答おね。 GCC4.4を--prefix=/opt --program-suffix=-4.4のOPTで自己ビルドインスコ。 これでいくとlibstdc++.so.6とlibgcc_s.so.1が/opt/lib64ディレクトリにできるんだけど、 問題はコンパイルしたアプリがこれらを参照しないでUbnuntu9.04のGCC4.3とセット物の/usr/lib配下の 物を参照してる。アプリをコンパイル時にLD_RUN_RATHに/opt/lib64をつけても変わらない。 ちなみに/opt/lib64/libstdc++.so.6は/opt/lib64/libstdc++.so.6.0.12へ、/usr/lib/libstdc++.so.6は /usr/lib/libstdc++.so.6.10へのリンクだからバージョン違ってる・・ /etc/ld.so.confに/opt/lib64を追記すると両方共それを参照するけど、そうなるとシステム全部のアプリが (Ubuntuのgcc4.3でコンパイルされてる)全部gcc4.4のを読んでしまう(lddコマンドの結果)。 そうなるとよくないですよね。なのでやめました。 実行アプリ毎にLD_LIBRARY_PATHをつける管理が面倒なのでGCC4.4でコンパイルしたアプリも現状の GCC4.3のlibstdc++とlibgcc_sを読ませておく状態で使用して何か後々問題出る可能性ありますか?
79 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:26:54 ] >>73 アセンブリコード出力して比較してみろよ
80 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:34:59 ] >>78 リンク時に -Wl,-rpath,/opt/lib64 とかいう話かね?
81 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:38:09 ] >>78 LD_RUN_RATH→LD_RUN_PATH
82 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:46:19 ] >>77 揺れていいみたいだね。 99)An implementation may delay the choice of which integer type until all enumeration constants have been seen.
83 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 21:47:42 ] >>80 お、や。もしかしてそれをコンパイル時にコンパイラフラグで渡せばいいのでしょうか。 やってみます^^ >>81 すまそ、タイプミスです。
84 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 00:21:35 ] >>78 > /etc/ld.so.confに/opt/lib64を追記すると両方共それを参照するけど、そうなるとシステム全部のアプリが > (Ubuntuのgcc4.3でコンパイルされてる)全部gcc4.4のを読んでしまう(lddコマンドの結果)。 それほんと?埋め込まれたバージョン番号が違うから、そのへん良きに計らってくれると思ったんだけど。
85 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 01:11:13 ] >>78 そういうもんだ。Ubuntuのg++-4.2も4.3のlibstdc++使ってるし、PPAにある g++-4.4を入れるとlibstdc++も4.4にアップグレードされる。
86 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:46:34 ] まーlibstdc++のマイナーバージョン違いは気にしなくていいんじゃね?
87 名前:デフォルトの名無しさん [2009/08/27(木) 18:58:19 ] -fopenmpだっけ? あれをつけるのとつけないとで違いってでる?
88 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 23:14:48 ] pragma omp云々 してないソースだと無意味。
89 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 22:11:25 ] gcc4.4ってGPL3だから Windows以外で採用不可能なんだね
90 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 00:12:27 ] は?
91 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:22:03 ] ひ?
92 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 02:02:51 ] ふぅ…
93 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 05:53:28 ] =3
94 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 10:08:46 ] うほっ
95 名前:デフォルトの名無しさん [2009/09/10(木) 22:31:17 ] gcc 4.4.3 releaseの情報をギボンヌ
96 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 09:45:57 ] gcc-4.4でコンパイルしたオブジェクトとgcc-4.2でコンパイルしたオブジェクトを リンクするって出来るものなの?
97 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 09:59:01 ] できる
98 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 11:50:22 ] libstdc++の微妙な違いにはまったりして。 まあMajorが同じなら大丈夫か。
99 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 13:38:45 ] >>97 ありがとうございます。やってみたら出来ました。
100 名前:デフォルトの名無しさん [2009/09/12(土) 08:47:46 ] 別のプラットフォームのプログラムを開発することはできますか?
101 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 09:14:46 ] GCC クロスコンパイル でぐぐれ
102 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 20:19:01 ] 使ってるレンタル鯖が C/C++ で書いた CGI を使えるって書いてあるんだけど、 シェルは解放してないからクロスコンパイル環境を作って対応したことはある。 (鯖は無料だからその程度の手間は仕方ないんだが。) 最近の GCC ならそんなに難しいことではない。 でも、ライブラリ類はコンパイル済みのをどこかからもってきた方がいいぞ。
103 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 23:55:37 ] g++ には VC のプリコンパイル済ヘッダみたいな機能はないんですかいの? boost 使ったソースをコンパイルしようとしたら遅すぎてやっとれんです。
104 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 00:24:16 ] gccにもpchぐらいあるわい
105 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 00:25:09 ] あ、ごめん、boostは知らんです… ccacheで我慢するくらいしか思いつきません
106 名前:103 mailto:sage [2009/09/13(日) 00:38:06 ] おお、あるのね。どもっす。 とりあえずあとはぐぐってみます。
107 名前:デフォルトの名無しさん [2009/09/26(土) 23:08:03 ] すみません質問なのですが,最近vc++からgccに乗り換えたのですが vc++にある wmain( int argc, wchar_t *argv[ ]) みたいに引数をwchar_tにすることはできるでしょうか?
108 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 23:13:13 ] エントリポイントwmainは非標準なので、gccにはない main関数内でargvをワイド文字列の配列に変換してwmainに渡すという手が有る
109 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 23:15:14 ] ありがとうございます,それでやってみます.
110 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 18:52:06 ] 質問です。 コンパイルオプションとして-Werrorをつけたいのですが、 実装上どうしても、取り除くことができない警告があります。 この警告だけはWerrorの対象からはずすということができますでしょうか? もしできるならその方法を教えてください。
111 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 19:29:47 ] gccのソースをいじる
112 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 20:24:23 ] >>110 外したい警告がどういう警告なのか書けよ。
113 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 22:47:25 ] -Whogeで有功になる警告なら-Wno-hogeで無効に出来るだろうし、 gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html なんてのもある
114 名前:110 mailto:sage [2009/10/01(木) 23:00:07 ] >>111-113 返答ありがとうございます。 Werrorの非対象にしたいのは-Wをつけた際に出力される、longjmp関連の警告です。 -Wは複数の機能を持つオプションなので、-W自体を無効化はできない状況です。
115 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 23:21:56 ] gcc.gnu.org/onlinedocs/gcc/Warning-Options.html にある通り、-Wは-Wextraの別名で、含まれる警告オプションのうち longjmpが関連しそうなのは-Wclobberedと-Wuninitializedだから、 -Wno-clobbered -Wno-uninitializedをつけてみたらどうか
116 名前:デフォルトの名無しさん mailto:sage [2009/10/01(木) 23:23:49 ] -Wno-error=uninitializedとかでも良いかもな
117 名前:110 mailto:sage [2009/10/01(木) 23:34:35 ] >>115-116 ありがとうございます! 今は試せる環境がないので明日挑戦してみます。
118 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 00:59:23 ] -fltoが入る前に-combine試してみたけど、 4.4だと引数が多すぎって言われてコンパイル出来ない事があるな 4.5になると引数の最大値が大きくなったりするんだろうか… というかしてくれないと困る。 -combine -fwhole-program -ftoでビルドしたいんじゃー
119 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 05:13:28 ] 4.4.2
120 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 09:29:17 ] >>118 > 4.4だと引数が多すぎって言われてコンパイル出来ない事があるな これってどういうメッセージ?
121 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 11:16:12 ] あーもうconstructors_destructor_fn_imps.hpで一晩潰しちゃったよ><あほか
122 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:28:44 ] >>120 cc1: error: too many filenames given. Type cc1 --help for usage
123 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 04:15:11 ] binutils 2.20
124 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 17:31:01 ] HelloWorldを、gcc・g++を使用してWinXP・Ubuntuでコンパイルしてみた。 ---------------------------- #include <stdio.h> int main(int argc, char** argv) { printf("HelloWorld!"); return (0); } ----------------------------- WinXPは正常に実行できたけど、Ubuntuのgccがうまくいかない。 /tmp/ccaeafnN.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld はステータス 1 で終了しました バージョンは4.3.3。 上記のようにリンクでエラーがでる。 コンパイラはもともと入ってたやつだから、導入に失敗したわけではなさそうだけど。 オプションも出力先以外は指定してないし。 原因が分かるエスパーな方はいませんか?
125 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 17:40:09 ] #include <stdio.h> を #include <cstdio> に printf を std::printf に替えてみたらどうなる?
126 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 17:46:22 ] >>124 g++標準のライブラリがリンクされてないように見える。 g++ hello.cc ではなく gcc hello.cc でコンパイルしてない?
127 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 18:06:18 ] この手の「普通にやったらエラーが出るはずが無い」のに gccを使っていてリンクエラーが出る場合、大抵は>>126 だよな。 普通にg++とするか、あるいは-lstdc++とかでもなんとかなるもんだけど 意外にそこでひっかかる人も多いよね。 まあ>>124 の原因は知らないけど。
128 名前:124 mailto:sage [2009/10/18(日) 18:44:08 ] 拡張子を.cにしたらいけました。 ありがとう。 それにしてもアホすぎる……。 TDM/Mingwだと「gcc hello.cpp」は通るけど「g++ hello.cpp」がリンクエラー。 \(^o^)/
129 名前:デフォルトの名無しさん [2009/10/18(日) 19:27:04 ] -lstdc++ か?
130 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:32:55 ] gccの#defineマクロの記述で 通常の関数のreturnに相当する記述ってどうやって書けばいいのでしょうか?
131 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:34:07 ] それがわからないようならマクロなぞ使うな。あぶなっかしすぎる。
132 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:44:13 ] >>131 まさか知らないのですか? バカなんですか?
133 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 19:56:48 ] gccの話題じゃないな
134 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 20:16:45 ] >130 cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/gccextend.html ここでも読んだらいいよ もっとも僕は、-pedantic-errorsを付けてコンパイルしているから無縁だけど
135 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 02:34:19 ] >>128 要するに、GCCでは拡張子で動作が変わるってことか。
136 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 06:36:28 ] C Compilerでなくて Compiler Collectionだからね。 拡張子を識別して使う言語を選択する。
137 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:03:15 ] 拡張子で言語は選んでくれるのにライブラリは選んでくれないという気 の利かなさ。
138 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:12:59 ] extern "C" { とかあるしね。言語と実行環境を分けているんだと思う。
139 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 22:46:09 ] だってオブジェクトはどちらも.oで、そこからリンクする時に 必要に成るライブラリがどちらかなんて ld には分からない。 増改築を繰り返した田舎の温泉旅館みたいなc++は捨てて、 ISO C(c99)でええやん。
140 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 22:49:08 ] c99のほうが田舎の温泉旅館みたいなんだが……
141 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:22:28 ] C99って使ってる現場あるのか。
142 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 21:12:36 ] 全機能ばりばり使ってます、という所は少ないと思うが、 //コメントとか、変数定義の混在とかは割と使ってるんじゃないか?
143 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 21:37:37 ] 変数は最初に必要になった箇所で宣言するようにしたらかなり見易い。 変数はなるべく使い棄てにしたほうがコンパイラもフロー解析しやすいらしいし。
144 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 22:44:44 ] 数値計算のパッケージ書いてるから、 <fenv.h>がないとどうしようもない。
145 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 01:03:11 ] 使い捨てと言うか、スコープを狭くすると、フロー解析もやり易いし レジスタ割り付けも楽。最適化もやりやすく成る。
146 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:44:01 ] 俺の周りではC99という言葉すら通じん…
147 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:54:24 ] >>144 Fortran使えよ
148 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 00:51:59 ] レジスタは一括宣言のほうが楽なんじゃね? だってベースポインタ一緒なんだぜ?
149 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 02:41:36 ] Javaじゃねーんだから汎用レジスタに乗せて使い捨てることもあるだろ
150 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 02:50:57 ] いかにメモリアクセスを少なくするかが鍵みたいだよ。
151 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 03:03:23 ] >>149 そういう最適化はどこで宣言しようと同じだろ
152 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:52:09 ] >>148 >>149 40年くらい前の最適化の話みたいですね。
153 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:41:30 ] 変数を宣言する=メモリ上に領域を確保する 変数に代入する=メモリ上に書き込む こんな基本も分かってないようじゃ駄目だろ。 でも、キャッシュから追い出される前に破棄できるデータ領域は重要だよな。 1ms以下で終わる関数は終了までキャッシュメモリから追い出されない可能性あると思うし、 使い終わったらすぐ破棄すれば、その分多くグローバル/スタティックデータをキャッシュで保持できるようになる。 ところで、CPUロジック的には破棄したデータ領域の変更内容ってメインメモリに反映されるんだっけ? キャッシュが破棄されるのって内容が同一のときだけだろ? じゃあいくら破棄しても中身書き換えた以上はメインメモリに書き込むんじゃね? メインメモリへの書き込みを減らすには、できるだけ同じデータ領域を使いまわすのがいいんじゃないかな。 ヒープ領域とかなら繰り返し使われるよね。 でもJavaの場合で最小値が2MBだって。 優先的に実行されるアプリじゃない限り使い回しは難しいね。 確実に使いまわせるのはやっぱりスタック領域だよね。 直近の4kByteが必ず1次キャッシュに入る。 スタックに確保するには、引数渡ししたデータと普通に宣言した変数だよね。 少々のデータなら参照渡しするより値渡ししたほうがキャッシュ効率がいい事になる。 わけないか。 使った分だけ古いのがキャッシュから追い出されるんだ。 だから、ループで散らばったデータを使うくらいなら、ループだけを関数宣言してでもデータを一箇所に集めることが重要なのかな。 あ、そこで書き込みしないデータをループの直前でフォーカス作って変数宣言してコピーしたらいいわけだ。 結局おんなじか。 何度もスタックをキャッシュから追い出すくらいなら普通にヒープにまとめて領域取ったほうがいいな。 変更しなければ書き戻されはしないんだし。 結局小さいデータはオート変数ででっかいデータはアロケート・・ごく普通だな。
154 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:48:42 ] コンパイラの最適化舐めんなよ
155 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:57:23 ] gccの最適化は糞過ぎる ICCを少しは見習えつーんだよ
156 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:59:38 ] >>153 35年くらい前の知識で停まってるね。 register宣言が出てきた頃かな?
157 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:59:52 ] ごめんなさい。。。
158 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 11:53:01 ] ICCがgccより明かに優れているところなんてループ展開とかベクトル化とかだけだろ スタックをどういう風に使うかなんて部分では大差ないよ
159 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:23:37 ] 記憶だと、gcc 4.4でiccの最適化を越えてる
160 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:59:09 ] それはないから
161 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 13:05:18 ] GCCをアーキテクチャ決め打ちのICCと比較しようとする時点で 頭の悪さが丸出しw
162 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 14:10:45 ] multimedia.cx/eggs/last-performance-smackdown-for-awhile/ multimedia.cx/eggs/wp-content/uploads/2009/05/64-bit-performance-2009-05-04.png
163 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 14:35:52 ] やるじゃんgcc
164 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 20:50:27 ] >>162 64Bitだと偉い差だ。そうえいばx264なんかもビルドしてバイナリ配ってる人なんか32Bitは gcc3.4.6なんだけど64Bitはgcc4.4を使ってる。 ちょっとgcc4.4.2を落として来るわw ffmpeg自己ビルドなのでw
165 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:06:59 ] gcc4.4系統はバグもあるし ライセンス問題もあるから使わないほうがいいぞ
166 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:10:40 ] まあ! なんて素敵なFUDでしょう!!
167 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:15:05 ] とりあえずbinutilの2.20が10/16に新しいの出てたんでまず更新。 でgcc4.4.2を気合のシステム上書き(現状4.3.4)の--prefix=/usrインスコでコンパイルスタートして 5分くらい経ってやっぱダメだろって思ってCTL+C押して--prefix=/opt/gcc-4.3 --program-suffix=-4.3 にしたヘタレです・・・ 今コンパイル中、CPUフェノムなんで--with-tune-32=k8 --with-tune-64=amdfam10こんなのもつけてみました。
168 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:16:54 ] おおお、焦ったww --prefix=/opt/gcc-4.4 --program-suffix=-4.4ですねw 変なとこからコピペしたから4.3になってた。本当に4.3のままconfigしちゃったかと思って自分でビビったわ
169 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:28:09 ] >>164 グラフの目盛りよく見ろ。そのうえでえらい差って感じたんならいいけどさ。
170 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:30:37 ] >>169 ああああああああああああああああああああああああぁぁぁぁ
171 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 21:52:36 ] とか言いながら終わった、しかしグラフには騙された・・・ $ /opt/gcc-4.4/bin/gcc-4.4 -v Using built-in specs. Target: x86_64-linux-gnu コンフィグオプション: ../configure --prefix=/opt/gcc-4.4 --program-suffix=-4.4 --enable-shared --with-system-zlib --without-included-gettext --enable-threads=posix --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --with-gmp --with-tune-32=k8 --with-tune-64=amdfam10 --with-multilib-list=x86_64-linux-gnu,i386-linux-gnu --build=x86_64-linux-gnu --host=x86_64-linux-gnu スレッドモデル: posix gcc version 4.4.2 (GCC)
172 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:19:45 ] こんな目盛りなら騙して欲しいよな i.msdn.microsoft.com/Aa290049.vcia64alignment_fig2 (ja-jp).gif
173 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:57:31 ] ゲーツェーツェーにはCPP CXX g++ などなど C/C++フンパイラだけいろいろあるけど 何がどう違うの。
174 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:20:15 ] CPP CXXはシェルの変数じゃなかろうか
175 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 23:28:55 ] cpp はプリプロセッサだろ。 常識的に考えて。 C++ のコンパイラやコンパイラドライバではない。 システムによってはコマンドに + の文字が使えないことがあるので、 便宜上用意されているのが cxx 。 たぶん、中身は一緒だと思う。
176 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 00:23:33 ] cc、cxx、c++辺りは、GCCでないシステム標準のコンパイラのことがある。 LinuxなどGCCを標準のコンパイラとして採用していると、GCCへのシンボリックリンクになっているけど。
177 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 03:47:24 ] >>159 よぉ、AMD使い!
178 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:13:00 ] AMDでgccに負けるほどiccってダメなのか
179 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:14:48 ] 商用コードは品質が悪いから仕方ない
180 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:35:20 ] 最近のGCCは結構すごいよん 参考 www.linux-kongress.org/2009/slides/compiler_survey_felix_von_leitner.pdf
181 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:15:09 ] それ読んでgcc 4.4.3で試したけどその通りに最適化してくれないことがままあって困るw
182 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 19:54:02 ] パーパプー パーパプー パーパプーパーパプーパーパプー ピーロピーローリーローリロ ででーででーででー パスーン ピンポロピンポロピンポロピロピロプー 未だに自作のプログラムでダウボーイを作ってやろうと思っているのにできねえ俺は もうだめだ
183 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 12:27:58 ] gcc(ver4.3.2) のコンパイルオプションで、 -lXm -lXt -lSM -lICE -lXpm -lXext -lX11 -lm とか必要なライブラリ全てを記述しなくても -lXm だけでOKでした。 何か指定したライブラリ(この場合 /usr/lib/libXm.so.2.0.1) の依存ライブラリを調べてリンクしてくれるようですが、これって昔からそうだったのでしょうか? 10年近く前は、一つでも指定を忘れると駄目だったので、よく知らないライブラリも呪文のように指定していたような記憶があるのですが。
184 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 19:08:48 ] >>183 ライブラリが収まってるディレクトリに libXm.la ってファイルがないか? それ読んでみ
185 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:34:35 ] gcc 単体で libtool ライブラリなんか見るの?
186 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:54:52 ] ビルドした時刻をバイナリに埋め込みたいんだけど なんかいい方法ある? 最後にリンクするときに日時がわかるものを埋め込みたい
187 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:22:47 ] コンパイル日時じゃなくてリンク日時? 前者は__DATE__とか__TIME__とかあるけど
188 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:36:38 ] >>187 Makefile で、リンクの直前にそれかけるしか無いんじゃないかな。
189 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:56:37 ] __DATE__,__TIME__を初期値にしたグローバル変数だけの オブジェクトをリンクごとに生成して埋め込めば?
190 名前:189 mailto:sage [2009/12/01(火) 21:58:39 ] ごめん、>187と同じだった。
191 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 13:41:22 ] 質問! Linux@i386(IA-32)のgccでC言語とアセンブラを組み合わせて使っています。 ebx, esi, ediは通常ならcallee-saveですが、 アセンブラ側の都合でcaller-saveとして扱わなければならない箇所があります。 今はmanを参考に-fcall-used-〜オプションを付け プログラム全体でcaller-saveとして扱っています。 関数ごとにcallee-save, caller-saveを切り替えて速度を稼ぐことは可能ですか? 可能なら方法を教えてください。
192 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 14:57:42 ] >>191 特殊な ABI を要求する部分だけ別モジュールにして、 そこだけ CFLAGS 切り替えればいいんじゃない? 昔組み込みでそんな感じにしてたけど。
193 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:19:44 ] ああ、でも callee-save 環境から caller-save 環境を どう呼び出かってのがあるね。どうやってたかな…。
194 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:22:57 ] ttp://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Function-Attributes.html#Function-Attributes この中になければないと思う
195 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:28:05 ] ようわからんけど、attributeで指定するとか?
196 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 15:31:40 ] すまん、ちょっとよく覚えてない。多分 hook を挟んで どうにかしていたと思う。 ただ 個別に -fcall-used-REG を保守するのも段々面倒 になってきて、最後は「えいや」で setjmp ばりに保存 する hook にしちゃった気がする。
197 名前:191 mailto:sage [2009/12/06(日) 16:52:18 ] >>192-196 ありがとうございます。 まず__attribute__((returns_twice))を調べてみます。
198 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 15:41:53 ] 教えてください gccでjavaの練習をやろうと思うのですが、 gcc -vで --enable-languagesにjavaが含まれていれば大丈夫でしょうか gcj -vだとcommand not foundになります
199 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 16:54:23 ] どうしても gcj を使わなければならないという理由がないのなら Sun の JDK をインストールして勉強しれ。 # command not found に対処できない人が使えるようなものじゃないから…
200 名前:198 mailto:sage [2010/01/08(金) 19:20:48 ] レストン もう少しgccを触って駄目だったらJDK逝きます
201 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 09:12:51 ] とっととJDKに逝け
202 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 07:23:45 ] naked属性な値を返す関数でreturnがないって警告が出るんだけど この警告だけ消す方法ないですか? 戻り値はインラインアセンブラ内で書いてる
203 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 10:03:10 ] 戻り値をインラインアセンブラで int hoge(void) { int ret; asm ("hoge":"=r"(ret)); return ret; } みたいに書いてみたら
204 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:10:06 ] gotoでぶっ飛ぶのかもよ。
205 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:16:31 ] >>203 やっぱそれしかないですか その方法だと余計なレジスタが増えるのがどうも ありがとうございました
206 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 19:25:26 ] 余計なレジスタは増えんでしょ -fomit-frame-pointer付きでコンパイルしてみたら
207 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:28:58 ] register int ret asm(レジスタ); にしたら指定のレジスタ使ってくれました gccのバージョンで変わったりしないか不安ですけど
208 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 21:01:15 ] ほうほう
209 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 07:17:49 ] 戻り値に使われるレジスタ以外を asmで破壊されるレジスタに指定するという方法もあるのでは
210 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 09:52:26 ] >>207 その仕様は今まで変わったことないから大丈夫でないかとは思うが。 >>209 clobberしすぎるとcc1が文句言ってくるので程々にしませう。 ということで妙なコードを書くときは、その関数を __asm__( "func:\n\t" : "ret"); みたいに書かないとダメだと思う。
211 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 11:25:56 ] peephole2って凄いね
212 名前:デフォルトの名無しさん [2010/01/19(火) 22:22:38 ] Linux x86_64 な環境において、gcc version 4.3.4 (Target: x86_64-pc-linux-gnu) な GCC を使って 下記のような XXX.so の中の関数を dlopen、dlsym を使ってよびだせるようにコンパイル すればどうすればいいのでしょうか? XXX.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped 調べて、-m32 -ldl をオプションに指定するようにしてみましたが segmentation fault になってしまいます。 アドバイスいただけないでしょうか?
213 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 22:42:40 ] 基本的に無理
214 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 01:30:21 ] どうしてもということになれば、nspluginwrapperみたいな物を 作って何とかするしか。
215 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 10:29:14 ] gcc -m32 hoge.c でいいんじゃないか?
216 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 06:11:12 ] 4.4.3
217 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:28:56 ] GCC開発者らがGoogleの「Go言語」をサポートする方針を発表 sourceforge.jp/magazine/10/01/29/0250228
218 名前:デフォルトの名無しさん [2010/02/02(火) 19:20:20 ] >>217 ブランチ、既にできてるよ。> gccgo
219 名前:デフォルトの名無しさん [2010/02/02(火) 19:21:42 ] か
220 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 20:11:27 ] goってgccに入れるほどのもんなの?
221 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 20:12:43 ] 政治的な圧力はあったかもね。
222 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 20:22:23 ] 単にぐぐるがメンテナを出しただけだろ?
223 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:11:44 ] llvmじゃなくてgcc、というのが面白い。 ライセンス的にllvmの方が好まれると思ったんだが
224 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 23:26:35 ] adaとか使ってる人いるの? 金さえ出せばなんでも入れてもらえるんじゃない?
225 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:01:39 ] Google勤務のgccコミッターが何人もいたはず。
226 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:12:26 ] >>223 llvmはgccのbackendに出来るし。
227 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:54:01 ] >>224 カネじゃダメだろ 人とコードを出さないと
228 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 00:55:22 ] 逆に言えば、人とコードの切れ目が縁の切れ目
229 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:10:11 ] C#とかは、金と人は出せるが、コードが出せないMSだからか。納得。
230 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 01:23:58 ] MS は自前で開発環境用意して囲い込みしたいからだろ。 と、マジレス
231 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 23:09:07 ] arm用gcc遅いなんとかしろ
232 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 10:16:35 ] arm社に文句言え
233 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 10:45:29 ] ARM社に言ってもしょうがないだろ IARとか、RVDSはもっと速いのかな?
234 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 15:55:30 ] なぜgccにはstricmpが無いんだ?アホなのか?
235 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 15:57:47 ] コンパイラの問題じゃないだろ
236 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:55:21 ] strcasecmpがあるから
237 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 20:15:07 ] strcmpiじゃなかったっけ まあ今となっては良い思い出
238 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:40:15 ] >>234 ,236,237 コンパイラとライブラリは切れば切れる関係。 例えば同じ Windows 上の gcc でも、Cygwin と MinGW で使える関数が 違うでしょ。
239 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:17:07 ] ところでnewlibって何なの? こういうネーミングはやめてほしいんだが このセンスはさすがに引く 古くなったらどうすんだよ
240 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:09:27 ] 最近は年末にリリースされてるから
241 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:00:11 ] それならclibだと。
242 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 17:56:29 ] clubt.jp/product/92651_3621255.html
243 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 02:55:25 ] >>234 STRing Ignore Compareってw センスの悪い命名…
244 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 14:11:16 ] i は Ignore なのか? case Insensitive の i だと思った 悪い命名なのは疑いようがないけど
245 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:46:25 ] sprintfおせーぞ gccだけおせーんじゃ なんとかしろ
246 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:53:27 ] 文句言う前に、自分で早いsprintfを書けばいいのに
247 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 00:29:39 ] std::sprintfとかsprintfと紛らわしい 関数作るんじゃねーよ
248 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 03:13:31 ] >>231 =>>234 =>>245 =>>247 だとすると、 何のプラットフォームでどんなものを作ってるのか、大体予想つくな
249 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:20:29 ] >>248 こういう発言ってついったの方が楽しいのにね
250 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:09:00 ] 笑われてるだけでしょ
251 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 14:34:01 ] >>250 笑うなよ
252 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 18:55:54 ] gccスレでぐっちてる時点で...
253 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 16:26:44 ] >233 ARM固有の最適化部分のメインコミッターのほとんどはARM社からお金もらっている人々だよ 最適化で、いつまでたってもARM純正に勝てないのはARM社がコントロールしてるから ARMのプラットホーム使わないといけない人のほとんどは、gccの中身なんて弄ってる余裕が無いよ ARMを使ったPCが普及すれば、変わると思うけど
254 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:12:55 ] 昔、玄箱スレでgccはARMよりPPCのが効率よいコード吐くって話があったけど、 状況変わらず? ARMの命令セットがやや特殊なせいなのかな
255 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:21:04 ] >>254 自社のコンパイラより効率的なバイナリを 生成するコンパイラは、排除するって明言しているから どうにもならないよ。
256 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 07:57:43 ] gccの文字列処理おせーんだよ なんでgcc3.4でSSE4.2に対応してねーんだよバカ
257 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 08:01:10 ] おそい書き方したお前が悪い
258 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 12:45:50 ] >>256 gcc4使えばいいじゃん。
259 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 02:57:51 ] pc1: 2.95.3 3.3.6 pc2: 4.3.4 4.4.3 二つずつ入れてて計4つ >>256 使い分けりゃいいじゃん。
260 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:06:45 ] gccの文字列処理ってどこを指すの?
261 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:41:37 ] さあ、ビルトイン関数のことかも
262 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 10:12:29 ] >>260 printfの警告とか。
263 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 13:27:36 ] ストリーミング命令使ったstr系関数の変態最適化ってやってるんだっけ
264 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:17:34 ] gccは char buf[256] = {0};って記述しても 0に初期化されることはない 腐ってやがる
265 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:31:09 ] >264 バージョンはいくつですか
266 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 03:05:21 ] >>264 んなこたーない
267 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 04:30:31 ] 起動時にbssをクリアしてないとか
268 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:19:47 ] >>264 いつの時代のgcc?
269 名前:デフォルトの名無しさん [2010/03/10(水) 18:20:46 ] char buf[256] = {0}; で、後ろの255バイトも自動的にゼロクリアされるのは Cの仕様?それともgccのやさしさ?
270 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:20:51 ] >>269 Cの仕様
271 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:41:05 ] >>269 {1}のケースもどうなるか理解しといた方がいいよ。 > the remainder of the aggregate shall be initialized implicitly > the same as objects that have static storage duration.
272 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 05:07:16 ] binutils 2.20.1
273 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 07:47:11 ] binutils-2.16.1
274 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 13:40:41 ] mallocだと0フィルされる保証はない?
275 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 13:53:06 ] 普通、確保されるだけじゃないの? callocなら0フィルされると思うけど
276 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 13:53:09 ] 今時gcc使ってるやつは莫迦
277 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 23:21:50 ] >276 は、何を使ってるのよ
278 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 00:00:29 ] sourceforge.jp/projects/freshmeat_ack/ かな?
279 名前:デフォルトの名無しさん [2010/03/15(月) 00:17:30 ] codesourceryのg++ってdo_global_ctorsとかstartup関連がないみたいなんですけど、 自分で実装するとき、.init_arrのグローバルコンストラクタを呼び出す以外にやることありますかね? あと、libc(newlib)の初期化とかもやらないといけなさそうですが、方法がわからない。 codesourceryでstl使ったプログラムかけた人いたら教えてください。
280 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 10:56:04 ] >>274 無い。 セキュリティホールになるってんでゼロ梅してた時期もあったけど。
281 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 11:08:15 ] セキュリティホールってより、暴走の原因とか
282 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 11:37:41 ] >>281 それはない。 それはただのバグだ。
283 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:31:56 ] 不定値前提で安定したプログラム作れないほうがよっぽど
284 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:48:52 ] 0クリアするくらいならdeadbeefで埋めたほうがまし
285 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:00:57 ] 新規割り当てメモリを初期化しない場合のセキュリティーホールというのは 上位権限のプロセスが開放したメモリにある情報を読めるかもしれないとい問題
286 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:01:25 ] フフフフフフフフフフフフフフフ
287 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:06:26 ] oppai
288 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:09:27 ] >>285 そりゃライブラリ側の仕事でなくOSの仕事だろう
289 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:14:24 ] malloc(3)の話だから、OSの仕事も含むのは普通。
290 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 00:23:13 ] char buf[256] = {0}; ってやるとgccだとmemset関数を呼び出す 糞実装になってるw アホだろw
291 名前:デフォルトの名無しさん [2010/03/17(水) 00:24:54 ] そこでmemsetを呼び出さない処理系を教えてくれ
292 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 00:29:33 ] gcc糞だからなぁ
293 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:22:05 ] >>291 gcc-4.3は呼び出さない
294 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:33:32 ] -minline-all-stringopsって使っていいの?
295 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:51:04 ] >>290 どうしてほしいの?rep stosdにでもしてほしいとか?
296 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:38:41 ] >>289 含まねーよ。物事を区別して考えられないバカっているんだねえ。
297 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 07:31:27 ] >>284 いい悪いってか、用途によるでしょ。 バイナリはでかくなるよ
298 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 07:33:10 ] ちょっとタンマ >>297 の答えに自信ない
299 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 14:11:14 ] 1kbも増えんだろ
300 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 15:57:20 ] >>296 あるライブラリ関数について、 C標準では定義されてないことを、 OSの方で定義していることは良くあること。 たとえばスレッドセーフかどうか。
301 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 09:48:55 ] それはそのライブラリ関数を使う側にとっての関心事項。 >>285 のは他プロセスないしカーネルにとっての関心事項。 別の話だね。
302 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 10:28:13 ] 他プロセスがmallocおよびその下請システムコールを呼ぶ場合の話でしょ?
303 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 07:04:48 ] >>300 OSじゃなく処理系だろ
304 名前:デフォルトの名無しさん [2010/03/20(土) 09:55:19 ] CPU Frequencyをリアルタイムで取得するgoodな方法を教えてくれ
305 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:10:30 ] RDTSC
306 名前:デフォルトの名無しさん [2010/03/23(火) 22:46:45 ] プリプロセッサの処理中にメッセージを表示したいのですが、 gccでも可能でしょうか? Visual C++ では #pragma message("msg") などと書けばできたのですが。
307 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 00:12:02 ] >>306 gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas によると、 #pragma message "Compiling " __FILE__ "..." とか出来るっぽいぜ
308 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 17:22:22 ] >>305 今はだめだろ。CPUいっぱいあるから。
309 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 19:57:17 ] ついでにいうとCPU, OSの組み合わせによってはRDTSCがエミュになってしまい 数百クロックを要する。 だがそのような環境では逆に全コアでタイマカウンタが一貫してたりする。
310 名前:306 mailto:sage [2010/03/25(木) 21:44:47 ] >>307 ありがとうございます。しかし試してみたところダメでした。 -Wunknown-pragmasでコンパイルしたら「無視しました」みたいなメッセージが出ました。 gccのバージョンによるんですかね。4.3.2でした。
311 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 00:23:57 ] >>307 #warningで出来るかなと思ったら引数のマクロ展開はしないとか ふざけた事を抜かしているのであまり使えないな。 この程度は 出来るけど。 #warning Message $ gcc -c source.c source.c:1:2: warning: #warning Message waring:#warning が冗長で醜いなあw
312 名前:デフォルトの名無しさん mailto:sage [2010/03/27(土) 09:37:53 ] 俺もそれは浮かんだが、-Werrorを入れてる環境だと止まるので完全ではないわな
313 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:33:33 ] Xeon 5500って、最適化オプションの名前って何ですか? nocona? core2?
314 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 07:35:10 ] >>313 たしか〜 nehalem-exかNorthwood
315 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 10:42:05 ] 最適化してもあまり変わらないんだけどな SSE2を使うだけで十分だと思う
316 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 21:31:49 ] nativeでいいよ
317 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 10:20:40 ] 4.5.0-RC-20100406
318 名前:デフォルトの名無しさん [2010/04/14(水) 15:49:00 ] GCC4.4.1は-msse・最大最適化でコンパイルすると、float演算はSSE命令により 自動ベクトル化されるが、整数演算はベクトル化されない。整数移動はベクトル化 されるが、float用SSE命令が使われていた。GCCはMMXや3DNOWコードを吐かないの?
319 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:08:15 ] GCC 4.5.0 release
320 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:43:24 ] MMXは基本的にshort以下の整数に使うもんだし 飽和演算とか利用してこそだし あまり自動最適化には向かないんじゃない
321 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 01:44:02 ] MMXは切替えなくちゃ使えないから使わないみたいなのを読んだような気がする
322 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 07:15:21 ] SSEの整数命令使えばいいんじゃない
323 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 12:53:50 ] 整数はベクタ化の恩恵を受けにくいからじゃないかな。 単なるコピーならfloat32でも同じことだし。
324 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 22:23:12 ] -mmmxとか-m3dnowじゃないと使わないんじゃない SSEで全部まかなえるわけだし
325 名前:デフォルトの名無しさん [2010/04/15(木) 23:35:38 ] >>324 普通のSSEには整数命令入っていないよ -mmmxや-m3dnowでもMMXレジスタは使っていなかった。
326 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 23:52:09 ] alignmentしてないと速くなんないからじゃね?
327 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 00:02:00 ] 普通のSSEじゃないだろ最初のSSEだろ
328 名前:デフォルトの名無しさん mailto:sage [2010/04/16(金) 20:29:37 ] Pen4あたりから入り始めたんだっけ?
329 名前:デフォルトの名無しさん mailto:sage [2010/04/17(土) 19:38:11 ] 何が? 最初のSSEはPenIIIだよ。
330 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 01:19:50 ] pen3のsseは整数演算できない
331 名前:デフォルトの名無しさん [2010/04/18(日) 02:33:27 ] GCC4が登場した頃には整数SIMDができるSSE2の登場から数年経過しており、MMXに よる整数SIMDの需要が少なかったからか?さらに、GCC4登場初期はスマートフォンや PDAにiwmmxtが搭載されていたが、そもそも当時はスマートフォンが普及しておらず MMX系の需要は少なかったからか。で、今ではスマートフォンが普及しgccに armの128bit自動ベクトル化が搭載されたが、既に時代遅れのiwmmxtは対象外 という事か。
332 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:05:30 ] gccは商用コンパイラにどれくらい負けますか?
333 名前:デフォルトの名無しさん mailto:sage [2010/04/18(日) 14:06:59 ] MMXはintに大体適用できないから 一生懸命対応するメリットが少ないんじゃないの
334 名前:デフォルトの名無しさん [2010/04/19(月) 03:58:34 ] >>332 あらゆるCPUに同じコアで対応しているから、乗算結果の上位の取り出しや飽和演算で 最適コードを吐かない、MMXのように切り替えが必要な処理は実装されないんじゃね? >>333 iwmmxtならそもそもfpu搭載していないので切り替え不要だし、加減算やshort乗算には効果あるよ
335 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:17:45 ] gcc4って最初かなりすごかったのに、後からどんどん遅くbuggyになってるよね プロプライエタリの工作員が本気出し始めたのかな
336 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 17:19:45 ] 4.5からbackendをplugin化出来るようになったからいつでもllvmに逃げられるようになったけどね
337 名前:デフォルトの名無しさん mailto:sage [2010/04/19(月) 21:03:17 ] Benchmarks Of GCC 4.5.0 Compiler Performance www.phoronix.com/scan.php?page=article&item=gcc_45_benchmarks
338 名前:デフォルトの名無しさん [2010/04/21(水) 02:45:57 ] ポインタ渡しの関数内でSIMDを使いたい場合、仮引数をstruct{long __attribute__((aligned(16))) a[2][8];}*aのようにして、a->a[i][j]でアクセスしないとアライメントデータとして扱われない。 ソース冒頭で構造体型定義を使っても可。もっと簡単にポインタがアライメントされて いる事をgccに分からせる方法はないの? また、func(struct{long __attribute__((aligned(16))) a[2][32];}*__restrict a, struct{long __attribute__((aligned(16))) a[2][32];}*__restrict b, int *__restrict c){ int i;for (i=0;i<8;i++){a->a[0][*c*4+i]=b->a[0][i];a->a[1][*c*4+i]=b->a[1][i];} } のように二次元配列を2つ受け取り、ポインタ渡しで指定されたオフセット分ずらして 転送する関数を書くと、versioning for alias requiredとなり非SIMDコードも生成 されるが、[*c*4+i]を[(*c+=0)*4+i]とすると非SIMDコードは生成されない。 >>335 OSSへの破壊工作ってあるの?
339 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 09:15:33 ] 十分簡単だろ。
340 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 10:53:16 ] >>338 マクロ使えよ
341 名前:デフォルトの名無しさん [2010/04/21(水) 11:15:06 ] codepad.org/AKWhbBiV のコードを g++ 4.3.2 で最適化なしコンパイルして実行したら, --Start 1-- Destructor Destructor --End 1-- --Start 2-- Destructor --End 2-- Destructor という結果になった. (Start 2 と End 2 の間にもう1つの"Destructor"があることを期待していた) G++ だと,返されるオブジェクトが関数のローカル変数の場合は, 戻り値用の一時オブジェクトは作成されない仕様なの?
342 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 11:33:58 ] >>341 Start 2 〜のように戻り値と同じ型のローカル変数を return した場合、 C++ の規格でコピーの省略が許されている。 (ISO C++ 12.8 p15) これに対して Start 1 〜のほうで必要になる、既存の変数から関数引数への コピーは省略できない。 コピーの省略が許されているだけなので、実際にコピーされるかどうかは コンパイラやコンパイルオプションやコードの複雑さなどで変わる可能性がある。
343 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 11:38:09 ] >>342 コピーの省略が認められているとは知りませんでした 大変勉強になりました どうもありがとうございます
344 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 11:44:51 ] >>341 en.wikipedia.org/wiki/Return_value_optimization
345 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 12:09:15 ] >>341 g++ の場合、それで困るようなら -fno-elide-constructors を使うという手がある。 gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/C_002b_002b-Dialect-Options.html
346 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 15:53:02 ] >>345 分かりにくいオプション名だなあ。 RVO(Return Value Optimization)を使うべきだよね。
347 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 16:03:12 ] 頭にno-が付いてるおぷそんは嫌やな じゃあyea-があるのか?と思ったらないし
348 名前:341 mailto:sage [2010/04/21(水) 16:09:23 ] >>344-345 ご親切にありがとうございます
349 名前:デフォルトの名無しさん mailto:sage [2010/04/21(水) 21:33:42 ] Benchmarking LLVM & Clang Against GCC 4.5 www.phoronix.com/scan.php?page=article&item=gcc_llvm_clang
350 名前:デフォルトの名無しさん [2010/04/26(月) 19:48:31 ] for (i=0;i<128;i++)c[i]=a[127-i]*b[127-i];のように配列に乗算して順番を 反転するコードもSIMD化されない。a[i]やb[i]への書き込みが禁止されているのなら、 for (i=0;i<128;i++)c[i]=a[i]*b[i];for (i=0;i<64;i++){buf=c[i];c[i]=c[127-i]; c[127-i]=buf;}としなければならない。
351 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:02:49 ] どんなコードを吐いてるの?
352 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:10:51 ] >>350 マジ? swap処理なんて最悪に遅いのだけど。sizeof(* c)が判らないからなんとも言えないけれど、 a*bを別に保存しておいて転送した方が速い希ガス。
353 名前:デフォルトの名無しさん mailto:sage [2010/04/26(月) 20:30:01 ] 最適化オプションを知らないとか?
354 名前:デフォルトの名無しさん [2010/04/29(木) 02:14:24 ] MakefileでCPUの種類を判別してコンパイルオプションを変更したいのですが、 どのようにすればよいのでしょうか?
355 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 02:24:37 ] CPUの種類からコンパイルオプションを生成するコマンドを作ればいいんじゃない
356 名前:デフォルトの名無しさん [2010/04/29(木) 05:05:38 ] kwsk
357 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 05:20:55 ] configure書けば
358 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 13:00:52 ] CPUの種類が自分でわからないのに、コンパイラがわかるわけがない
359 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 16:38:25 ] MakefileでCPUの種類を判別するプログラムを実行すりゃいいだろ アホか
360 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 16:42:38 ] どこにあるんだよ
361 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 16:47:11 ] CPUの種類を判別する でググれ
362 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 16:56:36 ] 組み込み向けとかも判別してくれるのかよ x86用で個別にtuneしてもあんまりかわらんだろ
363 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 17:24:23 ] クレクレ言うな 自分で「やれ」
364 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 17:46:22 ] 探しているものは、たいてい見つかる 必死で探せばな
365 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 17:54:58 ] すべてを網羅するようなものはないみたいだ。
366 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 18:19:12 ] >>365 ある程度までならあるってことだ。 判別不能な分はunknownでいいだろ。 細かいところはあとでなんとかしろ。
367 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 20:44:54 ] 最適化してもデバッグ出来そうにないから、オプションつけても無駄のような
368 名前:デフォルトの名無しさん mailto:sage [2010/04/29(木) 21:35:41 ] march=nativeで十分だって
369 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 00:09:29 ] >>366 でも90MHz Pentium で受け入れられるのに 550MHz K6-3 で蹴られるのは悲しい。
370 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 11:32:43 ] あむどはふりむかない
371 名前:デフォルトの名無しさん mailto:sage [2010/04/30(金) 11:51:08 ] あむどは最適化しなくても早いって、言ってなかったけ
372 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 05:50:20 ] 4.4.4
373 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 07:21:14 ] >>371 Intel みたいに gcc にコミットできないから、 最適化できないのだよ。 Windows 以外では、gcc を1割最適化できれば、 クロックを1割早くするのと同じなのにな。
374 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 11:57:23 ] つってもなー、CPUの内部アーキテクチャ変わったらまた最適化変えなきゃだろ?
375 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 18:24:01 ] これまでのAMDのCPUはフル機能命令デコーダただ並べてたりクセの少ないアーキだから (Intelはフル機能と機能限定の組み合わせで省電力&面積削減の分キャッシュ増量可能に振ってる) x86一般最適化がしてあればそれ以上は大して高速化しないと思われ
376 名前:デフォルトの名無しさん mailto:sage [2010/05/01(土) 19:18:08 ] いくらあむど贔屓に作ってもgccが1割最適化するなら 印р1割早くなる気がする
377 名前:デフォルトの名無しさん mailto:sage [2010/05/02(日) 12:40:22 ] >>376 Intelへの最適化は結構進んでるよ。 もちろん icc ほどじゃないが。
378 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 02:52:03 ] あむどは各板でバカにされててかわいそうでつ gccぐらい夢みさせてあげてえ
379 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 16:00:40 ] て
380 名前:デフォルトの名無しさん mailto:sage [2010/05/03(月) 18:05:00 ] >>378 もっさり、じゃないぶんましではないかと。
381 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:16:27 ] MinGW64_x64で手持ちのアプリを片っ端から64ビット化してるんだが __fastcall の指定で大量のワーニングが出たのでびっくりして調べてみたら x64は基本レジスタ渡しで __fastcall とかは指定しても意味がないということを初めて知った レジスタ渡しの方法がVC++と非互換らしいけどいつかどっちかに統一されるんだろうか
382 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 18:55:52 ] レジスタ16個もあるからかな
383 名前:デフォルトの名無しさん [2010/05/04(火) 19:07:42 ] アセンブラでプログラムしてるんですが、普通にasでアセンブルするとサイズが デカくなるんですが、単純にアセンブルだけしてくれるようなパラメータが あったら教えてください。スレちだったらスマン。。
384 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 19:34:18 ] LLVMの方が性能上だしなぁ gccなんて意味があるのだろうか?
385 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 20:02:40 ] 性能ってどういう所がいいの?
386 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 20:14:09 ] >>381 非互換ってそれgcc for Linux/x86-64と VC++ for Windows x64それぞれのことを言ってたりしないか? 例えば↓こことか homepage1.nifty.com/herumi/prog/x64.html
387 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 20:32:11 ] gccのソースみると、ms_abiってのがあるよ
388 名前:デフォルトの名無しさん mailto:sage [2010/05/04(火) 22:48:06 ] >>384 ffmpeg インラインアセンブラに対応できないと思う gccに依存してるffmpegが糞とも言う
389 名前:デフォルトの名無しさん [2010/05/08(土) 11:08:45 ] Intel compilerでffmpegをコンパイルする方法を教えて
390 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 13:10:04 ] GCC4.5もう使った人いるのかな。
391 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 00:27:44 ] 必要に迫られてsnapshotのころから。 そういえばリリース版に入れ直してなかった。
392 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 20:22:24 ] GCCを改変して、任意のアセンブラを吐かせたいのですが、 どのようなワードで検索してよいのかわかりません。 具体的には、自作した仮想マシン向けのアセンブリ言語を吐かせたいとおもっております。 アセンブラとアセンブリ言語は適当にでっち上げた物がありますので、 ぜひGCCを利用してCやC++でプログラムを組めるように仕立て上げたいです。
393 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 20:27:51 ] すれ違いだが、いま流行りの COINS を利用した方がいいんじゃないかな? あとは時代遅れの Xbyak とか。
394 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 20:37:04 ] テキストファイル置換ソフトの方があってるんじゃないか
395 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 20:40:48 ] >>392 調べるなら >>391 やLLVMとか。pccいじるのも楽でいいかもね。
396 名前:395 mailto:sage [2010/05/10(月) 20:42:38 ] >>391 じゃねえ>>393 な
397 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 20:42:40 ] COINSは初めて知りました、ずいぶんモダンな作りをしていますね。 特定アセンブラを吐くドライバだけを作成できれば、 目的が達成できそうな感じでしょうか? 斜め読みしかしていないので、もっと深くよんでみます。 Xbyakは動的にx86のバイナリを吐くライブラリでしょうか? ソースは見てないのでなんともいえませんが、x86バイナリ生成部を オレオレバイナリに置き換えればよさそうですね。 いろいろありがとうございます。
398 名前:392 mailto:sage [2010/05/10(月) 20:51:17 ] >>395 pccも改造ベースにはコンパクトで良いとの評判みたいですね。 こっちもソース覗いてみます!
399 名前:393 mailto:sage [2010/05/10(月) 21:11:41 ] >>393 は釣りで、いまは LLVM 一択でしょう。(スマ
400 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 01:00:09 ] 俺もLLVM一択だと思うが、 gccを改変する話に戻すと、検索ワードは「バックエンド」な
401 名前:デフォルトの名無しさん mailto:sage [2010/05/11(火) 17:36:51 ] >>392 gcc.gnu.org/onlinedocs/gccint/Back-End.html#Back-End
402 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 18:50:03 ] gdbの質問もここでおk?
403 名前:デフォルトの名無しさん mailto:sage [2010/05/14(金) 19:06:29 ] グデブ
404 名前:デフォルトの名無しさん mailto:sage [2010/05/15(土) 06:26:37 ] 適切なスレが思いつかないんで、 とりあえず聞くだけ聞いて、それから誘導されるがよい
405 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:35:56 ] apachでGCCが使えないのですが、gccオプションなどで可能になるものでしょうか? exeファイルのバイナリーに含まれる文字が原因のようなのですが。 pc11.2ch.net/test/read.cgi/mysv/1245157265/770
406 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:38:59 ] gccに問題ないから。exeファイルうんぬんも関係ない。
407 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 20:42:18 ] はい、 apachとのバイナリーレベルでの相性のようです。
408 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:14:23 ] "\r\n"
409 名前:デフォルトの名無しさん mailto:sage [2010/05/16(日) 21:52:11 ] >>408 Windowsなら、"\n"と"\r\n"は、同じ"\r\n"を出力します。
410 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 20:19:00 ] >>409 それだとちょっと語弊があるような最終的にはそうなるけどさ Windowsの場合"\n"だけでCRLF(復帰改行)が出力されるから"\r\n"を明示する意味はない
411 名前:デフォルトの名無しさん mailto:sage [2010/05/17(月) 20:57:56 ] >>410 どうも405の問題は、Windows上においても処理系によっては ¥nがLFであってCRLFで無いという問題の様に思える。
412 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 04:55:08 ] 標準出力をバイナリーモードにすればいいとかじゃないの?
413 名前:405 mailto:sage [2010/05/18(火) 20:11:57 ] Apache統合スレ 10 (HTTPServer以外も含む) pc11.2ch.net/test/read.cgi/mysv/1245157265/770-786 C言語でstdoutをbinモードにするには? www.tohoho-web.com/lng/200003/00030242.htm 解決しました。
414 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 20:23:13 ] 窓でパイプ処理やろうとすると必ず通る壁だな
415 名前:409 mailto:sage [2010/05/22(土) 22:05:47 ] >>410 違ってた、GCCの場合だけは "\n" なら、\n しか出力しないようなEXEを作る。 実験はWINのサクラエディタで実行してみた。
416 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 10:11:53 ] May 22, 2010 The GNU project and the GCC developers are pleased to announce the release of GCC 4.3.5. This release is a bug-fix release, containing fixes for regressions in GCC 4.3.4 relative to previous releases of GCC. gcc.gnu.org/gcc-4.3/
417 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 18:06:00 ] なんでGNU公式の統合開発環境ってないのだろうね。
418 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 18:49:24 ] GUIなんて要らないとおもってるから。
419 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 18:58:16 ] GNU統合開発環境ってemacsじゃないの?
420 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 19:22:27 ] >>419 勘違いも甚だしいぞ、失礼なやつだ。
421 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 20:27:02 ] 教祖に聞け
422 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 10:41:11 ] デバッガだけはGUIあった方が断然いい。 異論はまったく認めない。
423 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 12:28:09 ] >>530 心配性だな、とっても大人数でいじらなければいけない案件なのか?
424 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 18:15:08 ] ロングパスだな
425 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 20:36:12 ] >>422 かなり同意。 OllyDBG になれたら GDB なんて使う気にならん。 symdeb に疑問を感じなかった昔の自分が信じられん。
426 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 02:17:03 ] おまえらデバッガだの統合開発環境だの言うけど、何がそんなに便利なのか俺に見せてみろよ。 そう後輩に言った10分後、おれは「すまんかった、ちょっとこれマジで教えてくれ…。」と言っていた。
427 名前:デフォルトの名無しさん mailto:sage [2010/05/26(水) 06:57:24 ] >>418 そんなこと思っていたらGDB/MIなんてないだろ。
428 名前:デフォルトの名無しさん mailto:sage [2010/05/27(木) 19:14:57 ] graphite関係のオプションで詳しい説明あるところを教えてください。 キャッシュサイズとかどこで取得するのかなー?
429 名前:デフォルトの名無しさん mailto:sage [2010/05/28(金) 15:30:28 ] 4.5はやくしてくれねーかなー ラムダ式つかいたいから開発保留してるんだけど。
430 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 01:30:35 ] >>429 保留してる間に gcc のリリースに貢献すればよいではないか。
431 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:42:37 ] GCC が C++ を採用するとはビックリした。これも LLVM の影響なのかな(LLVM は C++)? news.ycombinator.com/item?id=1392601
432 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 01:28:58 ] なんだ?って思っちゃったがGCC自体のコードをC++で書き直そうって話ね。
433 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 07:15:10 ] >>431 > The goal is a better compiler for users, not a C++ code base for its own sake. とか言ってるわりに、とりあえずどの機能が欲しくて使うことにしたのか、よくわからんな。
434 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 10:09:50 ] むこうにも中二病開発者がいるんだろ
435 名前:デフォルトの名無しさん [2010/06/01(火) 11:36:30 ] C言語でもオブジェクト指向なプログラミングはできるし、 継承や多態性も実現できるが・・・。 まあコード量がおおくなって手続きがうざくなるからな。
436 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:56:31 ] せっかくgccなんだから、objc とか ada とかで書いてみるとか。
437 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:19:39 ] まじめな話、gcc が c で書かれているから、いろんなプラットホームに移植されたわけで‥‥‥。
438 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 21:52:21 ] bootstrapのプロセスはどうなるんだろう?
439 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 07:33:00 ] >>438 クロスが基本となるだろう。
440 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:57:57 ] >>437 昔はクロス環境作るの大変だったけど、今は普通だし、 開発環境そこらじゅうにあるし、問題にならないんじゃね
441 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 19:31:49 ] --enable-build-with-cxx
442 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:30:05 ] gcc動くけどg++ダメなんて環境はそんなになさそうだしなあ。 ついでにどうでもいいことだがRMSがこの決定に同意しているのか気にならんでもない。
443 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 09:55:20 ] おっ、初めての経験。 ちょっと複雑なデーター構造の初期化を実験してたらg++を無限 ループに入れる事に成功したw 以下のコードをg++でコンパイルしてみてくれ。 g++ 4.0.1, g++ 4.1.2で再現された。 gccではすぐに止る。 struct { int value; union { int value2; struct { int value3; int value4; } s; } u; } local = { value : 0, u : s: { value3 : 3, value4: 4 }}; こういう無限エラーループに入る. init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’ init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’ init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’ init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’ init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’ init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’ init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
444 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 10:19:07 ] ちなみにこれが正解だった ... local = { value : 0, u : { s : { value3 : 3, value4 : 4 }}};
445 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 17:27:31 ] 書けるけど読みたくは無い構造してんなぁ
446 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 17:29:15 ] >>443 ∞ループに入る最小の構造を作るためにもうちょっと単純化してみたら面白いかもよ。
447 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 20:57:18 ] mingwのLTOまだあああああああああああ
448 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 06:25:05 ] これって知ってた? sourceware.org/gdb/wiki/STLSupport 試したらこんな事が出来て涙が出た。 (gdb) list 7 map<char*, int> test; 8 9 test["hoge"] = 111; 10 test["mage"] = 222; 11 test["moge"] = 333; 12 } (gdb) p test $1 = std::map with 3 elements = { [0x8049760 "hoge"] = 111, [0x8049765 "mage"] = 222, [0x804976a "moge"] = 333 }
449 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 06:33:01 ] これを/rオプション(raw)で見るといつもの様に $2 = {_M_t = { _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<char* const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<ch¥ ar* const, int> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<char*, char*, bool>> = {<No data fields>}, <No data fields>}, _M_header = { _M_color = std::_S_red, _M_parent = 0x804b028, _M_left = 0x804b008, _M_right = 0x804b048}, _M_node_count = 3}}}
450 名前:デフォルトの名無しさん [2010/06/29(火) 22:13:29 ] FreeBSDの人いる? gcc 4.5.0で-O2で最適化したら例外をキャッチできないケース見つけた。-O1だとOK。 再現できるか試して欲しい。 再現パターンはこんな感じ。 分岐の中にthrowがあって、最適化の結果throwにあたるコードが関数のエピローグコードの 後ろに移動してしまった場合にたまに発生。 bool flag = true; void f() { if(flag) throw 1; } int main() { try{ f(); }catch(...){ cout << "ok" << endl; } }
451 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 08:36:05 ] 4.5.0 ということは ports ? 野良ビルド?
452 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 10:26:36 ] うん
453 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 10:40:31 ] 結局どっちなんだよと思ったのは私だけじゃないはず
454 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 11:36:41 ] 結局どっちなんだよ!
455 名前:デフォルトの名無しさん [2010/06/30(水) 16:40:24 ] >>451 ftp.riken.go.jp/ の.tbzと野良の両方で再現した。 ただ、OSXからのFreeBSDクロスコンパイル→転送して実行、ではAdaのほうでも再現したのに、 FreeBSD上のセルフコンパイルでは野良ではAdaでは再現しない(C++では再現、gcjはビルドできなかった……)と 結構ばらつく。よくわからん。
456 名前:デフォルトの名無しさん [2010/07/02(金) 17:51:11 ] うーむ