[Bug 69] gcc.builtins should be nothrow, pure and probably @safe

gdc-bugzilla at gdcproject.org gdc-bugzilla at gdcproject.org
Tue Jul 9 13:14:15 PDT 2013


http://bugzilla.gdcproject.org/show_bug.cgi?id=69

--- Comment #9 from Iain Buclaw <ibuclaw at gdcproject.org> 2013-07-09 20:14:15 UTC ---
As a result, all these functions are now listed as pure nothrow @safe  (along
with all backend builtins).

// D import file generated from 'builtins.d'
module gcc.builtins;
extern (C)
{
        extern pure nothrow @safe double __builtin_huge_val();
        extern pure nothrow @safe float __builtin_huge_valf();
        extern pure nothrow @safe real __builtin_huge_vall();
        extern pure nothrow @safe int __builtin_iceil(in double);
        extern pure nothrow @safe int __builtin_iceilf(in float);
        extern pure nothrow @safe int __builtin_iceill(in real);
        extern pure nothrow @safe int __builtin_ifloor(in double);
        extern pure nothrow @safe int __builtin_ifloorf(in float);
        extern pure nothrow @safe int __builtin_ifloorl(in real);
        extern pure nothrow @safe double __builtin_inf();
        extern pure nothrow @safe float __builtin_inff();
        extern pure nothrow @safe real __builtin_infl();
        extern pure nothrow @safe float __builtin_infd32();
        extern pure nothrow @safe double __builtin_infd64();
        extern pure nothrow @safe real __builtin_infd128();
        extern pure nothrow @safe int __builtin_irint(in double);
        extern pure nothrow @safe int __builtin_irintf(in float);
        extern pure nothrow @safe int __builtin_irintl(in real);
        extern pure nothrow @safe int __builtin_iround(in double);
        extern pure nothrow @safe int __builtin_iroundf(in float);
        extern pure nothrow @safe int __builtin_iroundl(in real);
        extern pure nothrow @safe long __builtin_lceil(in double);
        extern pure nothrow @safe long __builtin_lceilf(in float);
        extern pure nothrow @safe long __builtin_lceill(in real);
        extern pure nothrow @safe long __builtin_lfloor(in double);
        extern pure nothrow @safe long __builtin_lfloorf(in float);
        extern pure nothrow @safe long __builtin_lfloorl(in real);
        extern pure nothrow @safe long __builtin_llceil(in double);
        extern pure nothrow @safe long __builtin_llceilf(in float);
        extern pure nothrow @safe long __builtin_llceill(in real);
        extern pure nothrow @safe long __builtin_llfloor(in double);
        extern pure nothrow @safe long __builtin_llfloorf(in float);
        extern pure nothrow @safe long __builtin_llfloorl(in real);
        extern pure nothrow @safe float __builtin_nand32(in char*);
        extern pure nothrow @safe double __builtin_nand64(in char*);
        extern pure nothrow @safe real __builtin_nand128(in char*);
        extern pure nothrow @safe double __builtin_nans(in char*);
        extern pure nothrow @safe float __builtin_nansf(in char*);
        extern pure nothrow @safe real __builtin_nansl(in char*);
        extern pure nothrow @safe double __builtin_powi(in double, in int);
        extern pure nothrow @safe float __builtin_powif(in float, in int);
        extern pure nothrow @safe real __builtin_powil(in real, in int);
        extern pure nothrow @safe cdouble __builtin_cexpi(in double);
        extern pure nothrow @safe cfloat __builtin_cexpif(in float);
        extern pure nothrow @safe creal __builtin_cexpil(in real);
        extern pure nothrow @safe void* __builtin_aggregate_incoming_address();
        extern pure nothrow @safe void* __builtin_apply(in void function(), in
void*, in ulong);
        extern pure nothrow @safe void* __builtin_apply_args();
        extern pure nothrow @safe ushort __builtin_bswap16(in ushort);
        extern pure nothrow @safe uint __builtin_bswap32(in uint);
        extern pure nothrow @safe ulong __builtin_bswap64(in ulong);
        extern pure nothrow @safe int __builtin_classify_type();
        extern pure nothrow @safe int __builtin_clz(in uint);
        extern pure nothrow @safe int __builtin_clzimax(in ulong);
        extern pure nothrow @safe int __builtin_clzl(in ulong);
        extern pure nothrow @safe int __builtin_clzll(in ulong);
        extern pure nothrow @safe int __builtin_constant_p();
        extern pure nothrow @safe int __builtin_ctz(in uint);
        extern pure nothrow @safe int __builtin_ctzimax(in ulong);
        extern pure nothrow @safe int __builtin_ctzl(in ulong);
        extern pure nothrow @safe int __builtin_ctzll(in ulong);
        extern pure nothrow @safe int __builtin_clrsb(in int);
        extern pure nothrow @safe int __builtin_clrsbimax(in long);
        extern pure nothrow @safe int __builtin_clrsbl(in long);
        extern pure nothrow @safe int __builtin_clrsbll(in long);
        extern pure nothrow @safe void* __builtin_dwarf_cfa();
        extern pure nothrow @safe uint __builtin_dwarf_sp_column();
        extern pure nothrow @safe void __builtin_eh_return(in long, in void*);
        extern pure nothrow @safe int __builtin_eh_return_data_regno(in int);
        extern pure nothrow @safe long __builtin_expect(in long, in long);
        extern pure nothrow @safe void* __builtin_assume_aligned(in void*, in
ulong, ...);
        extern pure nothrow @safe ulong __builtin_extend_pointer(in void*);
        extern pure nothrow @safe void* __builtin_extract_return_addr(in
void*);
        extern pure nothrow @safe void* __builtin_frame_address(in uint);
        extern pure nothrow @safe void* __builtin_frob_return_addr(in void*);
        extern pure nothrow @safe void __builtin_init_dwarf_reg_size_table(in
void*);
        extern pure nothrow @safe int __builtin_fpclassify(in int, in int, in
int, in int, in int, ...);
        extern pure nothrow @safe int __builtin_isfinite();
        extern pure nothrow @safe int __builtin_isinf_sign();
        extern pure nothrow @safe int __builtin_isnormal();
        extern pure nothrow @safe int __builtin_isgreater();
        extern pure nothrow @safe int __builtin_isgreaterequal();
        extern pure nothrow @safe int __builtin_isless();
        extern pure nothrow @safe int __builtin_islessequal();
        extern pure nothrow @safe int __builtin_islessgreater();
        extern pure nothrow @safe int __builtin_isunordered();
        extern pure nothrow @safe void __builtin_longjmp(in void*, in int);
        extern pure nothrow @safe void* __builtin_next_arg();
        extern pure nothrow @safe int __builtin_parity(in uint);
        extern pure nothrow @safe int __builtin_parityimax(in ulong);
        extern pure nothrow @safe int __builtin_parityl(in ulong);
        extern pure nothrow @safe int __builtin_parityll(in ulong);
        extern pure nothrow @safe int __builtin_popcount(in uint);
        extern pure nothrow @safe int __builtin_popcountimax(in ulong);
        extern pure nothrow @safe int __builtin_popcountl(in ulong);
        extern pure nothrow @safe int __builtin_popcountll(in ulong);
        extern pure nothrow @safe void __builtin_prefetch(in void*, ...);
        extern pure nothrow @safe void __builtin_return(in void*);
        extern pure nothrow @safe void* __builtin_return_address(in uint);
        extern pure nothrow @safe void* __builtin_saveregs();
        extern pure nothrow @safe int __builtin_setjmp(in void*);
        extern pure nothrow @safe void __builtin_trap();
        extern pure nothrow @safe void __builtin_unreachable();
        extern pure nothrow @safe void __builtin_unwind_init();
        extern pure nothrow @safe void __builtin_update_setjmp_buf(in void*, in
int);
        extern pure nothrow @safe void __builtin_va_copy(ref
__va_list_tag[1LU], ref __va_list_tag[1LU]);
        extern pure nothrow @safe void __builtin_va_end(ref
__va_list_tag[1LU]);
        extern pure nothrow @safe void __builtin_va_start(ref
__va_list_tag[1LU], ...);
        extern pure nothrow @safe int __builtin_va_arg_pack();
        extern pure nothrow @safe int __builtin_va_arg_pack_len();
        extern pure nothrow @safe ulong __builtin_object_size(in void*, in
int);
        extern pure nothrow @safe void __cyg_profile_func_enter(in void*, in
void*);
        extern pure nothrow @safe void __cyg_profile_func_exit(in void*, in
void*);
        extern pure nothrow @safe void* __builtin_thread_pointer();
        extern pure nothrow @safe void __builtin_set_thread_pointer(in void*);
        extern pure nothrow @safe char* __builtin_FILE();
        extern pure nothrow @safe char* __builtin_FUNCTION();
        extern pure nothrow @safe int __builtin_LINE();
        extern pure nothrow @safe void __sync_fetch_and_add();
        extern pure nothrow @safe ubyte __sync_fetch_and_add_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_fetch_and_add_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_fetch_and_add_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_fetch_and_add_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_fetch_and_sub();
        extern pure nothrow @safe ubyte __sync_fetch_and_sub_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_fetch_and_sub_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_fetch_and_sub_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_fetch_and_sub_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_fetch_and_or();
        extern pure nothrow @safe ubyte __sync_fetch_and_or_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_fetch_and_or_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_fetch_and_or_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_fetch_and_or_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_fetch_and_and();
        extern pure nothrow @safe ubyte __sync_fetch_and_and_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_fetch_and_and_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_fetch_and_and_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_fetch_and_and_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_fetch_and_xor();
        extern pure nothrow @safe ubyte __sync_fetch_and_xor_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_fetch_and_xor_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_fetch_and_xor_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_fetch_and_xor_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_fetch_and_nand();
        extern pure nothrow @safe ubyte __sync_fetch_and_nand_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_fetch_and_nand_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_fetch_and_nand_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_fetch_and_nand_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_add_and_fetch();
        extern pure nothrow @safe ubyte __sync_add_and_fetch_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_add_and_fetch_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_add_and_fetch_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_add_and_fetch_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_sub_and_fetch();
        extern pure nothrow @safe ubyte __sync_sub_and_fetch_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_sub_and_fetch_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_sub_and_fetch_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_sub_and_fetch_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_or_and_fetch();
        extern pure nothrow @safe ubyte __sync_or_and_fetch_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_or_and_fetch_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_or_and_fetch_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_or_and_fetch_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_and_and_fetch();
        extern pure nothrow @safe ubyte __sync_and_and_fetch_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_and_and_fetch_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_and_and_fetch_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_and_and_fetch_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_xor_and_fetch();
        extern pure nothrow @safe ubyte __sync_xor_and_fetch_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_xor_and_fetch_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_xor_and_fetch_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_xor_and_fetch_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_nand_and_fetch();
        extern pure nothrow @safe ubyte __sync_nand_and_fetch_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_nand_and_fetch_2(in void*, in
ushort);
        extern pure nothrow @safe uint __sync_nand_and_fetch_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_nand_and_fetch_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_bool_compare_and_swap();
        extern pure nothrow @safe bool __sync_bool_compare_and_swap_1(in void*,
in ubyte, in ubyte);
        extern pure nothrow @safe bool __sync_bool_compare_and_swap_2(in void*,
in ushort, in ushort);
        extern pure nothrow @safe bool __sync_bool_compare_and_swap_4(in void*,
in uint, in uint);
        extern pure nothrow @safe bool __sync_bool_compare_and_swap_8(in void*,
in ulong, in ulong);
        extern pure nothrow @safe void __sync_val_compare_and_swap();
        extern pure nothrow @safe ubyte __sync_val_compare_and_swap_1(in void*,
in ubyte, in ubyte);
        extern pure nothrow @safe ushort __sync_val_compare_and_swap_2(in
void*, in ushort, in ushort);
        extern pure nothrow @safe uint __sync_val_compare_and_swap_4(in void*,
in uint, in uint);
        extern pure nothrow @safe ulong __sync_val_compare_and_swap_8(in void*,
in ulong, in ulong);
        extern pure nothrow @safe void __sync_lock_test_and_set();
        extern pure nothrow @safe ubyte __sync_lock_test_and_set_1(in void*, in
ubyte);
        extern pure nothrow @safe ushort __sync_lock_test_and_set_2(in void*,
in ushort);
        extern pure nothrow @safe uint __sync_lock_test_and_set_4(in void*, in
uint);
        extern pure nothrow @safe ulong __sync_lock_test_and_set_8(in void*, in
ulong);
        extern pure nothrow @safe void __sync_lock_release();
        extern pure nothrow @safe void __sync_lock_release_1(in void*);
        extern pure nothrow @safe void __sync_lock_release_2(in void*);
        extern pure nothrow @safe void __sync_lock_release_4(in void*);
        extern pure nothrow @safe void __sync_lock_release_8(in void*);
        extern pure nothrow @safe void __sync_lock_release_16(in void*);
        extern pure nothrow @safe void __sync_synchronize();
        extern pure nothrow @safe bool __atomic_test_and_set(in void*, in int);
        extern pure nothrow @safe void __atomic_clear(in void*, in int);
        extern pure nothrow @safe void __atomic_exchange(in ulong, in void*, in
void*, in void*, in int);
        extern pure nothrow @safe void __atomic_exchange_n();
        extern pure nothrow @safe ubyte __atomic_exchange_1(in void*, in ubyte,
in int);
        extern pure nothrow @safe ushort __atomic_exchange_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_exchange_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_exchange_8(in void*, in ulong,
in int);
        extern pure nothrow @safe void __atomic_load(in ulong, in void*, in
void*, in int);
        extern pure nothrow @safe void __atomic_load_n();
        extern pure nothrow @safe ubyte __atomic_load_1(in void*, in int);
        extern pure nothrow @safe ushort __atomic_load_2(in void*, in int);
        extern pure nothrow @safe uint __atomic_load_4(in void*, in int);
        extern pure nothrow @safe ulong __atomic_load_8(in void*, in int);
        extern pure nothrow @safe bool __atomic_compare_exchange(in ulong, in
void*, in void*, in void*, in int, in int);
        extern pure nothrow @safe void __atomic_compare_exchange_n();
        extern pure nothrow @safe bool __atomic_compare_exchange_1(in void*, in
void*, in ubyte, in bool, in int, in int);
        extern pure nothrow @safe bool __atomic_compare_exchange_2(in void*, in
void*, in ushort, in bool, in int, in int);
        extern pure nothrow @safe bool __atomic_compare_exchange_4(in void*, in
void*, in uint, in bool, in int, in int);
        extern pure nothrow @safe bool __atomic_compare_exchange_8(in void*, in
void*, in ulong, in bool, in int, in int);
        extern pure nothrow @safe void __atomic_store(in ulong, in void*, in
void*, in int);
        extern pure nothrow @safe void __atomic_store_n();
        extern pure nothrow @safe void __atomic_store_1(in void*, in ubyte, in
int);
        extern pure nothrow @safe void __atomic_store_2(in void*, in ushort, in
int);
        extern pure nothrow @safe void __atomic_store_4(in void*, in uint, in
int);
        extern pure nothrow @safe void __atomic_store_8(in void*, in ulong, in
int);
        extern pure nothrow @safe void __atomic_add_fetch();
        extern pure nothrow @safe ubyte __atomic_add_fetch_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_add_fetch_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_add_fetch_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_add_fetch_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_sub_fetch();
        extern pure nothrow @safe ubyte __atomic_sub_fetch_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_sub_fetch_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_sub_fetch_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_sub_fetch_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_and_fetch();
        extern pure nothrow @safe ubyte __atomic_and_fetch_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_and_fetch_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_and_fetch_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_and_fetch_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_nand_fetch();
        extern pure nothrow @safe ubyte __atomic_nand_fetch_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_nand_fetch_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_nand_fetch_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_nand_fetch_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_xor_fetch();
        extern pure nothrow @safe ubyte __atomic_xor_fetch_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_xor_fetch_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_xor_fetch_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_xor_fetch_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_or_fetch();
        extern pure nothrow @safe ubyte __atomic_or_fetch_1(in void*, in ubyte,
in int);
        extern pure nothrow @safe ushort __atomic_or_fetch_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_or_fetch_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_or_fetch_8(in void*, in ulong,
in int);
        extern pure nothrow @safe void __atomic_fetch_add();
        extern pure nothrow @safe ubyte __atomic_fetch_add_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_fetch_add_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_fetch_add_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_fetch_add_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_fetch_sub();
        extern pure nothrow @safe ubyte __atomic_fetch_sub_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_fetch_sub_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_fetch_sub_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_fetch_sub_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_fetch_and();
        extern pure nothrow @safe ubyte __atomic_fetch_and_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_fetch_and_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_fetch_and_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_fetch_and_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_fetch_nand();
        extern pure nothrow @safe ubyte __atomic_fetch_nand_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_fetch_nand_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_fetch_nand_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_fetch_nand_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_fetch_xor();
        extern pure nothrow @safe ubyte __atomic_fetch_xor_1(in void*, in
ubyte, in int);
        extern pure nothrow @safe ushort __atomic_fetch_xor_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_fetch_xor_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_fetch_xor_8(in void*, in
ulong, in int);
        extern pure nothrow @safe void __atomic_fetch_or();
        extern pure nothrow @safe ubyte __atomic_fetch_or_1(in void*, in ubyte,
in int);
        extern pure nothrow @safe ushort __atomic_fetch_or_2(in void*, in
ushort, in int);
        extern pure nothrow @safe uint __atomic_fetch_or_4(in void*, in uint,
in int);
        extern pure nothrow @safe ulong __atomic_fetch_or_8(in void*, in ulong,
in int);
        extern pure nothrow @safe bool __atomic_always_lock_free(in ulong, in
void*);
        extern pure nothrow @safe bool __atomic_is_lock_free(in ulong, in
void*);
        extern pure nothrow @safe void __atomic_thread_fence(in int);
        extern pure nothrow @safe void __atomic_signal_fence(in int);
}

-- 
Configure bugmail: http://bugzilla.gdcproject.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.


More information about the D.gnu mailing list