OSDN Git Service

Fix misoptimization of mask and shift.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Aug 2005 21:43:49 +0000 (21:43 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Aug 2005 21:43:49 +0000 (21:43 +0000)
PR target/21684
* config/mcore/mcore.h (SHIFT_COUNT_TRUNCATED): Define to 0.

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

gcc/ChangeLog
gcc/config/mcore/mcore.h

index 6fa6301..06898fd 100644 (file)
@@ -1,3 +1,9 @@
+2005-08-17  James E Wilson  <wilson@specifix.com>
+           Kevin Winchester  <winchester@amirix.com>
+
+       PR target/21684
+       * config/mcore/mcore.h (SHIFT_COUNT_TRUNCATED): Define to 0.
+
 2005-08-17  Uros Bizjak  <uros@kss-loka.si>
 
        PR target/23268
index f0afa88..d9960dc 100644 (file)
@@ -820,12 +820,10 @@ extern const enum reg_class reg_class_from_letter[];
 /* Nonzero if access to memory by bytes is slow and undesirable.  */
 #define SLOW_BYTE_ACCESS TARGET_SLOW_BYTES
 
-/* Immediate shift counts are truncated by the output routines (or was it
-   the assembler?).  Shift counts in a register are truncated by ARM.  Note
-   that the native compiler puts too large (> 32) immediate shift counts
-   into a register and shifts by the register, letting the ARM decide what
-   to do instead of doing that itself.  */
-#define SHIFT_COUNT_TRUNCATED 1
+/* Shift counts are truncated to 6-bits (0 to 63) instead of the expected
+   5-bits, so we can not define SHIFT_COUNT_TRUNCATED to true for this
+   target.  */
+#define SHIFT_COUNT_TRUNCATED 0
 
 /* All integers have the same format so truncation is easy.  */
 #define TRULY_NOOP_TRUNCATION(OUTPREC,INPREC)  1