//===--- Builtins.def - Builtin function info database ----------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file was developed by Chris Lattner and is distributed under // the University of Illinois Open Source License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file defines the standard builtin function database. Users of this file // must define the BUILTIN macro to make use of this information. // //===----------------------------------------------------------------------===// // FIXME: this needs to be the full list supported by GCC. Right now, I'm just // adding stuff on demand. // // FIXME: This should really be a .td file, but that requires modifying tblgen. // Perhaps tblgen should have plugins. // The first value provided to the macro specifies the function name of the // builtin, and results in a clang::builtin::BIXX enum value for XX. // The second value provided to the macro specifies the type of the function // (result value, then each argument) as follows: // v -> void // c -> char // s -> short // i -> int // f -> float // d -> double // . -> "...". This may only occur at the end of the function list. // // Types maybe prefixed with the following modifiers: // L -> long (e.g. Li for 'long int') // LL -> long long // S -> signed // U -> unsigned // The third value provided to the macro specifies information about attributes // of the function. Currently we have: // n -> nothrow // c -> const BUILTIN(__builtin_inf , "d" , "nc") BUILTIN(__builtin_inff , "f" , "nc") BUILTIN(__builtin_infl , "Ld" , "nc") BUILTIN(__builtin_fabs , "dd" , "nc") BUILTIN(__builtin_fabsf, "ff" , "nc") BUILTIN(__builtin_fabsl, "LdLd", "nc") BUILTIN(__builtin_constant_p, "UsUs", "nc") #undef BUILTIN