GCCについて part9at TECH
GCCについて part9 - 暇つぶし2ch348:341
10/04/21 16:09:23
>>344-345
ご親切にありがとうございます

349:デフォルトの名無しさん
10/04/21 21:33:42
Benchmarking LLVM & Clang Against GCC 4.5
URLリンク(www.phoronix.com)

350:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/04/26 20:02:49
どんなコードを吐いてるの?

352:デフォルトの名無しさん
10/04/26 20:10:51
>>350
マジ?
swap処理なんて最悪に遅いのだけど。sizeof(* c)が判らないからなんとも言えないけれど、
a*bを別に保存しておいて転送した方が速い希ガス。

353:デフォルトの名無しさん
10/04/26 20:30:01
最適化オプションを知らないとか?

354:デフォルトの名無しさん
10/04/29 02:14:24
MakefileでCPUの種類を判別してコンパイルオプションを変更したいのですが、
どのようにすればよいのでしょうか?

355:デフォルトの名無しさん
10/04/29 02:24:37
CPUの種類からコンパイルオプションを生成するコマンドを作ればいいんじゃない

356:デフォルトの名無しさん
10/04/29 05:05:38
kwsk

357:デフォルトの名無しさん
10/04/29 05:20:55
configure書けば

358:デフォルトの名無しさん
10/04/29 13:00:52
CPUの種類が自分でわからないのに、コンパイラがわかるわけがない

359:デフォルトの名無しさん
10/04/29 16:38:25
MakefileでCPUの種類を判別するプログラムを実行すりゃいいだろ
アホか

360:デフォルトの名無しさん
10/04/29 16:42:38
どこにあるんだよ

361:デフォルトの名無しさん
10/04/29 16:47:11
CPUの種類を判別する
でググれ

362:デフォルトの名無しさん
10/04/29 16:56:36
組み込み向けとかも判別してくれるのかよ
x86用で個別にtuneしてもあんまりかわらんだろ

363:デフォルトの名無しさん
10/04/29 17:24:23
クレクレ言うな
自分で「やれ」

364:デフォルトの名無しさん
10/04/29 17:46:22
探しているものは、たいてい見つかる
必死で探せばな

365:デフォルトの名無しさん
10/04/29 17:54:58
すべてを網羅するようなものはないみたいだ。

366:デフォルトの名無しさん
10/04/29 18:19:12
>>365
ある程度までならあるってことだ。
判別不能な分はunknownでいいだろ。
細かいところはあとでなんとかしろ。

367:デフォルトの名無しさん
10/04/29 20:44:54
最適化してもデバッグ出来そうにないから、オプションつけても無駄のような

368:デフォルトの名無しさん
10/04/29 21:35:41
march=nativeで十分だって

369:デフォルトの名無しさん
10/04/30 00:09:29
>>366
でも90MHz Pentium で受け入れられるのに 550MHz K6-3 で蹴られるのは悲しい。

370:デフォルトの名無しさん
10/04/30 11:32:43
あむどはふりむかない

371:デフォルトの名無しさん
10/04/30 11:51:08
あむどは最適化しなくても早いって、言ってなかったけ

372:デフォルトの名無しさん
10/05/01 05:50:20
4.4.4

373:デフォルトの名無しさん
10/05/01 07:21:14
>>371
Intel みたいに gcc にコミットできないから、
最適化できないのだよ。
Windows 以外では、gcc を1割最適化できれば、
クロックを1割早くするのと同じなのにな。

374:デフォルトの名無しさん
10/05/01 11:57:23
つってもなー、CPUの内部アーキテクチャ変わったらまた最適化変えなきゃだろ?

375:デフォルトの名無しさん
10/05/01 18:24:01
これまでのAMDのCPUはフル機能命令デコーダただ並べてたりクセの少ないアーキだから
(Intelはフル機能と機能限定の組み合わせで省電力&面積削減の分キャッシュ増量可能に振ってる)
x86一般最適化がしてあればそれ以上は大して高速化しないと思われ

376:デフォルトの名無しさん
10/05/01 19:18:08
いくらあむど贔屓に作ってもgccが1割最適化するなら
印℡も1割早くなる気がする


377:デフォルトの名無しさん
10/05/02 12:40:22
>>376
Intelへの最適化は結構進んでるよ。
もちろん icc ほどじゃないが。

378:デフォルトの名無しさん
10/05/03 02:52:03
あむどは各板でバカにされててかわいそうでつ
gccぐらい夢みさせてあげてえ

379:デフォルトの名無しさん
10/05/03 16:00:40


380:デフォルトの名無しさん
10/05/03 18:05:00
>>378
もっさり、じゃないぶんましではないかと。

381:デフォルトの名無しさん
10/05/04 18:16:27
MinGW64_x64で手持ちのアプリを片っ端から64ビット化してるんだが
__fastcall の指定で大量のワーニングが出たのでびっくりして調べてみたら
x64は基本レジスタ渡しで __fastcall とかは指定しても意味がないということを初めて知った
レジスタ渡しの方法がVC++と非互換らしいけどいつかどっちかに統一されるんだろうか

382:デフォルトの名無しさん
10/05/04 18:55:52
レジスタ16個もあるからかな

383:デフォルトの名無しさん
10/05/04 19:07:42
アセンブラでプログラムしてるんですが、普通にasでアセンブルするとサイズが
デカくなるんですが、単純にアセンブルだけしてくれるようなパラメータが
あったら教えてください。スレちだったらスマン。。

384:デフォルトの名無しさん
10/05/04 19:34:18
LLVMの方が性能上だしなぁ
gccなんて意味があるのだろうか?

385:デフォルトの名無しさん
10/05/04 20:02:40
性能ってどういう所がいいの?

386:デフォルトの名無しさん
10/05/04 20:14:09
>>381
非互換ってそれgcc for Linux/x86-64と VC++ for Windows x64それぞれのことを言ってたりしないか?
例えば↓こことか
URLリンク(homepage1.nifty.com)

387:デフォルトの名無しさん
10/05/04 20:32:11
gccのソースみると、ms_abiってのがあるよ

388:デフォルトの名無しさん
10/05/04 22:48:06
>>384
ffmpeg
インラインアセンブラに対応できないと思う
gccに依存してるffmpegが糞とも言う

389:デフォルトの名無しさん
10/05/08 11:08:45
Intel compilerでffmpegをコンパイルする方法を教えて

390:デフォルトの名無しさん
10/05/08 13:10:04
GCC4.5もう使った人いるのかな。

391:デフォルトの名無しさん
10/05/09 00:27:44
必要に迫られてsnapshotのころから。

そういえばリリース版に入れ直してなかった。



392:デフォルトの名無しさん
10/05/10 20:22:24
GCCを改変して、任意のアセンブラを吐かせたいのですが、
どのようなワードで検索してよいのかわかりません。

具体的には、自作した仮想マシン向けのアセンブリ言語を吐かせたいとおもっております。

アセンブラとアセンブリ言語は適当にでっち上げた物がありますので、
ぜひGCCを利用してCやC++でプログラムを組めるように仕立て上げたいです。

393:デフォルトの名無しさん
10/05/10 20:27:51
すれ違いだが、いま流行りの COINS を利用した方がいいんじゃないかな?
あとは時代遅れの Xbyak とか。

394:デフォルトの名無しさん
10/05/10 20:37:04
テキストファイル置換ソフトの方があってるんじゃないか

395:デフォルトの名無しさん
10/05/10 20:40:48
>>392
調べるなら >>391 やLLVMとか。pccいじるのも楽でいいかもね。

396:395
10/05/10 20:42:38
>>391じゃねえ>>393

397:デフォルトの名無しさん
10/05/10 20:42:40
COINSは初めて知りました、ずいぶんモダンな作りをしていますね。

特定アセンブラを吐くドライバだけを作成できれば、
目的が達成できそうな感じでしょうか?

斜め読みしかしていないので、もっと深くよんでみます。

Xbyakは動的にx86のバイナリを吐くライブラリでしょうか?

ソースは見てないのでなんともいえませんが、x86バイナリ生成部を
オレオレバイナリに置き換えればよさそうですね。

いろいろありがとうございます。

398:392
10/05/10 20:51:17
>>395
pccも改造ベースにはコンパクトで良いとの評判みたいですね。
こっちもソース覗いてみます!

399:393
10/05/10 21:11:41
>>393 は釣りで、いまは LLVM 一択でしょう。(スマ

400:デフォルトの名無しさん
10/05/11 01:00:09
俺もLLVM一択だと思うが、
gccを改変する話に戻すと、検索ワードは「バックエンド」な

401:デフォルトの名無しさん
10/05/11 17:36:51
>>392
URLリンク(gcc.gnu.org)

402:デフォルトの名無しさん
10/05/14 18:50:03
gdbの質問もここでおk?

403:デフォルトの名無しさん
10/05/14 19:06:29
グデブ

404:デフォルトの名無しさん
10/05/15 06:26:37
適切なスレが思いつかないんで、
とりあえず聞くだけ聞いて、それから誘導されるがよい

405:デフォルトの名無しさん
10/05/16 20:35:56
apachでGCCが使えないのですが、gccオプションなどで可能になるものでしょうか?
exeファイルのバイナリーに含まれる文字が原因のようなのですが。
スレリンク(mysv板:770番)

406:デフォルトの名無しさん
10/05/16 20:38:59
gccに問題ないから。exeファイルうんぬんも関係ない。

407:デフォルトの名無しさん
10/05/16 20:42:18
はい、
apachとのバイナリーレベルでの相性のようです。

408:デフォルトの名無しさん
10/05/16 21:14:23
"\r\n"


409:デフォルトの名無しさん
10/05/16 21:52:11
>>408
Windowsなら、"\n"と"\r\n"は、同じ"\r\n"を出力します。

410:デフォルトの名無しさん
10/05/17 20:19:00
>>409それだとちょっと語弊があるような最終的にはそうなるけどさ
Windowsの場合"\n"だけでCRLF(復帰改行)が出力されるから"\r\n"を明示する意味はない

411:デフォルトの名無しさん
10/05/17 20:57:56
>>410
どうも405の問題は、Windows上においても処理系によっては
¥nがLFであってCRLFで無いという問題の様に思える。 

412:デフォルトの名無しさん
10/05/18 04:55:08
標準出力をバイナリーモードにすればいいとかじゃないの?

413:405
10/05/18 20:11:57
Apache統合スレ 10 (HTTPServer以外も含む)
スレリンク(mysv板:770-786番)
C言語でstdoutをbinモードにするには?
URLリンク(www.tohoho-web.com)

解決しました。

414:デフォルトの名無しさん
10/05/18 20:23:13
窓でパイプ処理やろうとすると必ず通る壁だな

415:409
10/05/22 22:05:47
>>410
違ってた、GCCの場合だけは "\n" なら、\n しか出力しないようなEXEを作る。
実験はWINのサクラエディタで実行してみた。

416:デフォルトの名無しさん
10/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.
URLリンク(gcc.gnu.org)

417:デフォルトの名無しさん
10/05/24 18:06:00
なんでGNU公式の統合開発環境ってないのだろうね。

418:デフォルトの名無しさん
10/05/24 18:49:24
GUIなんて要らないとおもってるから。

419:デフォルトの名無しさん
10/05/24 18:58:16
GNU統合開発環境ってemacsじゃないの?

420:デフォルトの名無しさん
10/05/24 19:22:27
>>419勘違いも甚だしいぞ、失礼なやつだ。

421:デフォルトの名無しさん
10/05/24 20:27:02
教祖に聞け

422:デフォルトの名無しさん
10/05/25 10:41:11
デバッガだけはGUIあった方が断然いい。
異論はまったく認めない。

423:デフォルトの名無しさん
10/05/25 12:28:09
>>530
心配性だな、とっても大人数でいじらなければいけない案件なのか?

424:デフォルトの名無しさん
10/05/25 18:15:08
ロングパスだな

425:デフォルトの名無しさん
10/05/25 20:36:12
>>422
かなり同意。 OllyDBG になれたら GDB なんて使う気にならん。
symdeb に疑問を感じなかった昔の自分が信じられん。

426:デフォルトの名無しさん
10/05/26 02:17:03
おまえらデバッガだの統合開発環境だの言うけど、何がそんなに便利なのか俺に見せてみろよ。

そう後輩に言った10分後、おれは「すまんかった、ちょっとこれマジで教えてくれ…。」と言っていた。

427:デフォルトの名無しさん
10/05/26 06:57:24
>>418
そんなこと思っていたらGDB/MIなんてないだろ。

428:デフォルトの名無しさん
10/05/27 19:14:57
graphite関係のオプションで詳しい説明あるところを教えてください。
キャッシュサイズとかどこで取得するのかなー?

429:デフォルトの名無しさん
10/05/28 15:30:28
4.5はやくしてくれねーかなー
ラムダ式つかいたいから開発保留してるんだけど。

430:デフォルトの名無しさん
10/05/29 01:30:35
>>429 保留してる間に gcc のリリースに貢献すればよいではないか。

431:デフォルトの名無しさん
10/06/01 00:42:37
GCC が C++ を採用するとはビックリした。これも LLVM の影響なのかな(LLVM は C++)?

URLリンク(news.ycombinator.com)

432:デフォルトの名無しさん
10/06/01 01:28:58
なんだ?って思っちゃったがGCC自体のコードをC++で書き直そうって話ね。

433:デフォルトの名無しさん
10/06/01 07:15:10
>>431
> The goal is a better compiler for users, not a C++ code base for its own sake.
とか言ってるわりに、とりあえずどの機能が欲しくて使うことにしたのか、よくわからんな。

434:デフォルトの名無しさん
10/06/01 10:09:50
むこうにも中二病開発者がいるんだろ

435:デフォルトの名無しさん
10/06/01 11:36:30
C言語でもオブジェクト指向なプログラミングはできるし、
継承や多態性も実現できるが・・・。

まあコード量がおおくなって手続きがうざくなるからな。


436:デフォルトの名無しさん
10/06/01 16:56:31
せっかくgccなんだから、objc とか ada とかで書いてみるとか。

437:デフォルトの名無しさん
10/06/01 21:19:39
まじめな話、gcc が c で書かれているから、いろんなプラットホームに移植されたわけで‥‥‥。

438:デフォルトの名無しさん
10/06/01 21:52:21
bootstrapのプロセスはどうなるんだろう? 

439:デフォルトの名無しさん
10/06/02 07:33:00
>>438
クロスが基本となるだろう。

440:デフォルトの名無しさん
10/06/02 13:57:57
>>437
昔はクロス環境作るの大変だったけど、今は普通だし、
開発環境そこらじゅうにあるし、問題にならないんじゃね

441:デフォルトの名無しさん
10/06/02 19:31:49
--enable-build-with-cxx

442:デフォルトの名無しさん
10/06/02 21:30:05
gcc動くけどg++ダメなんて環境はそんなになさそうだしなあ。

ついでにどうでもいいことだがRMSがこの決定に同意しているのか気にならんでもない。


443:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/06/03 10:19:07
ちなみにこれが正解だった

...
local = { value : 0, u : { s : { value3 : 3, value4 : 4 }}};


445:デフォルトの名無しさん
10/06/04 17:27:31
書けるけど読みたくは無い構造してんなぁ

446:デフォルトの名無しさん
10/06/04 17:29:15
>>443
∞ループに入る最小の構造を作るためにもうちょっと単純化してみたら面白いかもよ。


447:デフォルトの名無しさん
10/06/04 20:57:18
mingwのLTOまだあああああああああああ

448:デフォルトの名無しさん
10/06/08 06:25:05
これって知ってた?
URLリンク(sourceware.org)

試したらこんな事が出来て涙が出た。
(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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/06/30 08:36:05
4.5.0 ということは ports ? 野良ビルド?

452:デフォルトの名無しさん
10/06/30 10:26:36
うん

453:デフォルトの名無しさん
10/06/30 10:40:31
結局どっちなんだよと思ったのは私だけじゃないはず

454:デフォルトの名無しさん
10/06/30 11:36:41
結局どっちなんだよ!

455:デフォルトの名無しさん
10/06/30 16:40:24
>>451
URLリンク(ftp.riken.go.jp)の.tbzと野良の両方で再現した。

ただ、OSXからのFreeBSDクロスコンパイル→転送して実行、ではAdaのほうでも再現したのに、
FreeBSD上のセルフコンパイルでは野良ではAdaでは再現しない(C++では再現、gcjはビルドできなかった……)と
結構ばらつく。よくわからん。

456:デフォルトの名無しさん
10/07/02 17:51:11
うーむ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch