Re: [PATCH] PR60092, add C11 aligned_alloc handling
On Thu, Feb 6, 2014 at 2:26 PM, Richard Biener rguent...@suse.de wrote: This adds a builtin for C11 aligned_alloc and support for it in the alias and alignment tracking machinery. Bootstrap and regtest in progress on x86_64-unknown-linux-gnu. Ok for trunk? Ping. Thanks, Richard. 2014-02-06 Richard Biener rguent...@suse.de PR middle-end/60092 * builtins.def (DEF_C11_BUILTIN): Add. (BUILT_IN_ALIGNED_ALLOC): Likewise. * coretypes.h (enum function_class): Add function_c11_misc. * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle BUILT_IN_ALIGNED_ALLOC like BUILT_IN_MALLOC. (call_may_clobber_ref_p_1): Likewise. * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. (mark_all_reaching_defs_necessary_1): Likewise. (propagate_necessity): Likewise. (eliminate_unnecessary_stmts): Likewise. * tree-ssa-ccp.c (evaluate_stmt): Handle BUILT_IN_ALIGNED_ALLOC. ada/ * gcc-interface/utils.c: Define flag_isoc11. lto/ * lto-lang.c: Define flag_isoc11. * gcc.dg/tree-ssa/alias-32.c: New testcase. * gcc.dg/vect/pr60092.c: Likewise. Index: trunk/gcc/builtins.def === *** trunk.orig/gcc/builtins.def 2014-02-06 12:46:01.085000256 +0100 --- trunk/gcc/builtins.def 2014-02-06 13:13:06.499888349 +0100 *** along with GCC; see the file COPYING3. *** 111,116 --- 111,123 DEF_BUILTIN (ENUM, __builtin_ NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true) + /* Like DEF_LIB_BUILTIN, except that the function is only a part of +the standard in C11 or above. */ + #undef DEF_C11_BUILTIN + #define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS) \ + DEF_BUILTIN (ENUM, __builtin_ NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + true, true, !flag_isoc11, ATTRS, targetm.libc_has_function (function_c11_misc), true) + /* Like DEF_C99_BUILTIN, but for complex math functions. */ #undef DEF_C99_COMPL_BUILTIN #define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)\ *** DEF_C99_BUILTIN(BUILT_IN_ACOSH, *** 223,228 --- 230,236 DEF_C99_BUILTIN(BUILT_IN_ACOSHF, acoshf, BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_BUILTIN(BUILT_IN_ACOSHL, acoshl, BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, acosl, BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) + DEF_C11_BUILTIN(BUILT_IN_ALIGNED_ALLOC, aligned_alloc, BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LIST) DEF_LIB_BUILTIN(BUILT_IN_ASIN, asin, BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, asinf, BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_BUILTIN(BUILT_IN_ASINH, asinh, BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING) Index: trunk/gcc/coretypes.h === *** trunk.orig/gcc/coretypes.h 2014-01-07 10:20:00.549453955 +0100 --- trunk/gcc/coretypes.h 2014-02-06 13:10:03.472900950 +0100 *** enum function_class { *** 194,200 function_c94, function_c99_misc, function_c99_math_complex, ! function_sincos }; /* Memory model types for the __atomic* builtins. --- 194,201 function_c94, function_c99_misc, function_c99_math_complex, ! function_sincos, ! function_c11_misc }; /* Memory model types for the __atomic* builtins. Index: trunk/gcc/tree-ssa-alias.c === *** trunk.orig/gcc/tree-ssa-alias.c 2014-02-06 12:43:34.450010352 +0100 --- trunk/gcc/tree-ssa-alias.c 2014-02-06 13:14:08.669884068 +0100 *** ref_maybe_used_by_call_p_1 (gimple call, *** 1516,1521 --- 1516,1522 case BUILT_IN_FREE: case BUILT_IN_MALLOC: case BUILT_IN_POSIX_MEMALIGN: + case BUILT_IN_ALIGNED_ALLOC: case BUILT_IN_CALLOC: case BUILT_IN_ALLOCA: case BUILT_IN_ALLOCA_WITH_ALIGN: *** call_may_clobber_ref_p_1 (gimple call, a *** 1826,1831 --- 1827,1833 /* Allocating memory does not have any side-effects apart from being the definition point for the pointer. */ case BUILT_IN_MALLOC: + case BUILT_IN_ALIGNED_ALLOC: case BUILT_IN_CALLOC: case BUILT_IN_STRDUP: case BUILT_IN_STRNDUP: Index: trunk/gcc/tree-ssa-dce.c === *** trunk.orig/gcc/tree-ssa-dce.c 2014-01-07 10:20:02.520453869 +0100 --- trunk/gcc/tree-ssa-dce.c2014-02-06 13:16:20.570874987 +0100 ***
Re: [PATCH] PR60092, add C11 aligned_alloc handling
On Mon, Apr 28, 2014 at 01:52:08PM +0200, Richard Biener wrote: On Thu, Feb 6, 2014 at 2:26 PM, Richard Biener rguent...@suse.de wrote: This adds a builtin for C11 aligned_alloc and support for it in the alias and alignment tracking machinery. Bootstrap and regtest in progress on x86_64-unknown-linux-gnu. Ok for trunk? Ping. Ok, thanks. 2014-02-06 Richard Biener rguent...@suse.de PR middle-end/60092 * builtins.def (DEF_C11_BUILTIN): Add. (BUILT_IN_ALIGNED_ALLOC): Likewise. * coretypes.h (enum function_class): Add function_c11_misc. * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle BUILT_IN_ALIGNED_ALLOC like BUILT_IN_MALLOC. (call_may_clobber_ref_p_1): Likewise. * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. (mark_all_reaching_defs_necessary_1): Likewise. (propagate_necessity): Likewise. (eliminate_unnecessary_stmts): Likewise. * tree-ssa-ccp.c (evaluate_stmt): Handle BUILT_IN_ALIGNED_ALLOC. ada/ * gcc-interface/utils.c: Define flag_isoc11. lto/ * lto-lang.c: Define flag_isoc11. * gcc.dg/tree-ssa/alias-32.c: New testcase. * gcc.dg/vect/pr60092.c: Likewise. Jakub
[PATCH] PR60092, add C11 aligned_alloc handling
This adds a builtin for C11 aligned_alloc and support for it in the alias and alignment tracking machinery. Bootstrap and regtest in progress on x86_64-unknown-linux-gnu. Ok for trunk? Thanks, Richard. 2014-02-06 Richard Biener rguent...@suse.de PR middle-end/60092 * builtins.def (DEF_C11_BUILTIN): Add. (BUILT_IN_ALIGNED_ALLOC): Likewise. * coretypes.h (enum function_class): Add function_c11_misc. * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Handle BUILT_IN_ALIGNED_ALLOC like BUILT_IN_MALLOC. (call_may_clobber_ref_p_1): Likewise. * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise. (mark_all_reaching_defs_necessary_1): Likewise. (propagate_necessity): Likewise. (eliminate_unnecessary_stmts): Likewise. * tree-ssa-ccp.c (evaluate_stmt): Handle BUILT_IN_ALIGNED_ALLOC. ada/ * gcc-interface/utils.c: Define flag_isoc11. lto/ * lto-lang.c: Define flag_isoc11. * gcc.dg/tree-ssa/alias-32.c: New testcase. * gcc.dg/vect/pr60092.c: Likewise. Index: trunk/gcc/builtins.def === *** trunk.orig/gcc/builtins.def 2014-02-06 12:46:01.085000256 +0100 --- trunk/gcc/builtins.def 2014-02-06 13:13:06.499888349 +0100 *** along with GCC; see the file COPYING3. *** 111,116 --- 111,123 DEF_BUILTIN (ENUM, __builtin_ NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ true, true, !flag_isoc99, ATTRS, targetm.libc_has_function (function_c99_misc), true) + /* Like DEF_LIB_BUILTIN, except that the function is only a part of +the standard in C11 or above. */ + #undef DEF_C11_BUILTIN + #define DEF_C11_BUILTIN(ENUM, NAME, TYPE, ATTRS) \ + DEF_BUILTIN (ENUM, __builtin_ NAME, BUILT_IN_NORMAL, TYPE, TYPE, \ + true, true, !flag_isoc11, ATTRS, targetm.libc_has_function (function_c11_misc), true) + /* Like DEF_C99_BUILTIN, but for complex math functions. */ #undef DEF_C99_COMPL_BUILTIN #define DEF_C99_COMPL_BUILTIN(ENUM, NAME, TYPE, ATTRS)\ *** DEF_C99_BUILTIN(BUILT_IN_ACOSH, *** 223,228 --- 230,236 DEF_C99_BUILTIN(BUILT_IN_ACOSHF, acoshf, BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_BUILTIN(BUILT_IN_ACOSHL, acoshl, BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, acosl, BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) + DEF_C11_BUILTIN(BUILT_IN_ALIGNED_ALLOC, aligned_alloc, BT_FN_PTR_SIZE_SIZE, ATTR_MALLOC_NOTHROW_LIST) DEF_LIB_BUILTIN(BUILT_IN_ASIN, asin, BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, asinf, BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO) DEF_C99_BUILTIN(BUILT_IN_ASINH, asinh, BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING) Index: trunk/gcc/coretypes.h === *** trunk.orig/gcc/coretypes.h 2014-01-07 10:20:00.549453955 +0100 --- trunk/gcc/coretypes.h 2014-02-06 13:10:03.472900950 +0100 *** enum function_class { *** 194,200 function_c94, function_c99_misc, function_c99_math_complex, ! function_sincos }; /* Memory model types for the __atomic* builtins. --- 194,201 function_c94, function_c99_misc, function_c99_math_complex, ! function_sincos, ! function_c11_misc }; /* Memory model types for the __atomic* builtins. Index: trunk/gcc/tree-ssa-alias.c === *** trunk.orig/gcc/tree-ssa-alias.c 2014-02-06 12:43:34.450010352 +0100 --- trunk/gcc/tree-ssa-alias.c 2014-02-06 13:14:08.669884068 +0100 *** ref_maybe_used_by_call_p_1 (gimple call, *** 1516,1521 --- 1516,1522 case BUILT_IN_FREE: case BUILT_IN_MALLOC: case BUILT_IN_POSIX_MEMALIGN: + case BUILT_IN_ALIGNED_ALLOC: case BUILT_IN_CALLOC: case BUILT_IN_ALLOCA: case BUILT_IN_ALLOCA_WITH_ALIGN: *** call_may_clobber_ref_p_1 (gimple call, a *** 1826,1831 --- 1827,1833 /* Allocating memory does not have any side-effects apart from being the definition point for the pointer. */ case BUILT_IN_MALLOC: + case BUILT_IN_ALIGNED_ALLOC: case BUILT_IN_CALLOC: case BUILT_IN_STRDUP: case BUILT_IN_STRNDUP: Index: trunk/gcc/tree-ssa-dce.c === *** trunk.orig/gcc/tree-ssa-dce.c 2014-01-07 10:20:02.520453869 +0100 --- trunk/gcc/tree-ssa-dce.c2014-02-06 13:16:20.570874987 +0100 *** mark_stmt_if_obviously_necessary (gimple *** 231,236 --- 231,237 switch (DECL_FUNCTION_CODE (callee)) { case BUILT_IN_MALLOC: + case