OSDN Git Service

2004-09-07 Frank Ch. Eigler <fche@redhat.com>
[pf3gnuchains/gcc-fork.git] / gcc / builtins.c
index 97800bf..6d4cd8f 100644 (file)
@@ -4349,9 +4349,17 @@ std_gimplify_va_arg_expr (tree valist, tree type, tree *pre_p, tree *post_p)
   addr = fold_convert (build_pointer_type (type), addr);
 
   if (indirect)
-    addr = build_fold_indirect_ref (addr);
+    {
+      addr = build_fold_indirect_ref (addr);
+      if (flag_mudflap) /* Don't instrument va_arg INDIRECT_REF.  */
+        mf_mark (addr);
+    }
+
+  addr = build_fold_indirect_ref (addr);
+  if (flag_mudflap) /* Don't instrument va_arg INDIRECT_REF.  */
+    mf_mark (addr);
 
-  return build_fold_indirect_ref (addr);
+  return addr;
 }
 
 /* Return a dummy expression of type TYPE in order to keep going after an
@@ -7210,12 +7218,11 @@ fold_builtin_strchr (tree exp, bool actually_strrchr)
          r = actually_strrchr ? strrchr (p1, c) : strchr (p1, c);
 
          if (r == NULL)
-           return fold_convert (TREE_TYPE (s1), integer_zero_node);
+           return build_int_cst (TREE_TYPE (s1), 0);
 
          /* Return an offset into the constant string argument.  */
          return fold (build2 (PLUS_EXPR, TREE_TYPE (s1),
-                              s1, fold_convert (TREE_TYPE (s1),
-                                                ssize_int (r - p1))));
+                              s1, build_int_cst (TREE_TYPE (s1), r - p1)));
        }
 
       if (actually_strrchr)
@@ -8645,12 +8652,11 @@ simplify_builtin_strstr (tree arglist)
          const char *r = strstr (p1, p2);
 
          if (r == NULL)
-           return fold_convert (TREE_TYPE (s1), integer_zero_node);
+           return build_int_cst (TREE_TYPE (s1), 0);
 
          /* Return an offset into the constant string argument.  */
          return fold (build2 (PLUS_EXPR, TREE_TYPE (s1),
-                              s1, fold_convert (TREE_TYPE (s1),
-                                                ssize_int (r - p1))));
+                              s1, build_int_cst (TREE_TYPE (s1), r - p1)));
        }
 
       if (p2[0] == '\0')
@@ -8714,12 +8720,11 @@ simplify_builtin_strchr (tree arglist)
          r = strchr (p1, c);
 
          if (r == NULL)
-           return fold_convert (TREE_TYPE (s1), integer_zero_node);
+           return build_int_cst (TREE_TYPE (s1), 0);
 
          /* Return an offset into the constant string argument.  */
          return fold (build2 (PLUS_EXPR, TREE_TYPE (s1),
-                              s1, fold_convert (TREE_TYPE (s1),
-                                                ssize_int (r - p1))));
+                              s1, build_int_cst (TREE_TYPE (s1), r - p1)));
        }
 
       /* FIXME: Should use here strchrM optab so that ports can optimize
@@ -8771,12 +8776,11 @@ simplify_builtin_strrchr (tree arglist)
          r = strrchr (p1, c);
 
          if (r == NULL)
-           return fold_convert (TREE_TYPE (s1), integer_zero_node);
+           return build_int_cst (TREE_TYPE (s1), 0);
 
          /* Return an offset into the constant string argument.  */
          return fold (build2 (PLUS_EXPR, TREE_TYPE (s1),
-                              s1, fold_convert (TREE_TYPE (s1),
-                                                ssize_int (r - p1))));
+                              s1, build_int_cst (TREE_TYPE (s1), r - p1)));
        }
 
       if (! integer_zerop (s2))
@@ -8829,12 +8833,11 @@ simplify_builtin_strpbrk (tree arglist)
          const char *r = strpbrk (p1, p2);
 
          if (r == NULL)
-           return fold_convert (TREE_TYPE (s1), integer_zero_node);
+           return build_int_cst (TREE_TYPE (s1), 0);
 
          /* Return an offset into the constant string argument.  */
          return fold (build2 (PLUS_EXPR, TREE_TYPE (s1),
-                              s1, fold_convert (TREE_TYPE (s1),
-                                                ssize_int (r - p1))));
+                              s1, build_int_cst (TREE_TYPE (s1), r - p1)));
        }
 
       if (p2[0] == '\0')