http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50459
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mpolacek at gcc dot gnu.org --- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- The problem on the C side of things is that the values of the enum are represented by CONST_DECL nodes and check_user_alignment doesn't look through it. So maybe something like the following? (Tested x86_64-linux, no regressions.) diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index 1d56bc0..d70ca3d 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -7418,6 +7418,13 @@ check_user_alignment (const_tree align, bool allow_zero) { int i; + if (TREE_CODE (align) == IDENTIFIER_NODE) + { + tree t = lookup_name (CONST_CAST_TREE (align)); + if (t && TREE_CODE (t) == CONST_DECL) + align = DECL_INITIAL (t); + } + if (TREE_CODE (align) != INTEGER_CST || !INTEGRAL_TYPE_P (TREE_TYPE (align))) {