Commit 6d6efbb3 by Balaji V. Iyer Committed by Balaji V. Iyer

+2013-06-04 Balaji V.

+2013-06-04  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       * c-typeck.c (convert_arguments): Moved checking of builtin cilkplus
+       reduction functions outside the for-loop.  Also, added a check if the
+       fundecl is non-NULL.
+

+2013-06-05  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       PR C/57457
+       * c-c++-common/cilk-plus/AN/pr57457.c: New test.
+       * c-c++-common/cilk-plus/AN/pr57457-2.c: Likewise.
+

From-SVN: r199709
parent 0d471c50
2013-06-05 Balaji V. Iyer <balaji.v.iyer@intel.com>
* c-typeck.c (convert_arguments): Moved checking of builtin cilkplus
reduction functions outside the for-loop. Added a check if the fundecl
is non-NULL. Finally, removed an unwanted if-statement, and made the
body unconditional.
2013-06-03 Balaji V. Iyer <balaji.v.iyer@intel.com> 2013-06-03 Balaji V. Iyer <balaji.v.iyer@intel.com>
* c-typeck.c (c_finish_if_stmt): Added a check to see if the rank of the * c-typeck.c (c_finish_if_stmt): Added a check to see if the rank of the
......
...@@ -2942,6 +2942,8 @@ convert_arguments (tree typelist, vec<tree, va_gc> *values, ...@@ -2942,6 +2942,8 @@ convert_arguments (tree typelist, vec<tree, va_gc> *values,
break; break;
} }
} }
if (flag_enable_cilkplus && fundecl && is_cilkplus_reduce_builtin (fundecl))
return vec_safe_length (values);
/* Scan the given expressions and types, producing individual /* Scan the given expressions and types, producing individual
converted arguments. */ converted arguments. */
...@@ -2959,17 +2961,6 @@ convert_arguments (tree typelist, vec<tree, va_gc> *values, ...@@ -2959,17 +2961,6 @@ convert_arguments (tree typelist, vec<tree, va_gc> *values,
bool npc; bool npc;
tree parmval; tree parmval;
// FIXME: I assume this code is here to handle the overloaded
// behavior of the __sec_reduce* builtins, and avoid giving
// argument mismatch warnings/errors. We should probably handle
// this with the resolve_overloaded_builtin infrastructure.
/* If the function call is a builtin function call, then we do not
worry about it since we break them up into its equivalent later and
we do the appropriate checks there. */
if (flag_enable_cilkplus
&& is_cilkplus_reduce_builtin (fundecl))
continue;
if (type == void_type_node) if (type == void_type_node)
{ {
if (selector) if (selector)
...@@ -3207,16 +3198,10 @@ convert_arguments (tree typelist, vec<tree, va_gc> *values, ...@@ -3207,16 +3198,10 @@ convert_arguments (tree typelist, vec<tree, va_gc> *values,
if (typetail != 0 && TREE_VALUE (typetail) != void_type_node) if (typetail != 0 && TREE_VALUE (typetail) != void_type_node)
{ {
/* If array notation is used and Cilk Plus is enabled, then we do not error_at (input_location,
worry about this error now. We will handle them in a later place. */ "too few arguments to function %qE", function);
if (!flag_enable_cilkplus inform_declaration (fundecl);
|| !is_cilkplus_reduce_builtin (fundecl)) return -1;
{
error_at (input_location,
"too few arguments to function %qE", function);
inform_declaration (fundecl);
return -1;
}
} }
return error_args ? -1 : (int) parmnum; return error_args ? -1 : (int) parmnum;
......
2013-06-05 Balaji V. Iyer <balaji.v.iyer@intel.com>
PR C/57457
* c-c++-common/cilk-plus/AN/pr57457.c: New test.
* c-c++-common/cilk-plus/AN/pr57457-2.c: Likewise.
2013-06-05 Paolo Carlini <paolo.carlini@oracle.com> 2013-06-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51908 PR c++/51908
......
/* { dg-do compile } */
/* { dg-options "-fcilkplus" } */
/* Test-case contains no array notation but is compiled with -fcilkplus.
It will still print the too few arguments func, thereby saying the
if-statement after the for-loop to check for !flag_enable_cilkplus ||
!is_cilkplus_reduce_function (fundecl) is not valid is always taken. */
int func (int, int); /* { dg-message "declared here" } */
int main (void)
{
int a = 5, b = 2;
return func (a); /* { dg-error "too few arguments to function" } */
}
/* { dg-do compile } */
/* { dg-options "-fcilkplus" } */
/* This test has no array notation components in it and thus should compile
fine without crashing. */
typedef unsigned int size_t;
typedef int (*__compar_fn_t) (const void *, const void *);
extern void *bsearch (const void *__key, const void *__base,
size_t __nmemb, size_t __size, __compar_fn_t
__compar)
__attribute__ ((__nonnull__ (1, 2, 5))) ;
extern __inline __attribute__ ((__gnu_inline__)) void *
bsearch (const void *__key, const void *__base, size_t __nmemb, size_t
__size,
__compar_fn_t __compar)
{
size_t __l, __u, __idx;
const void *__p;
int __comparison;
__l = 0;
__u = __nmemb;
while (__l < __u)
{
__idx = (__l + __u) / 2;
__p = (void *) (((const char *) __base) +
(__idx * __size));
__comparison = (*__compar) (__key,
__p);
if (__comparison < 0)
__u = __idx;
else if (__comparison > 0)
__l = __idx + 1;
else
return (void *)
__p;
}
return ((void *)0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment