2020年11月

2020年11月27日

Ubuntu 18.04 の APT でインストールできるパッケージでは、Clang のビルド要件を満たせなくなっているので、その解決方法です。

続きを読む

2020年11月19日

追記:本記事の内容は C++98 から有効であるとコメント欄にて教えていただきました。情報提供に感謝いたします。

GCC でコンパイル時に -Wall -Wextra の 2 オプションを付けるというのは非常に一般的です。この場合、以下のように未使用の関数引数には警告が出ます。
$ cat test.c
void f(int x) {}
void g(int x) {}

int main()
{
    f(10);
    g(10);
    return 0;
}

$ gcc -Wall -Wextra test.c
test.c: In function ‘f’:
test.c:1:12: warning: unused parameter ‘x’ [-Wunused-parameter]
 void f(int x) {}
            ^
test.c: In function ‘g’:
test.c:2:12: warning: unused parameter ‘x’ [-Wunused-parameter]
 void g(int x) {}
            ^
しかし、例えばコールバックとして渡す関数(ハンドラ)のように、引数を全部使わない関数というのはよくあります。

続きを読む

kmckk at 16:36コメント(2)C++若槻 

2020年11月17日

以前、「GCCの最適化による予期せぬ無限ループの発生」という記事を書きました。この時は -fno-builtin-malloc や __asm __volatile("":::"memory"); などで対策できました。

しかし今回、現状最新の GCC 10 で、memset、しかもナイーブな *(char *)s++ = (char)c; みたいな実装ではなく、NetBSD の本格的な実装のもので発生し、-fno-builtin や -fno-builtin-memset、-ffreestanding などでも抑制できず、-fno-tree-loop-distribute-patterns というあまり一般的ではないオプションが必要になりました。

これは一見 GCC のオプションが効いてない、バグのように思えますが、調べて見ると GCC の仕様に根差した問題であることがわかりました。

続きを読む

kmckk at 17:57コメント(0)GCC若槻 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード