]> gcc.gnu.org Git - gcc.git/commitdiff
re PR bootstrap/48230 (bootstrapping gcc-4.6.0-RC-20110321 fails for lm32-rtems*)
authorJon Beniston <jon@beniston.com>
Sun, 2 Mar 2014 19:58:24 +0000 (19:58 +0000)
committerJon Beniston <jbeniston@gcc.gnu.org>
Sun, 2 Mar 2014 19:58:24 +0000 (19:58 +0000)
PR bootstrap/48230
PR bootstrap/50927
PR bootstrap/52466
PR target/46898
* config/lm32/lm32.c (lm32_legitimate_constant_p): Remove, as incorrect.
  (TARGET_LEGITIMATE_CONSTANT_P): Undefine, as not needed.
* config/lm32/lm32.md (movsi_insn): Add 32-bit immediate support.
(simple_return, *simple_return): New patterns
* config/lm32/predicates.md (movsi_rhs_operand): Remove as obsolete.
* configure.ac (force_sjlj_exceptions): Force sjlj exceptions for lm32.

From-SVN: r208260

gcc/ChangeLog
gcc/config/lm32/lm32.c
gcc/config/lm32/lm32.md
gcc/config/lm32/predicates.md
gcc/configure.ac

index f9a644a2d9b0c3d0db14f8f237eccaaa75f011e5..4224c014c21f2efc07b3233f5d504470ee325c8c 100644 (file)
@@ -1,3 +1,16 @@
+2014-03-02  Jon Beniston  <jon@beniston.com>
+
+       PR bootstrap/48230
+       PR bootstrap/50927
+       PR bootstrap/52466
+       PR target/46898
+       * config/lm32/lm32.c (lm32_legitimate_constant_p): Remove, as incorrect.
+         (TARGET_LEGITIMATE_CONSTANT_P): Undefine, as not needed.  
+       * config/lm32/lm32.md (movsi_insn): Add 32-bit immediate support.
+       (simple_return, *simple_return): New patterns     
+       * config/lm32/predicates.md (movsi_rhs_operand): Remove as obsolete.
+       * configure.ac (force_sjlj_exceptions): Force sjlj exceptions for lm32.
+
 2014-03-01  Paolo Carlini  <paolo.carlini@oracle.com>
 
        * dwarf2out.c (gen_subprogram_die): Tidy.
index ab0c7f71ca6ac06a9e4ee32311083da8ea61685a..4f6aba1e7645502c28a978cfe0e7125b1b82b6d6 100644 (file)
@@ -82,7 +82,6 @@ static rtx lm32_function_arg (cumulative_args_t cum,
 static void lm32_function_arg_advance (cumulative_args_t cum,
                                       enum machine_mode mode,
                                       const_tree type, bool named);
-static bool lm32_legitimate_constant_p (enum machine_mode, rtx);
 
 #undef TARGET_OPTION_OVERRIDE
 #define TARGET_OPTION_OVERRIDE lm32_option_override
@@ -110,8 +109,6 @@ static bool lm32_legitimate_constant_p (enum machine_mode, rtx);
 #define TARGET_CAN_ELIMINATE lm32_can_eliminate
 #undef TARGET_LEGITIMATE_ADDRESS_P
 #define TARGET_LEGITIMATE_ADDRESS_P lm32_legitimate_address_p
-#undef TARGET_LEGITIMATE_CONSTANT_P
-#define TARGET_LEGITIMATE_CONSTANT_P lm32_legitimate_constant_p
 
 struct gcc_target targetm = TARGET_INITIALIZER;
 
@@ -1228,15 +1225,3 @@ lm32_move_ok (enum machine_mode mode, rtx operands[2]) {
     return register_or_zero_operand (operands[1], mode);
   return true;
 }
-
-/* Implement TARGET_LEGITIMATE_CONSTANT_P.  */
-
-static bool
-lm32_legitimate_constant_p (enum machine_mode mode, rtx x)
-{
-  /* 32-bit addresses require multiple instructions.  */  
-  if (!flag_pic && reloc_operand (x, mode))
-    return false; 
-  
-  return true;
-}
index 8b687cfbbe8bcdf037cd59603f9c7ad6cfbe42fc..26d16823c1a9e47ff6000a8247b70cef258eaf21 100644 (file)
 )
 
 (define_insn "movsi_insn"
-  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,m,r,r,r,r,r")
-        (match_operand:SI 1 "movsi_rhs_operand" "m,r,r,J,K,L,U,S,Y"))]
+  [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,m,r,r,r,r,r,r")
+        (match_operand:SI 1 "general_operand" "m,r,r,J,K,L,U,S,Y,n"))]
   "lm32_move_ok (SImode, operands)"
   "@
    lw       %0, %1
    ori      %0, r0, %1
    orhi     %0, r0, hi(%1)
    mva      %0, gp(%1)
-   orhi     %0, r0, hi(%1)"
-  [(set_attr "type" "load,arith,store,store,arith,arith,arith,arith,arith")]   
+   orhi     %0, r0, hi(%1)
+   ori      %0, r0, lo(%1); orhi     %0, %0, hi(%1)"
+  [(set_attr "type" "load,arith,store,store,arith,arith,arith,arith,arith,arith")]   
 )
 
 ;; ---------------------------------
   [(set_attr "type" "uibranch")]  
 )
 
-(define_insn "return"
+(define_expand "return"
   [(return)]
   "lm32_can_use_return ()"
+  ""
+) 
+
+(define_expand "simple_return"
+  [(simple_return)]
+  ""
+  ""
+) 
+
+(define_insn "*return"
+  [(return)]
+  "reload_completed"
+  "ret"
+  [(set_attr "type" "uibranch")]  
+) 
+
+(define_insn "*simple_return"
+  [(simple_return)]
+  ""
   "ret"
   [(set_attr "type" "uibranch")]  
 ) 
index a1a4cb06191837dc0e9277a6feb7d690aa0a2435..ad2e462db5e856dd0c90508c9d6b40685479b1af 100644 (file)
@@ -70,8 +70,3 @@
   (ior (match_code "symbol_ref")
        (match_operand 0 "register_operand")))
 
-(define_predicate "movsi_rhs_operand"
-  (ior (match_operand 0 "nonimmediate_operand")
-       (ior (match_code "const_int")
-            (ior (match_test "satisfies_constraint_S (op)")
-                 (match_test "satisfies_constraint_Y (op)")))))
index 969a8a628c8f7f02b521a5ba31e89adfe4ef4446..3d7a5c871d65f8864aab5facc17e4a0477b87bd8 100644 (file)
@@ -1249,6 +1249,10 @@ force_sjlj_exceptions=yes],
     force_sjlj_exceptions=yes
     enableval=yes
     ;;
+  lm32*-*-*)
+     force_sjlj_exceptions=yes
+     enableval=yes
+     ;;
   *)
     force_sjlj_exceptions=no
     ;;
This page took 0.071513 seconds and 5 git commands to generate.