タグ

Clangに関するrokujyouhitomaのブックマーク (7)

  • Clang と GCC の主な相違点 — SOLID 3.0.0 ドキュメント

    Clang と GCC の主な相違点 Clang と GCC は大部分で互換性がありますが、ここでは異なる部分を解説します。細かい所まで含めると膨大になるので、ここでは SOLID プロジェクトで実際に問題になったものだけを記載しています。 コンパイラドライバ GCC は、コンパイラドライバである gcc.exe や g++.exe が渡されたオプションを解析し、実際のコンパイラ cc1.exe (C) や cc1plus.exe (C++)、アセンブラ (Binutils の as.exe)、リンカ (Binutils の ld.exe) に応じた形に変換して呼び出すという構造になっています。 一方 Clang コンパイラはオプションによって、単一の exe (C の場合は clang.exe、C++ の場合は clang++.exe) がコンパイラドライバ、コンパイラ、アセンブラの

  • C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 先日、社内で主にLinux上でC/C++を用いている開発者向けの講義をしました。 「こんなことができる」と知ってもらい、興味を持てば各自で勉強してもらおうと広く浅くツールを紹介しました。 gtags, ASan, Valgrind, addr2line, cppcheck, SystemTap, perfなどです。 興味があれば講義資料「C/C++プログラマのための開発ツール」をごらんください。 コンパイラオプション 受講者には新人やサイボウズ・ラボユースの学生もいたので基的なところから紹介しました。 C/C++コンパイラを使うときはできるだけ警告オプションをつけるのが望ましいです。 警告が出るのは自分のコードの書き方に不備があることが多いからです。 gccやclangでは-Wall -Wextraは基としてそれ以外にも有用なオプションがあります(C++

    C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ
    rokujyouhitoma
    rokujyouhitoma 2016/09/15
    ソース読みの補助ツールに関してはVisualStudioがよい
  • Clang Developers - __thread support in Clang

    Hi, I am trying to port a program from Linux to macosx. The program uses several features one of them is Thread-Local Storage. It uses __thread GCC attribute for this. The program compiles fine on Linux i386 but fails on macosx 10.6.4/clang2.8 with following error: "error: thread-local storage is unsupported for the current target" My question is: what is the status of this feature? Are you going

  • C言語で可変長引数をとる関数を、型安全に書く方法

    C言語の可変長引数は、型安全でない(まちがった型の引数を渡してもコンパイルエラーにならない)とされています。これは言語仕様の理解としては正しいのですが、特定の型の引数を任意の個数とる関数に限っては、マクロを使うことで型安全性を確保することができます。 任意の個数のdoubleを引数にとり、その和を返す関数「sumf」を例にあげて説明します。 C言語の可変長引数機構を使ってsumfを定義すると、以下のようになります。 #include <math.h> #include <stdarg.h> #include <stdio.h> static double sumf(double nfirst, ...) { double r = 0, n; va_list args; va_start(args, nfirst); for (n = nfirst; ! isnan(n); n = va_a

    rokujyouhitoma
    rokujyouhitoma 2014/12/13
    なんと! > "※この記事はH2O Advent Calendar 2014の一部です。"
  • Clangにおけるメソッドの戻り値の型の扱い - イグトランスの頭の中

    Clang (Apple LLVMコンパイラ)は、Objective-Cのinitやnewを特別扱いしているようです。 次のコードをコンパイルします。 // clang++ -std=c++11 -fobjc-arc -Wall -Wno-unused-variable \ // -framework Foundation t.mm extern "C" { #import <Foundation/Foundation.h> } int main() { @autoreleasepool { auto s1 = [NSMutableString string]; auto s2 = [NSMutableString new]; auto s3 = [[NSMutableString alloc] init]; } } すると、 t.mm:10:9: warning: 'auto' dedu

    Clangにおけるメソッドの戻り値の型の扱い - イグトランスの頭の中
  • clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。

    先日llvm 3.3がリリースされました。aarch64(arm 64bit)のコードが生成できるようになったということなので、ソースからビルドして遊んでいたのですが、さりげなく凄く最適化されたコードが生成されているのに気がつきました。aarch64だと今は実行して確認できる環境が手元に無いので、普通のarmv7-aで同じことを試しました。 ここで使ったコードとその結果はgistに貼りました。 https://gist.github.com/tetsu-koba/5835724 ソースコード int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } 1からnまでの総和を求める関数です。1から100までの総和が5050なのはガウス少年の逸話で有名ですね。 gcc 4.8.

    clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。
  • Clang の構文解析インターフェースを Python から叩いてみようという話

    iOS App 開発担当の松です。 Sleipnir for Mac をお試しいただいた皆様、ありがとうございます。まだの方は是非! さて、先日の記事にもあるように、Apple は LLVM を基盤とした開発環境を着々と整備してきています。今日は LLVM 関連ツールの中でも特に注目されている Clang で少し遊んでみたいと思います。 Clang は LLVM をバックエンドとした C/C++/Objective-C のコンパイラです。GCC に比べてコンパイルが速かったり、生成されたバイナリがより最適化されてたりと、色々と優れているのですが、中でも面白いのがコンパイル途中で生成される構文木に、アクセスする為のインターフェースが用意されている点です。Xcode ではお馴染みの「コード補完」や「リファクタリング」などの機能が、このインターフェースを利用して実装されていて、方法次第でかなり

    Clang の構文解析インターフェースを Python から叩いてみようという話
  • 1