10.48 __attribute__((pure)) 関数属性

多くの関数は、値を返す以外に効果がなく、その戻り値はパラメータとグローバル変数にのみ依存します。このような関数は、データフロー分析の対象となり、削除される場合があります。

この関数属性は、ARM コンパイラがサポートしている GNU コンパイラの拡張機能です。
この関数属性は、__pure キーワードと関連していますが、同等ではありません__pure と同等の関数属性は __attribute__((const)) です。

int Function_Attributes_pure_0(int b) __attribute__((pure));
int Function_Attributes_pure_0(int b)
{
    return b++;
}
int foo(int b)
{
    int aLocal=0;
    aLocal += Function_Attributes_pure_0(b);
    aLocal += Function_Attributes_pure_0(b);
    return 0;
}
この場合、Function_Attributes_pure_0 の結果は使用されないため、この関数の呼び出しは削除することができます。
関連する概念
5.17 同じ引数を使用して呼び出されたときに同じ結果を返す関数
関連する参考文書
10.33 __attribute__((const)) 関数属性
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.