OSDN Git Service

Fix PR target/42093
authorramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Dec 2009 16:36:40 +0000 (16:36 +0000)
committerramana <ramana@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Dec 2009 16:36:40 +0000 (16:36 +0000)
2009-12-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        PR target/42093
        * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Fix macro usage
        to TARGET_THUMB1.
        (CASE_VECTOR_SHORTEN_MODE): Allow signed offsets
        only for TARGET_THUMB1.

2009-12-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

        PR target/42093
        * gcc.target/arm/pr42093.c: New test.

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

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

index c22b10f..be26088 100644 (file)
@@ -1,3 +1,11 @@
+2009-12-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+
+        PR target/42093
+        * config/arm/arm.h (CASE_VECTOR_PC_RELATIVE): Fix macro usage
+        to TARGET_THUMB1.
+        (CASE_VECTOR_SHORTEN_MODE): Allow signed offsets
+        only for TARGET_THUMB1.
+
 2009-12-23  Ramana Radhakrishnan  <ramrad01@arm.com>
 
        PR target/40670
index 691a860..26ffaf8 100644 (file)
@@ -2118,11 +2118,11 @@ typedef struct
 #define CASE_VECTOR_MODE Pmode
 
 #define CASE_VECTOR_PC_RELATIVE (TARGET_THUMB2                         \
-                                || (TARGET_THUMB                       \
+                                || (TARGET_THUMB1                      \
                                     && (optimize_size || flag_pic)))
 
 #define CASE_VECTOR_SHORTEN_MODE(min, max, body)                       \
-  (TARGET_THUMB                                                                \
+  (TARGET_THUMB1                                                       \
    ? (min >= 0 && max < 512                                            \
       ? (ADDR_DIFF_VEC_FLAGS (body).offset_unsigned = 1, QImode)       \
       : min >= -256 && max < 256                                       \
index b571757..da6d3b1 100644 (file)
@@ -1,3 +1,8 @@
+2009-12-23  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
+
+        PR target/42093
+        * gcc.target/arm/pr42093.c: New test.
+
 2009-12-23  Ramana Radhakrishnan  <ramrad01@arm.com>
 
        PR target/40670
diff --git a/gcc/testsuite/gcc.target/arm/pr42093.c b/gcc/testsuite/gcc.target/arm/pr42093.c
new file mode 100644 (file)
index 0000000..5d43982
--- /dev/null
@@ -0,0 +1,51 @@
+/* { dg-options "-mthumb -O2" }  */
+/* { dg-require-effective-target arm_thumb2_ok } */
+/* { dg-final { scan-assembler-not "tbb" } } */
+/* { dg-final { scan-assembler-not "tbh" } } */
+
+#include <stdlib.h>
+
+int gbl;
+int foo (int *buf, int n)
+{
+  int ctr = 0;
+  int c;
+  while (1)
+    {
+      c = buf[ctr++];
+      switch (c)
+        {
+        case '\n':
+          gbl++;
+          break;
+
+        case ' ': case '\t' : case '\f' : case '\r':
+          break;
+
+        case ';':
+          do
+            c = buf [ctr++];
+          while (c != '\n' && c != -1);
+          gbl++;
+          break;
+
+        case '/':
+          {
+            int prevc;
+            c = buf [ctr++];
+            if (c != '*')
+              abort ();
+
+            prevc = 0;
+            while ((c = buf[ctr++]) && c != -1)
+              {
+                if (c == '\n')
+                  gbl++;
+              }
+            break;
+          }
+        default:
+          return c;
+        }
+    }
+}