Module Name: src Committed By: bouyer Date: Sun Jan 12 12:35:39 UTC 2014
Modified Files: src/external/gpl3/gcc/dist/gcc/config/sparc [netbsd-6-0]: constraints.md predicates.md sync.md Log Message: Pull up following revision(s) (requested by martin in ticket #1006): external/gpl3/gcc/dist/gcc/config/sparc/constraints.md: revision 1.2 external/gpl3/gcc/dist/gcc/config/sparc/predicates.md: revision 1.2 external/gpl3/gcc/dist/gcc/config/sparc/sync.md: revision 1.2 Port from newer gcc: Add a "mem_noofs_operand" predicate and corresponding "w" constraint. Use those instead of "memory_reg_operand"/"m" for some atomic instrinsic patterns: casx (and friends) do not accept an offset from the pointer register (they are synthetic instructions mapping to e.g. casxa [..] ASI_P, ... and the opcode space encoding offsets in other instructions is needed to encode the ASI here). This fixes the build of gtk+-3.10.6 from pkgsrc on sparc64. To generate a diff of this commit: cvs rdiff -u -r1.1.1.1 -r1.1.1.1.10.1 \ src/external/gpl3/gcc/dist/gcc/config/sparc/constraints.md \ src/external/gpl3/gcc/dist/gcc/config/sparc/predicates.md \ src/external/gpl3/gcc/dist/gcc/config/sparc/sync.md Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gcc/dist/gcc/config/sparc/constraints.md diff -u src/external/gpl3/gcc/dist/gcc/config/sparc/constraints.md:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/sparc/constraints.md:1.1.1.1.10.1 --- src/external/gpl3/gcc/dist/gcc/config/sparc/constraints.md:1.1.1.1 Tue Jun 21 01:22:24 2011 +++ src/external/gpl3/gcc/dist/gcc/config/sparc/constraints.md Sun Jan 12 12:35:39 2014 @@ -141,6 +141,10 @@ "Memory reference for 'e' constraint floating-point register" (and (match_code "mem,reg") (match_test "memory_ok_for_ldd (op)"))) + +(define_memory_constraint "w" + "A memory with only a base register" + (match_operand 0 "mem_noofs_operand")) (define_constraint "Y" "The vector zero constant" Index: src/external/gpl3/gcc/dist/gcc/config/sparc/predicates.md diff -u src/external/gpl3/gcc/dist/gcc/config/sparc/predicates.md:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/sparc/predicates.md:1.1.1.1.10.1 --- src/external/gpl3/gcc/dist/gcc/config/sparc/predicates.md:1.1.1.1 Tue Jun 21 01:22:24 2011 +++ src/external/gpl3/gcc/dist/gcc/config/sparc/predicates.md Sun Jan 12 12:35:39 2014 @@ -427,6 +427,9 @@ (and (match_code "mem") (match_test "call_address_operand (XEXP (op, 0), mode)"))) +(define_predicate "mem_noofs_operand" + (and (match_code "mem") + (match_code "reg" "0"))) ;; Predicates for operators. Index: src/external/gpl3/gcc/dist/gcc/config/sparc/sync.md diff -u src/external/gpl3/gcc/dist/gcc/config/sparc/sync.md:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/sparc/sync.md:1.1.1.1.10.1 --- src/external/gpl3/gcc/dist/gcc/config/sparc/sync.md:1.1.1.1 Tue Jun 21 01:22:25 2011 +++ src/external/gpl3/gcc/dist/gcc/config/sparc/sync.md Sun Jan 12 12:35:39 2014 @@ -81,7 +81,7 @@ (define_insn "*sync_compare_and_swap<mode>" [(set (match_operand:I48MODE 0 "register_operand" "=r") - (match_operand:I48MODE 1 "memory_reg_operand" "+m")) + (match_operand:I48MODE 1 "mem_noofs_operand" "+w")) (set (match_dup 1) (unspec_volatile:I48MODE [(match_operand:I48MODE 2 "register_operand" "r") @@ -93,7 +93,7 @@ (define_insn "*sync_compare_and_swapdi_v8plus" [(set (match_operand:DI 0 "register_operand" "=h") - (match_operand:DI 1 "memory_reg_operand" "+m")) + (match_operand:DI 1 "mem_noofs_operand" "+w")) (set (match_dup 1) (unspec_volatile:DI [(match_operand:DI 2 "register_operand" "h")