]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix for PR c/57563
authorbviyer <bviyer@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Jun 2013 23:14:12 +0000 (23:14 +0000)
committerbviyer <bviyer@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 10 Jun 2013 23:14:12 +0000 (23:14 +0000)
gcc/c/ChangeLog
+2013-06-10  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       * c-array-notation.c (fix_builtin_array_notation_fn): Fully folded
+       excessive precision expressions in function parameters.  Also removed
+       couple unwanted while statements.
+

gcc/testsuite/ChangeLog
+2013-06-10  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       PR c/57563
+       * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c (main): Fixed a bug
+       in how we check __sec_reduce_mutating function's result.
+

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199925 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/c/ChangeLog
gcc/c/c-array-notation.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/cilk-plus/AN/builtin_fn_mutating.c

index 5fbb31f8aca1dfc768ad4a965aac09123fbe016e..72d182bbae3f87548ce25d500567ef2be7fa3818 100644 (file)
@@ -1,3 +1,9 @@
+2013-06-10  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       * c-array-notation.c (fix_builtin_array_notation_fn): Fully folded
+       excessive precision expressions in function parameters.  Also removed
+       couple unwanted while statements.
+
 2013-06-07  Balaji V. Iyer  <balaji.v.iyer@intel.com>
 
        * c-array-notation.c (expand_array_notation_exprs): Added
index b1040da0cc771c4f40052503e9ac1ac450ceb004..32859691cc328113fcc27a9185ca8af0a169eced 100644 (file)
@@ -143,25 +143,18 @@ fix_builtin_array_notation_fn (tree an_builtin_fn, tree *new_var)
       || an_type == BUILT_IN_CILKPLUS_SEC_REDUCE_MUTATING)
     {
       call_fn = CALL_EXPR_ARG (an_builtin_fn, 2);
-      while (TREE_CODE (call_fn) == CONVERT_EXPR
-            || TREE_CODE (call_fn) == NOP_EXPR)
+      if (TREE_CODE (call_fn) == ADDR_EXPR)
        call_fn = TREE_OPERAND (call_fn, 0);
-      call_fn = TREE_OPERAND (call_fn, 0);
-      
       identity_value = CALL_EXPR_ARG (an_builtin_fn, 0);
-      while (TREE_CODE (identity_value) == CONVERT_EXPR
-            || TREE_CODE (identity_value) == NOP_EXPR)
-       identity_value = TREE_OPERAND (identity_value, 0);
       func_parm = CALL_EXPR_ARG (an_builtin_fn, 1);
     }
   else
     func_parm = CALL_EXPR_ARG (an_builtin_fn, 0);
   
-  while (TREE_CODE (func_parm) == CONVERT_EXPR
-        || TREE_CODE (func_parm) == EXCESS_PRECISION_EXPR
-        || TREE_CODE (func_parm) == NOP_EXPR)
-    func_parm = TREE_OPERAND (func_parm, 0);
-
+  /* Fully fold any EXCESSIVE_PRECISION EXPR that can occur in the function
+     parameter.  */
+  func_parm = c_fully_fold (func_parm, false, NULL);
+  
   location = EXPR_LOCATION (an_builtin_fn);
   
   if (!find_rank (location, an_builtin_fn, an_builtin_fn, true, &rank))
index 8817b27dd2329cf60c46d77e27784834b9a36a78..611404da34fca269d79416484d21906e89ffc9a8 100644 (file)
@@ -1,3 +1,9 @@
+2013-06-10  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       PR c/57563
+       * c-c++-common/cilk-plus/AN/builtin_fn_mutating.c (main): Fixed a bug
+       in how we check __sec_reduce_mutating function's result.        
+
 2013-06-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
            Pat Haugen <pthaugen@us.ibm.com>
            Peter Bergner <bergner@vnet.ibm.com>
index 663556509207ec2980c42badaa45277386a8158f..7c194c2aa205fb8a86ae1f8dc313b7e9785c5a17 100644 (file)
@@ -44,11 +44,11 @@ int main(void)
   max_value = array3[0] * array4[0];
   for (ii = 0; ii < 10; ii++)
     if (array3[ii] * array4[ii] > max_value) {
-      max_value = array3[ii] * array4[ii];
       max_index = ii;
     }
     
-  
+  for (ii = 0; ii < 10; ii++)
+    my_func (&max_value, array3[ii] * array4[ii]);
   
 #if HAVE_IO
   for (ii = 0; ii < 10; ii++)