On Sat, Nov 7, 2015 at 5:31 AM, Richard Sandiford <richard.sandif...@arm.com> wrote: > This patch short-circuits the builtins.c expansion code for a particular > gimple call if: > > - the function has an associated internal function > - the target implements that internal function > - the call has no side effects > > This allows a later patch to remove the builtins.c code, once calls with > side effects have been handled. > > Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. > OK to install? > > Thanks, > Richard > > > gcc/ > * builtins.h (called_as_built_in): Declare. > * builtins.c (called_as_built_in): Make external. > * internal-fn.h (expand_internal_call): Define a variant that > specifies the internal function explicitly. > * internal-fn.c (expand_load_lanes_optab_fn) > (expand_store_lanes_optab_fn, expand_ANNOTATE, expand_GOMP_SIMD_LANE) > (expand_GOMP_SIMD_VF, expand_GOMP_SIMD_LAST_LANE) > (expand_GOMP_SIMD_ORDERED_START, expand_GOMP_SIMD_ORDERED_END) > (expand_UBSAN_NULL, expand_UBSAN_BOUNDS, expand_UBSAN_VPTR) > (expand_UBSAN_OBJECT_SIZE, expand_ASAN_CHECK, expand_TSAN_FUNC_EXIT) > (expand_UBSAN_CHECK_ADD, expand_UBSAN_CHECK_SUB) > (expand_UBSAN_CHECK_MUL, expand_ADD_OVERFLOW, expand_SUB_OVERFLOW) > (expand_MUL_OVERFLOW, expand_LOOP_VECTORIZED) > (expand_mask_load_optab_fn, expand_mask_store_optab_fn) > (expand_ABNORMAL_DISPATCHER, expand_BUILTIN_EXPECT, expand_VA_ARG) > (expand_UNIQUE, expand_GOACC_DIM_SIZE, expand_GOACC_DIM_POS) > (expand_GOACC_LOOP, expand_GOACC_REDUCTION, expand_direct_optab_fn) > (expand_unary_optab_fn, expand_binary_optab_fn): Add an internal_fn > argument. > (internal_fn_expanders): Update prototype. > (expand_internal_call): Define a variant that specifies the > internal function explicitly. Use it to implement the previous > interface. > * cfgexpand.c (expand_call_stmt): Try to expand calls to built-in > functions as calls to internal functions. >
This caused: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68488 H.J.