From af2e10ee707f0d8884e652fe8e9a9a8489fb2fa4 Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay Date: Thu, 4 Oct 2012 17:02:27 +0000 Subject: [PATCH] predicates.md (flash_operand): New predicate. * config/avr/predicates.md (flash_operand): New predicate. * config/avr/avr.md (reload_in): Use it in operand 1 instead of memory_operand. From-SVN: r192090 --- gcc/ChangeLog | 10 ++++++++-- gcc/config/avr/avr.md | 2 +- gcc/config/avr/predicates.md | 7 +++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 191165604b9..abdd9172131 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-10-04 Georg-Johann Lay + + * config/avr/predicates.md (flash_operand): New predicate. + * config/avr/avr.md (reload_in): Use it in operand 1 instead + of memory_operand. + 2012-10-04 Tobias Burnus * gcc.c (record_temp_file, add_sysrooted_prefix, process_command, @@ -115,7 +121,7 @@ 2012-10-03 Andrew W. Nosenko - * config/i386/driver-i386.c (host_detect_local_cpu): Fix logic + * config/i386/driver-i386.c (host_detect_local_cpu): Fix logic in SSE and YMM state support check for -march=native. 2012-10-03 Nick Clifton @@ -199,7 +205,7 @@ 2012-10-02 H.J. Lu PR target/54741 - * config/i386/driver-i386.c (XCR_XFEATURE_ENABLED_MASK): New. + * config/i386/driver-i386.c (XCR_XFEATURE_ENABLED_MASK): New. (XSTATE_FP): Likewise. (XSTATE_SSE): Likewise. (XSTATE_YMM): Likewise. diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index 284860e9ec5..d3ffd1aba41 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -395,7 +395,7 @@ ;; Secondary input reload from non-generic 16-bit address spaces (define_insn "reload_in" [(set (match_operand:MOVMODE 0 "register_operand" "=r") - (match_operand:MOVMODE 1 "memory_operand" "m")) + (match_operand:MOVMODE 1 "flash_operand" "m")) (clobber (match_operand:QI 2 "d_register_operand" "=d"))] ;; Fixme: The insn condition must not test the address space. ;; Because the gen tools refuse to generate insns for address spaces diff --git a/gcc/config/avr/predicates.md b/gcc/config/avr/predicates.md index 04587ae491f..fc4ca03de6b 100644 --- a/gcc/config/avr/predicates.md +++ b/gcc/config/avr/predicates.md @@ -72,6 +72,13 @@ (not (match_test "avr_load_libgcc_p (op)")) (not (match_test "avr_mem_memx_p (op)")))) +;; Return 1 if OP is a memory operand in one of the __flash* address spaces +(define_predicate "flash_operand" + (and (match_operand 0 "memory_operand") + (match_test "Pmode == mode") + (ior (match_test "!MEM_P (op)") + (match_test "avr_mem_flash_p (op)")))) + ;; Return 1 if OP is the zero constant for MODE. (define_predicate "const0_operand" (and (match_code "const_int,const_fixed,const_double")