re PR target/89093 (C++ exception handling clobbers d8 VFP register)
authorJakub Jelinek <jakub@redhat.com>
Sat, 13 Apr 2019 15:20:46 +0000 (17:20 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 13 Apr 2019 15:20:46 +0000 (17:20 +0200)
PR target/89093
* config/arm/arm.c (arm_valid_target_attribute_rec): Use strcmp
instead of strncmp when checking for thumb and arm.  Formatting fixes.

* gcc.target/arm/pr89093.c: New test.

From-SVN: r270339

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr89093.c [new file with mode: 0644]

index 83e595453be39bdc4bc88a8b2391fec03a46659d..6a394b8ce0fff06e48067d7789f60df4d94c2032 100644 (file)
@@ -1,3 +1,9 @@
+2019-04-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/89093
+       * config/arm/arm.c (arm_valid_target_attribute_rec): Use strcmp
+       instead of strncmp when checking for thumb and arm.  Formatting fixes.
+
 2019-04-12  Iain Buclaw  <ibuclaw@gdcproject.org>
 
        * doc/install.texi: Document --with-target-system-zlib.
index 12ccb7d69018e7aa23cb0fbd3a03d98f92cd4769..9cda96ae84a2749105dd456d67726071368f2591 100644 (file)
@@ -30874,16 +30874,16 @@ arm_valid_target_attribute_rec (tree args, struct gcc_options *opts)
       while (ISSPACE (*q)) ++q;
 
       argstr = NULL;
-      if (!strncmp (q, "thumb", 5))
-         opts->x_target_flags |= MASK_THUMB;
+      if (!strcmp (q, "thumb"))
+       opts->x_target_flags |= MASK_THUMB;
 
-      else if (!strncmp (q, "arm", 3))
-         opts->x_target_flags &= ~MASK_THUMB;
+      else if (!strcmp (q, "arm"))
+       opts->x_target_flags &= ~MASK_THUMB;
 
       else if (!strncmp (q, "fpu=", 4))
        {
          int fpu_index;
-         if (! opt_enum_arg_to_value (OPT_mfpu_, q+4,
+         if (! opt_enum_arg_to_value (OPT_mfpu_, q + 4,
                                       &fpu_index, CL_TARGET))
            {
              error ("invalid fpu for target attribute or pragma %qs", q);
@@ -30901,7 +30901,7 @@ arm_valid_target_attribute_rec (tree args, struct gcc_options *opts)
        }
       else if (!strncmp (q, "arch=", 5))
        {
-         char* arch = q+5;
+         char *arch = q + 5;
          const arch_option *arm_selected_arch
             = arm_parse_arch_option_name (all_architectures, "arch", arch);
 
index 2951fc821672b9e3801ff34a867c4ec94441a677..1f3dd43cb881da3c10e160aba87f6f753326b1a8 100644 (file)
@@ -1,3 +1,8 @@
+2019-04-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/89093
+       * gcc.target/arm/pr89093.c: New test.
+
 2019-04-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/89933
diff --git a/gcc/testsuite/gcc.target/arm/pr89093.c b/gcc/testsuite/gcc.target/arm/pr89093.c
new file mode 100644 (file)
index 0000000..2efefcf
--- /dev/null
@@ -0,0 +1,7 @@
+/* PR target/89093 */
+/* { dg-do compile } */
+
+__attribute__((target ("arm.foobar"))) void f1 (void) {} /* { dg-error "unknown target attribute or pragma 'arm.foobar'" } */
+__attribute__((target ("thumbozoo1"))) void f2 (void) {} /* { dg-error "unknown target attribute or pragma 'thumbozoo1'" } */
+__attribute__((target ("arm,thumbique"))) void f3 (void) {} /* { dg-error "unknown target attribute or pragma 'thumbique'" } */
+__attribute__((target ("thumb981,arm"))) void f4 (void) {} /* { dg-error "unknown target attribute or pragma 'thumb981'" } */