にゃははー

はへらー

GCC

allocaをinline関数で使うと危険である?

“allocaをinline関数で使うと危険である"という要旨のメールがoss-securityに流れてて、これは一体どういうことだ…と思った。 長い文章でも無いしそんなに難しくもないが、どうやらGCCのオプティマイザの展開順に問題があるようだ。 http://www.openwall.com…

スレッドアンセーフなshared_ptr

多分みなさんはstd::shared_ptrを使ってるとシングルスレッドで使うんだからスレッドアンセーフでいいのにとか思うことが良くありすぎて再実装したくなると思います。ならない方はなって下さい。設計が悪いと言う人はrecursive mutexを今後使わないで下さい…

便利かもしれないGCC builtin

これは恐らくC++ Advent Calendar 2014の15日目です。古来[要出典]より人々はいかに例外を投げた奴をトレースするかに命をかけてきた[要出典]。投げられた例外自体や、そのメッセージを確認することはできるが、一体誰がその例外を投げたかという情報は一切…

returnとmoveと() ~ GCCを添えて

Boost.Move 1.56 で追加されたBOOST_MOVE_RET*1*2というマクロがあるのですが、GCC 4.9のC++14モードだけなぜかコンパイルできないと言う事象にぶつかってしまい、そういえばここらへんの暗黙のmoveとかって最後にドタバタしてたなぁと思いつつあんまりしっ…

range-based forとstd名前空間

Boost.Coroutineに関してBoost users MLでrange-based forに関する面白い話が流れたので紹介したい。 この話は私も初めて聞いて驚いた。C++11で新規追加されたrange-based forはconceptが削除されたタイミングでその挙動をどうするかで議論していた。なつか…

GCC 4.8からLinuxのmultiarch/multilib対応が改善される

GCC

Ubuntu 11.04からアーキテクチャ依存関係のヘッダやライブラリとかが /usr/lib/x86_64-linux-gnu とかに移った影響でGCCのビルドが通らなかったりうまくリンクできなかったりしていた問題は、従来自分でパッチ書いたり環境変数でpathを通したりしなければな…

1.52からboost::result_ofがコンパイルエラーになるかもしれない

1.51以前のboost::result_ofを使用しているコードでC++11モードをenableにしている場合、1.52に更新するとコンパイラによってはコンパイルエラーになるかもしれない。 というのもboost::result_ofはBoost 1.52から挙動が変わり、従来TR1式のresult_ofであっ…

Ubuntu 11.04以降で自前でgccをビルドした場合のアーキテクチャ依存ファイルについて

GCC

Ubuntu 11.04以降で幾つかのアーキテクチャ依存ファイルのパスが変更されてしまい、upstream GCCを自前コンパイルするとインクルードやリンクが通らないという問題があります。通常、/etc/environmentに CPATH=/usr/include/x86_64-linux-gnu LIBRARY_PATH=/…

libstdc++で_GLIBCXX_USE_NANOSLEEPがないとstd::sleep_for/std::sleep_untilが定義されない件について

結構前から議論が上がってて見てたけどそういえば書いてなかったので今更ですけど...例えばLinux等POSIX系OSで #include <chrono> #include <thread> int main() { std::this_thread::sleep_for(std::chrono::seconds(1)); } としてもGCCは hoge.cpp: In function ‘int main(</thread></chrono>…

GCC4.8をC++でコンパイルするブランチ

GCCはC++を使用することを決定したわけですが、その実際の動きがありました。 http://gcc.gnu.org/wiki/cxx-conversionconfigureに --enable-build-with-cxx を叩きこむと一部のソースがC++コンパイラでコンパイルするようになるわけですが、このブランチは…

GCC4.8はClangに近づく

GCC4.8からdiagnostic messageを改良する動きが出ています。 http://gcc.gnu.org/wiki/ClangDiagnosticsComparison GCC4.6からdiagnostic messageの改良が始まっていましたが、これまでのは例えば struct S { ... snip ... } int i; というコードで意味不明…

libstdc++.7のversioned namespaceに起因する問題

GCC4.6.3/4.7.0のlibstdc++から修正されたversioned namespaceを有効にするとboost/detail/container_fwd.hppのforward declとぶつかって曖昧性が生じるためコンパイルエラーになる部分が発生しています。 Interprocessでも同様の問題があったようですが、こ…

GIT readonly mirror

http://ftp.tsukuba.wide.ad.jp/ をよく訪れる人は知ってるかも知れないですが、ちょくちょく更新しています。普段はミラー対象が増えたとかですが、今回は開発者の方々に向けたservice updateです。http://ftp.tsukuba.wide.ad.jp/ の下の方に GIT readonly…

clang(2.9)のGCC Extension(attribute)

例えばclangはGCCの__attribute__をいくつかサポートしている。 例えば__attribute__((noreturn) )。gcc/clang両方でコンパイル通るように書いてるわけだけど挙動が異なる部分を発見した。 例えば typedef void func_t( void ); void g( func_t * ); void __…

boost::mpl::identity must go!

※boost::mpl::identityがなくなれって言ってるわけではありません。その使用方法の1つがってだけです。http://gcc.gnu.org/ml/gcc-bugs/2011-07/msg01663.html http://gcc.gnu.org/ml/gcc-bugs/2011-07/msg01664.html上の2つのメールがあなたの目にはどの…

override/finalキーワードキターーー

http://gcc.gnu.org/gcc-4.7/changes.html http://gcc.gnu.org/projects/cxx0x.html何が嬉しいって?そりゃ決まってるでしょ。 「すべてのクラスは派生される可能性があるからdtorには必ずvirtualを付けろ」教をたたきつぶすことが出来るんですよ? 今日を国…

GNATのインストールがうまくいかない

やっぱGNU makeはいろいろやばい もうおわこんだろ・・・というのもGNATのビルドプロセスを追ってみればわかる。例えばGCC 4.4が入ってる環境でGCC 4.5をビルドしようとする。ちなみに各コマンドは同一シェル内で実行する。 あと、4.4のインストールされてい…

【備忘録】gccのサーチパス

GCC

いろいろ調べても$INCLUDEにズラズラ書けばできる的なことが書いてあったけど上手く引っ張れなかったので window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t;…

gccのミラーに登録されました。

http://ftp.tsukuba.wide.ad.jp/software/gcc大元から引っ張ってこようとすると結構遅いので使ってみるといいかも? そとからどれぐらい出るかしらんけど...あと、なんかミラーして欲しいのがあったら「やれやゴルァ」って言ってもらえれば頑張るかも。

GCCのミラーを準備中...

タイトルのとおりです。現在日本は2箇所(ftp.dti.ad.jpとring.etl.go.jp)が登録されてますが、私の手元ではring.etl.go.jpさんが応答してくれないので実質1箇所になってるのでしょうか。 今後のC++0xの普及速度を鑑みてやはりここはミラーを建てる時だと…

vim73とgcc46は徹底的に相性が悪いようだ...

2010-12-24 - Flast?なにそれ、おいしいの? 2010-09-06 - Flast?なにそれ、おいしいの? でも取り上げてるvim7.3とGCC4.6の相性は更に悪くなった :set nrformats+=alpha を実行してもらいたい。見事に $ vim Error detected while processing /home/flast…

vimをISO C(90or99)で書き直すプロジェクトをやろうと思うんだけど

ひとりだといろいろアレ♂なので、だれか賛同者が1,2人欲しい... 最終的にはメインラインに乗ると嬉しいんだけどな...ちなみに今のvim7.3はGCC4.6でコンパイルするとバイナリは出来るけど行削除とか(多分ヤンクまわり)で死にます。なので、C99=>GCC4.6の順に…

ちょっとよくわからない挙動

lambdaについて調べてたら・・・ - にゃははー にも書いたやつが一向に加筆修正されないからよくわからん。GCCはg5のようなコードをrejectするけどiが参照出来てしまっているのは問題なはず。 それともsizeof operatorだけ(あとその類)だけは例外?ちょっと…

【修正済:r170532】GCC4.6.0 trunk C++0xモードのバグ

C++0xでconstexprが導入されましたがそれによってstatic constがconstant-expressionから外されたということで無ければバグです。 ちょっと今は時間無いので仕様読んで明日あたり更新します。つまり以下のようなコードがエラーになってしまいます。 template …

4.4からのdecltypeでのICE

template < typename T > int f( const T &, const char * ); template < typename T > decltype( f( T(), "" ) ) g( const T &t ); void h() { g( 0 ); } https://ideone.com/qkxJ1 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47488 が死ぬ。どうやらdec…

いつかのICEがfix

GCC4.6.0のinternal compiler error - にゃははー のICEがfixされたようです。 46552 – [4.6 Regression] [C++0x] Internal compiler error on pointer to member variable with templateP-stadeも元に戻るのかな?

C1Xの公式アナウンス

GCC4.6のRelease NotesにC1Xに関する記述がなされました。まだC++0xの様なページは出来てない様ですが、Cは(機能とかがどうということではなく)非常にメジャーな言語なので注目度は高いのではないでしょうか。 そうでもない?まぁなんでそんなの作ったか分か…

順調にbugfix

GCC4.6.0でのinternal error - にゃははー が修正されたようです。いや、それだけですがね。まぁP1が無くなるのはまだ1月ぐらいはかかるんじゃないんですかね。

例外仕様とlambdaとunexpected

C++98/03からある変な(?)として例外仕様がある。C++0xのnoexceptと同じようなことをサポートしている機能だ。 通常例外仕様を書く事はないだろう。ましてやunexpected handlerなぞ・・・例外仕様を記述することで予期しない例外を処理することが可能になる。…

vim7.3とGCC4.6.0との確執

GCC4.6のバグ - にゃははーで発生したバグによるGCC4.6との相性 - にゃははーはどうやらfix! - Flast?なにそれ、おいしいの?のGCCの修正によって無くなったようです。ので-fltoをつけてコンパイル。GCC4.5でのサイズから若干割増になったけどこれもLTOでイ…