Move c_getstr to fold-const.c
authorRichard Sandiford <richard.sandiford@arm.com>
Sat, 7 Nov 2015 10:01:52 +0000 (10:01 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sat, 7 Nov 2015 10:01:52 +0000 (10:01 +0000)
Upcoming patches to fold-const-call.c want to use c_getstr, which is
currently defined in builtins.c.  The function doesn't really do anything
related to built-ins, and I'd rather not make fold-const-call.c depend
on builtins.c and builtins.c depend on fold-const-call.c, so this patch
moves the function to fold-const.c instead.

Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi.

gcc/
* builtins.h (c_getstr): Move to...
* fold-const.h (c_getstr): ...here.
* builtins.c (c_getstr): Move to...
* fold-const.c (c_getstr): ...here.

From-SVN: r229919

gcc/ChangeLog
gcc/builtins.c
gcc/builtins.h
gcc/fold-const.c
gcc/fold-const.h

index 41ed6307a37204d8243d31a6294d02b3c6e5b3ba..ab06aab2204bfc78f716d34e21224dcde34628f0 100644 (file)
@@ -1,3 +1,10 @@
+2015-11-07  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * builtins.h (c_getstr): Move to...
+       * fold-const.h (c_getstr): ...here.
+       * builtins.c (c_getstr): Move to...
+       * fold-const.c (c_getstr): ...here.
+
 2015-11-07  Richard Sandiford  <richard.sandiford@arm.com>
 
        * builtins.def (BUILTIN_RINT, BUILTIN_RINTF, BUILTIN_RINTL): Use
index 8f0717c7e1b5498bc77d0f3bec9051205fb7dbbf..69c56e75cd571bd154db884028d51c260b58885f 100644 (file)
@@ -616,27 +616,6 @@ c_strlen (tree src, int only_value)
   return ssize_int (strlen (ptr + offset));
 }
 
-/* Return a char pointer for a C string if it is a string constant
-   or sum of string constant and integer constant.  */
-
-const char *
-c_getstr (tree src)
-{
-  tree offset_node;
-
-  src = string_constant (src, &offset_node);
-  if (src == 0)
-    return 0;
-
-  if (offset_node == 0)
-    return TREE_STRING_POINTER (src);
-  else if (!tree_fits_uhwi_p (offset_node)
-          || compare_tree_int (offset_node, TREE_STRING_LENGTH (src) - 1) > 0)
-    return 0;
-
-  return TREE_STRING_POINTER (src) + tree_to_uhwi (offset_node);
-}
-
 /* Return a constant integer corresponding to target reading
    GET_MODE_BITSIZE (MODE) bits from string constant STR.  */
 
index cce9e7507a287a58590e62162c4fde03815013bb..b0396322fa0b1c10b9e8b5d7c351efa3a6c3ba67 100644 (file)
@@ -87,7 +87,6 @@ extern bool is_simple_builtin (tree);
 extern bool is_inexpensive_builtin (tree);
 
 extern bool readonly_data_expr (tree exp);
-extern const char *c_getstr (tree);
 extern bool init_target_chars (void);
 extern unsigned HOST_WIDE_INT target_newline;
 extern unsigned HOST_WIDE_INT target_percent;
index fb613daca9a28b6d9aa517c64a9a37ef989c57e0..ae284452920bd450db2bc16d9ce59c21a4020228 100644 (file)
@@ -14398,3 +14398,24 @@ fold_build_pointer_plus_hwi_loc (location_t loc, tree ptr, HOST_WIDE_INT off)
   return fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (ptr),
                          ptr, size_int (off));
 }
+
+/* Return a char pointer for a C string if it is a string constant
+   or sum of string constant and integer constant.  */
+
+const char *
+c_getstr (tree src)
+{
+  tree offset_node;
+
+  src = string_constant (src, &offset_node);
+  if (src == 0)
+    return 0;
+
+  if (offset_node == 0)
+    return TREE_STRING_POINTER (src);
+  else if (!tree_fits_uhwi_p (offset_node)
+          || compare_tree_int (offset_node, TREE_STRING_LENGTH (src) - 1) > 0)
+    return 0;
+
+  return TREE_STRING_POINTER (src) + tree_to_uhwi (offset_node);
+}
index 97d18cf0e22a31f70131c3d29f940e925e4e6f64..94a21b7652ae4f90c701454a6a0da057a54f8e90 100644 (file)
@@ -180,6 +180,7 @@ extern tree exact_inverse (tree, tree);
 extern tree const_unop (enum tree_code, tree, tree);
 extern tree const_binop (enum tree_code, tree, tree, tree);
 extern bool negate_mathfn_p (enum built_in_function);
+extern const char *c_getstr (tree);
 
 /* Return OFF converted to a pointer offset type suitable as offset for
    POINTER_PLUS_EXPR.  Use location LOC for this conversion.  */