Hello,__builtin_shuffle with 2 arguments is represented as having 3 arguments, the second being 0, which isn't supported here.
Bootstrap+testsuite on x86_64-unknown-linux-gnu. 2013-11-01 Marc Glisse <marc.gli...@inria.fr> PR c++/58834 gcc/cp/ * pt.c (value_dependent_expression_p): Handle null argument. gcc/testsuite/ * g++.dg/ext/pr58834.C: New file. -- Marc Glisse
Index: gcc/cp/pt.c =================================================================== --- gcc/cp/pt.c (revision 204279) +++ gcc/cp/pt.c (working copy) @@ -20499,21 +20499,21 @@ value_dependent_expression_p (tree expre considered dependent. Other parts of the compiler arrange for an expression with type-dependent subexpressions to have no type, so this function doesn't have to be fully recursive. */ bool type_dependent_expression_p (tree expression) { if (!processing_template_decl) return false; - if (expression == error_mark_node) + if (expression == NULL_TREE || expression == error_mark_node) return false; /* An unresolved name is always dependent. */ if (identifier_p (expression) || TREE_CODE (expression) == USING_DECL) return true; /* Some expression forms are never type-dependent. */ if (TREE_CODE (expression) == PSEUDO_DTOR_EXPR || TREE_CODE (expression) == SIZEOF_EXPR || TREE_CODE (expression) == ALIGNOF_EXPR Index: gcc/testsuite/g++.dg/ext/pr58834.C =================================================================== --- gcc/testsuite/g++.dg/ext/pr58834.C (revision 0) +++ gcc/testsuite/g++.dg/ext/pr58834.C (working copy) @@ -0,0 +1,5 @@ +template<typename> void foo() +{ + int i __attribute__((vector_size(2*sizeof(int)))); + (void) __builtin_shuffle(i, i); +} Property changes on: gcc/testsuite/g++.dg/ext/pr58834.C ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision URL \ No newline at end of property