Enable LRA register allocator for PDP11.
authorPaul Koning <pkoning@gcc.gnu.org>
Wed, 3 Oct 2018 18:31:52 +0000 (14:31 -0400)
committerPaul Koning <pkoning@gcc.gnu.org>
Wed, 3 Oct 2018 18:31:52 +0000 (14:31 -0400)
    * config/pdp11/constraints.md (Q): Use define_memory_constraints.
    (R): Likewise.
    (D): Likewise.
    * config/pdp11/pdp11.c (pdp11_lra_p): New function.
    * config/pdp11/pdp11.opt (-mlra): New option.
    * doc/invoke.texi (PDP-11 Options): Document -mlra.

From-SVN: r264819

gcc/config/pdp11/constraints.md
gcc/config/pdp11/pdp11.c
gcc/config/pdp11/pdp11.opt
gcc/doc/invoke.texi

index 10bf1204716350a6c1ef9cfb42a21b30df245ab1..33882ed034ec4ba6c2453d977903011837126b25 100644 (file)
   (and (match_code "const_double")
        (match_test "op == CONST0_RTX (GET_MODE (op))")))
 
-(define_constraint "Q"
+(define_memory_constraint "Q"
   "Memory reference that requires an additional word after the opcode"
   (and (match_code "mem")
        (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0))
                     && !simple_memory_operand (op, GET_MODE (op))")))
 
-(define_constraint "R"
+(define_memory_constraint "R"
   "Memory reference that is encoded within the opcode"
   (and (match_code "mem")
        (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0))
                     && simple_memory_operand (op, GET_MODE (op))")))
 
-(define_constraint "D"
+(define_memory_constraint "D"
   "Memory reference that is encoded within the opcode, and not push or pop"
   (and (match_code "mem")
        (match_test "memory_address_p (GET_MODE (op), XEXP (op, 0))
index 62c653fd8a114256dba7f5bae64a9c4a002e65ac..f80a8783d8e9c3b41ac1afce7cf8f3041f5e19f4 100644 (file)
@@ -230,7 +230,7 @@ static bool pdp11_scalar_mode_supported_p (scalar_mode);
 #define TARGET_PREFERRED_OUTPUT_RELOAD_CLASS pdp11_preferred_output_reload_class
 
 #undef  TARGET_LRA_P
-#define TARGET_LRA_P hook_bool_void_false
+#define TARGET_LRA_P pdp11_lra_p
 
 #undef  TARGET_LEGITIMATE_ADDRESS_P
 #define TARGET_LEGITIMATE_ADDRESS_P pdp11_legitimate_address_p
@@ -991,6 +991,12 @@ pdp11_assemble_integer (rtx x, unsigned int size, int aligned_p)
 }
 
 
+static bool
+pdp11_lra_p (void)
+{
+  return TARGET_LRA;
+}
+
 /* Register to register moves are cheap if both are general
    registers.  */
 static int 
index 26a91a028ae0fd088683b1dd098c670ef8b8c04e..033d1d7403ebda2fcdb22ddff0b15c0a9a9e8463 100644 (file)
@@ -73,3 +73,7 @@ Target has split I&D.
 munix-asm
 Target RejectNegative Report Mask(UNIX_ASM) Negative(mdec-asm)
 Use UNIX assembler syntax.
+
+mlra
+Target Report Mask(LRA)
+Use LRA register allocator
index 5c95f674e0c4ea7c5a064d0474ce684d65dc4e02..5179d7064d5c21f3d49635649dbd196934676b0e 100644 (file)
@@ -1007,7 +1007,7 @@ Objective-C and Objective-C++ Dialects}.
 @gccoptlist{-mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10 @gol
 -mint32  -mno-int16 -mint16  -mno-int32 @gol
 -mfloat32  -mno-float64 -mfloat64  -mno-float32 @gol
--msplit -munix-asm  -mdec-asm -mgnu-asm}
+-msplit -munix-asm  -mdec-asm -mgnu-asm -mlra}
 
 @emph{picoChip Options}
 @gccoptlist{-mae=@var{ae_type}  -mvliw-lookahead=@var{N} @gol
@@ -22721,6 +22721,11 @@ Use DEC assembler syntax.
 @item -mgnu-asm
 @opindex mgnu-asm
 Use GNU assembler syntax.  This is the default.
+
+@item -mlra
+@opindex mlra
+Use the new LRA register allocator.  By default, the old ``reload''
+allocator is used.
 @end table
 
 @node picoChip Options