https://gcc.gnu.org/g:20fe3e21e824daeb20679a24d3de78969c17710c

commit 20fe3e21e824daeb20679a24d3de78969c17710c
Author: Christoph Müllner <christoph.muell...@vrull.eu>
Date:   Mon Jul 15 23:42:39 2024 +0200

    Revert "RISC-V: Attribute parser: Use alloca() instead of new + 
std::unique_ptr"
    
    This reverts commit 5040c273484d7123a40a99cdeb434cecbd17a2e9.
    
    (cherry picked from commit eb0c163aada970b8351067b17121f013fc58dbc9)

Diff:
---
 gcc/config/riscv/riscv-target-attr.cc | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/gcc/config/riscv/riscv-target-attr.cc 
b/gcc/config/riscv/riscv-target-attr.cc
index 57235c9c0a7e..1645a6692177 100644
--- a/gcc/config/riscv/riscv-target-attr.cc
+++ b/gcc/config/riscv/riscv-target-attr.cc
@@ -101,7 +101,8 @@ riscv_target_attr_parser::parse_arch (const char *str)
     {
       /* Parsing the extension list like "+<ext>[,+<ext>]*".  */
       size_t len = strlen (str);
-      char *str_to_check = (char *) alloca (len + 1);
+      std::unique_ptr<char[]> buf (new char[len+1]);
+      char *str_to_check = buf.get ();
       strcpy (str_to_check, str);
       const char *token = strtok_r (str_to_check, ",", &str_to_check);
       const char *local_arch_str = global_options.x_riscv_arch_string;
@@ -253,7 +254,8 @@ riscv_process_one_target_attr (char *arg_str,
       return false;
     }
 
-  char *str_to_check = (char *) alloca (len + 1);
+  std::unique_ptr<char[]> buf (new char[len+1]);
+  char *str_to_check = buf.get();
   strcpy (str_to_check, arg_str);
 
   char *arg = strchr (str_to_check, '=');
@@ -339,7 +341,8 @@ riscv_process_target_attr (tree args, location_t loc)
       return false;
     }
 
-  char *str_to_check = (char *) alloca (len + 1);
+  std::unique_ptr<char[]> buf (new char[len+1]);
+  char *str_to_check = buf.get ();
   strcpy (str_to_check, TREE_STRING_POINTER (args));
 
   /* Used to catch empty spaces between semi-colons i.e.

Reply via email to