CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2021-04-10 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Sun Apr 11 01:38:05 UTC 2021

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.md

Log Message:
revert a local change that i can't figure out how to port
makes vax-gcc10 tools build.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/external/gpl3/gcc/dist/gcc/config/vax/vax.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/vax/vax.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.16 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.17
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.16	Sun Apr 11 00:02:15 2021
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.md	Sun Apr 11 01:38:05 2021
@@ -216,27 +216,29 @@
   ""
   "
 {
+#if 0
   if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) <= 48)
 {
-  emit_insn (gen_movmemsi1_2 (operands[0], operands[1], operands[2]));
+  emit_insn (gen_cpymemsi1_2 (operands[0], operands[1], operands[2]));
   DONE;
 }
+#endif
   emit_insn (gen_cpymemhi1 (operands[0], operands[1], operands[2]));
   DONE;
 }")
 
+;;(define_insn "cpymemsi1_2"
+;;  [(set (match_operand:BLK 0 "memory_operand" "=B")
+;;	(match_operand:BLK 1 "memory_operand" "B"))
+;;   (use (match_operand:SI 2 "const_int_operand" "g"))]
+;;  "INTVAL (operands[2]) <= 48"
+;;  "* return vax_output_cpymemsi (insn, operands);")
+
 ;; The definition of this insn does not really explain what it does,
 ;; but it should suffice
 ;; that anything generated as this insn will be recognized as one
 ;; and that it won't successfully combine with anything.
 
-(define_insn "movmemsi1_2"
-  [(set (match_operand:BLK 0 "memory_operand" "=B")
-	(match_operand:BLK 1 "memory_operand" "B"))
-   (use (match_operand:SI 2 "const_int_operand" "g"))]
-  "INTVAL (operands[2]) <= 48"
-  "* return vax_output_movmemsi (insn, operands);")
-
 (define_insn "cpymemhi1"
   [(set (match_operand:BLK 0 "memory_operand" "=o")
 	(match_operand:BLK 1 "memory_operand" "o"))



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2019-04-01 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Apr  2 03:47:30 UTC 2019

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c

Log Message:
remove debugging code


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c

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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.18 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.19
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.18	Mon Apr  1 23:01:50 2019
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Mon Apr  1 23:47:30 2019
@@ -1840,11 +1840,8 @@ legitimate_pic_operand_p (rtx x)
 static bool
 indirectable_constant_address_p (rtx x, bool indirect)
 {
-  if (GET_CODE (x) == SYMBOL_REF) {
-fprintf (asm_out_file, "%s: %d %d %d\n", __func__,
-!flag_pic, SYMBOL_REF_LOCAL_P (x), !indirect);
+  if (GET_CODE (x) == SYMBOL_REF)
 return !flag_pic || SYMBOL_REF_LOCAL_P (x) || !indirect;
-}
 
   if (GET_CODE (x) == CONST)
 return !flag_pic



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2019-04-01 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Tue Apr  2 03:01:50 UTC 2019

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c

Log Message:
Compiling some files with -fPIC and -O2 ends up having global
symbols classified as local in pic mode, and that ends up with PC32
relocations "movl *psp, %rx" (/bin/sh parse.c). Treat pic code as
shared libraries to avoid classifying common initialized symbols
as local. Thanks to thorpej@ for his help.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c

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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.17 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.18
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.17	Sat Jan 19 07:10:07 2019
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Mon Apr  1 23:01:50 2019
@@ -118,6 +118,18 @@ static bool vax_mode_dependent_address_p
 #undef TARGET_OPTION_OVERRIDE
 #define TARGET_OPTION_OVERRIDE vax_option_override
 
+#if TARGET_ELF
+#undef TARGET_BINDS_LOCAL_P
+#define TARGET_BINDS_LOCAL_P vax_elf_binds_local_p
+
+static bool
+vax_elf_binds_local_p (const_tree exp)
+{
+  return default_binds_local_p_3 (exp, (flag_shlib | flag_pic) != 0,
+  true, false, false);
+}
+#endif
+
 struct gcc_target targetm = TARGET_INITIALIZER;
 
 /* Set global variables as needed for the options enabled.  */
@@ -1828,8 +1840,11 @@ legitimate_pic_operand_p (rtx x)
 static bool
 indirectable_constant_address_p (rtx x, bool indirect)
 {
-  if (GET_CODE (x) == SYMBOL_REF)
+  if (GET_CODE (x) == SYMBOL_REF) {
+fprintf (asm_out_file, "%s: %d %d %d\n", __func__,
+!flag_pic, SYMBOL_REF_LOCAL_P (x), !indirect);
 return !flag_pic || SYMBOL_REF_LOCAL_P (x) || !indirect;
+}
 
   if (GET_CODE (x) == CONST)
 return !flag_pic



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2018-04-02 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Mon Apr  2 17:45:23 UTC 2018

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: builtins.md predicates.md

Log Message:
Add new predicate volatile_mem_operand and use it for jbbssi

Fixes PR port-vax/53039: GCC/VAX hits ICE building libstdc++

GCC wants to change the label and then doesn't recognise the
new insn, it believes it doesn't satisfy the memory_operand
predicate.

It appears the memory_operand predicate doesn't accept volatile
memory accesses during the RTL generation phase.

The predicate is from rs6000 code.

from krister


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md
cvs rdiff -u -r1.1.1.4 -r1.2 \
src/external/gpl3/gcc/dist/gcc/config/vax/predicates.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/vax/builtins.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.7 src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.8
--- src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.7	Fri Feb  2 03:41:05 2018
+++ src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md	Mon Apr  2 17:45:23 2018
@@ -77,13 +77,13 @@
   [(parallel
 [(set (pc)
 	  (if_then_else
-	(ne (zero_extract:SI (match_operand:QI 0 "memory_operand" "g")
+	(ne (zero_extract:SI (match_operand:QI 0 "volatile_mem_operand" "g")
  (const_int 1)
  (match_operand:SI 1 "general_operand" "nrm"))
 		(const_int 0))
 	(label_ref (match_operand 2 "" ""))
 	(pc)))
- (set (zero_extract:SI (match_operand:QI 3 "memory_operand" "+0")
+ (set (zero_extract:SI (match_operand:QI 3 "volatile_mem_operand" "+0")
 			   (const_int 1)
 			   (match_dup 1))
 	  (const_int 1))])]
@@ -94,13 +94,13 @@
   [(parallel
 [(set (pc)
 	  (if_then_else
-	(ne (zero_extract:SI (match_operand:HI 0 "memory_operand" "Q")
+	(ne (zero_extract:SI (match_operand:HI 0 "volatile_mem_operand" "Q")
  (const_int 1)
  (match_operand:SI 1 "general_operand" "nrm"))
 		(const_int 0))
 	(label_ref (match_operand 2 "" ""))
 	(pc)))
- (set (zero_extract:SI (match_operand:HI 3 "memory_operand" "+0")
+ (set (zero_extract:SI (match_operand:HI 3 "volatile_mem_operand" "+0")
 			   (const_int 1)
 			   (match_dup 1))
 	  (const_int 1))])]
@@ -111,13 +111,13 @@
   [(parallel
 [(set (pc)
 	  (if_then_else
-	(ne (zero_extract:SI (match_operand:SI 0 "memory_operand" "Q")
+	(ne (zero_extract:SI (match_operand:SI 0 "volatile_mem_operand" "Q")
  (const_int 1)
  (match_operand:SI 1 "general_operand" "nrm"))
 		(const_int 0))
 	(label_ref (match_operand 2 "" ""))
 	(pc)))
- (set (zero_extract:SI (match_operand:SI 3 "memory_operand" "+0")
+ (set (zero_extract:SI (match_operand:SI 3 "volatile_mem_operand" "+0")
 			   (const_int 1)
 			   (match_dup 1))
 	  (const_int 1))])]

Index: src/external/gpl3/gcc/dist/gcc/config/vax/predicates.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/predicates.md:1.1.1.4 src/external/gpl3/gcc/dist/gcc/config/vax/predicates.md:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/predicates.md:1.1.1.4	Fri Feb  2 01:59:55 2018
+++ src/external/gpl3/gcc/dist/gcc/config/vax/predicates.md	Mon Apr  2 17:45:23 2018
@@ -109,3 +109,16 @@
(and (match_code "const_int,const_double,subreg,reg,mem")
 	(and (match_operand:DI 0 "general_operand" "")
 	 (not (match_operand:DI 0 "illegal_addsub_di_memory_operand")
+
+;; Return 1 if the operand is in volatile memory.  Note that during the
+;; RTL generation phase, memory_operand does not return TRUE for volatile
+;; memory references.  So this function allows us to recognize volatile
+;; references where it's safe.
+(define_predicate "volatile_mem_operand"
+  (and (and (match_code "mem")
+	(match_test "MEM_VOLATILE_P (op)"))
+   (if_then_else (match_test "reload_completed")
+ (match_operand 0 "memory_operand")
+ (if_then_else (match_test "reload_in_progress")
+	   (match_test "strict_memory_address_p (mode, XEXP (op, 0))")
+	   (match_test "memory_address_p (mode, XEXP (op, 0))")



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2017-06-08 Thread Felix Deichmann
Module Name:src
Committed By:   flxd
Date:   Thu Jun  8 15:28:27 UTC 2017

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: builtins.md

Log Message:
Fix PR port-vax/51761 as suggested by Paul Koning on port-vax list.
Installation (install.ram, -Os) on my VS4000 is possible without SCSI timeouts
again.
Other variable-length bit field instructions should be checked for correct
constraints, too!


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
src/external/gpl3/gcc/dist/gcc/config/vax/builtins.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/vax/builtins.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.5 src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.6
--- src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.5	Sun Jan 24 09:43:34 2016
+++ src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md	Thu Jun  8 15:28:27 2017
@@ -47,7 +47,7 @@
 
 (define_insn "ctzsi2"
   [(set (match_operand:SI 0 "nonimmediate_operand" "=rQ")
-	(ctz:SI (match_operand:SI 1 "general_operand" "nrmT")))
+	(ctz:SI (match_operand:SI 1 "general_operand" "nrQT")))
(set (cc0) (match_dup 0))]
   ""
   "ffs $0,$32,%1,%0")



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2016-03-23 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Thu Mar 24 04:27:29 UTC 2016

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c

Log Message:
new binutils bitch about writable eh_frame relocations; tell it we have
new style ones.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c

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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.14 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.15
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.14	Wed Mar 23 17:21:36 2016
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Thu Mar 24 00:27:29 2016
@@ -160,6 +160,8 @@ vax_option_override (void)
   if (TARGET_G_FLOAT)
 REAL_MODE_FORMAT (DFmode) = _g_format;
 
+  flag_dwarf2_cfi_asm = 0;
+
 #ifdef SUBTARGET_OVERRIDE_OPTIONS
   SUBTARGET_OVERRIDE_OPTIONS;
 #endif



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2016-03-23 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Mar 23 21:21:36 UTC 2016

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c

Log Message:
Drop PSW annotation for now; it is not a real register and we need special
rtl for it (causes an assertion failure)


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c

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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.13 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.14
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.13	Wed Mar 23 11:51:37 2016
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Wed Mar 23 17:21:36 2016
@@ -226,7 +226,13 @@ vax_expand_prologue (void)
   insn = emit_insn (gen_blockage ());
   RTX_FRAME_RELATED_P (insn) = 1;
 
+#ifdef notyet
+  /*
+   * We can't do this, the dwarf code asserts and we don't have yet a 
+   * way to get to the psw
+   */
   vax_add_reg_cfa_offset (insn, 4, gen_rtx_REG (Pmode, PSW_REGNUM));
+#endif
   vax_add_reg_cfa_offset (insn, 8, arg_pointer_rtx);
   vax_add_reg_cfa_offset (insn, 12, frame_pointer_rtx);
   vax_add_reg_cfa_offset (insn, 16, pc_rtx);



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2016-03-23 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Mar 23 21:09:04 UTC 2016

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax-protos.h

Log Message:
need stdbool.h


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h

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/vax/vax-protos.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.4 src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.5
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.4	Sun Jan 24 04:43:34 2016
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h	Wed Mar 23 17:09:04 2016
@@ -16,6 +16,7 @@ GNU General Public License for more deta
 You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 .  */
+#include 
 
 extern bool legitimate_constant_address_p (rtx);
 extern bool legitimate_pic_operand_p (rtx);



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2016-03-23 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Wed Mar 23 12:45:50 UTC 2016

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.h

Log Message:
Fix vax build, now we fail in:
/usr/src/lib/csu/common/crt0-common.c: In function '___start':
/usr/src/lib/csu/common/crt0-common.c:184:1: internal compiler error: in 
dwf_regno, at dwarf2cfi.c:988
 }
  ^


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h

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/vax/vax.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.4 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.5
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.4	Sun Jan 24 04:43:34 2016
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.h	Wed Mar 23 08:45:50 2016
@@ -17,6 +17,7 @@ You should have received a copy of the G
 along with GCC; see the file COPYING3.  If not see
 .  */
 
+#include "vax-protos.h"
 
 /* Target CPU builtins.  */
 #define TARGET_CPU_CPP_BUILTINS()		\



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2014-08-17 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Aug 17 16:25:21 UTC 2014

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: builtins.md vax.c

Log Message:
Rework so that the ctzsi builtin is supported.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md
cvs rdiff -u -r1.9 -r1.10 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c

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/vax/builtins.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.3 src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.4
--- src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.3	Sat Mar  1 08:58:33 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md	Sun Aug 17 16:25:21 2014
@@ -37,17 +37,17 @@
   
 {
   rtx label = gen_label_rtx ();
-  emit_insn (gen_ffssi2_internal (operands[0], operands[1]));
+  emit_insn (gen_ctzsi2 (operands[0], operands[1]));
   emit_jump_insn (gen_condjump (gen_rtx_NE(VOIDmode, cc0_rtx, const0_rtx), label));
-  emit_insn (gen_negsi2 (operands[0], const1_rtx));
+  emit_move_insn (operands[0], constm1_rtx);
   emit_label (label);
   emit_insn (gen_addsi3 (operands[0], operands[0], const1_rtx));
   DONE;
 })
 
-(define_insn ffssi2_internal
+(define_insn ctzsi2
   [(set (match_operand:SI 0 nonimmediate_operand =rQ)
-	(ffs:SI (match_operand:SI 1 general_operand nrmT)))
+	(ctz:SI (match_operand:SI 1 general_operand nrmT)))
(set (cc0) (match_dup 0))]
   
   ffs $0,$32,%1,%0)

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.9 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.10
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.9	Wed Jun  4 16:11:32 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Sun Aug 17 16:25:21 2014
@@ -1117,6 +1117,7 @@ vax_notice_update_cc (rtx exp, rtx insn 
 	case IOR:
 	case XOR:
 	case NOT:
+	case CTZ:
 	case MEM:
 	case REG:
 	  cc_status.flags = CC_NO_OVERFLOW;



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2014-08-14 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Thu Aug 14 11:32:18 UTC 2014

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: netbsd-elf.h

Log Message:
Force INTPTR_TYPE/UINTPTR_TYPE to long int/unsigned long int.
(same types as PTRDIFF_TYPE/SIZE_TYPE)


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.2 -r1.2 \
src/external/gpl3/gcc/dist/gcc/config/vax/netbsd-elf.h

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/vax/netbsd-elf.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/netbsd-elf.h:1.1.1.2 src/external/gpl3/gcc/dist/gcc/config/vax/netbsd-elf.h:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/netbsd-elf.h:1.1.1.2	Sat Mar  1 08:43:34 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/netbsd-elf.h	Thu Aug 14 11:32:18 2014
@@ -63,6 +63,12 @@ along with GCC; see the file COPYING3.  
 #define EXTRA_SPECS\
   { netbsd_entry_point, NETBSD_ENTRY_POINT },
 
+#undef INTPTR_TYPE
+#define INTPTR_TYPE long int
+
+#undef UINTPTR_TYPE
+#define UINTPTR_TYPE long unsigned int
+
 /* We use gas, not the UNIX assembler.  */
 #undef TARGET_DEFAULT
 #define TARGET_DEFAULT MASK_QMATH



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2014-06-04 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Wed Jun  4 16:11:33 UTC 2014

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c

Log Message:
Don't match an indexed address of the form val[reg].


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c

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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.8 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.9
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.8	Tue Jun  3 22:34:28 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Wed Jun  4 16:11:32 2014
@@ -2354,8 +2354,10 @@ vax_decomposed_dimode_operand_p (rtx lo,
 
   if (GET_CODE (lo) == PLUS)
 {
-  /* If PLUS, this must an indexed address so fail.  */
-  if (GET_CODE (XEXP (lo, 0)) == PLUS || !CONST_INT_P (XEXP (lo, 1)))
+  /* If PLUS or MULT, this must an indexed address so fail.  */
+  if (GET_CODE (XEXP (lo, 0)) == PLUS
+	  || GET_CODE (XEXP (lo, 0)) == MULT
+	  || !CONST_INT_P (XEXP (lo, 1)))
 	return false;
   lo_offset = INTVAL (XEXP (lo, 1));
   lo = XEXP(lo, 0);
@@ -2363,8 +2365,10 @@ vax_decomposed_dimode_operand_p (rtx lo,
 
   if (GET_CODE (hi) == PLUS)
 {
-  /* If PLUS, this must an indexed address so fail.  */
-  if (GET_CODE (XEXP (hi, 0)) == PLUS || !CONST_INT_P (XEXP (hi, 1)))
+  /* If PLUS or MULT, this must an indexed address so fail.  */
+  if (GET_CODE (XEXP (hi, 0)) == PLUS
+	  || GET_CODE (XEXP (hi, 0)) == MULT
+	  || !CONST_INT_P (XEXP (hi, 1)))
 	return false;
   hi_offset = INTVAL (XEXP (hi, 1));
   hi = XEXP(hi, 0);



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2014-06-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Jun  3 22:31:48 UTC 2014

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c

Log Message:
Fix tpyo.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c

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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.6 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.7
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.6	Fri May 23 13:35:26 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Tue Jun  3 22:31:48 2014
@@ -1292,7 +1292,7 @@ vax_output_int_move (rtx insn ATTRIBUTE_
 
   if (operands[1] == const0_rtx)
 	{
-	  if (push_operand (operands[1], SImode))
+	  if (push_operand (operands[0], SImode))
 	return pushl %1;
 	  return clrl %0;
 	}



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2014-06-03 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Tue Jun  3 22:34:28 UTC 2014

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax-protos.h vax.c vax.md

Log Message:
Add some peepholes to help pushing of adjacent registers or memory locations
on the stack.  Add a peephole to translate two pushes on integers into
one push of a DImode register.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h
cvs rdiff -u -r1.7 -r1.8 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c \
src/external/gpl3/gcc/dist/gcc/config/vax/vax.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/vax/vax-protos.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.3
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.2	Fri May 23 13:35:26 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h	Tue Jun  3 22:34:28 2014
@@ -29,6 +29,7 @@ extern void print_operand_address (FILE 
 extern void print_operand (FILE *, rtx, int);
 extern void vax_notice_update_cc (rtx, rtx);
 extern void vax_expand_addsub_di_operands (rtx *, enum rtx_code);
+extern bool vax_decomposed_dimode_operand_p (rtx, rtx);
 extern const char * vax_output_int_move (rtx, rtx *, enum machine_mode);
 extern const char * vax_output_int_add (rtx, rtx *, enum machine_mode);
 extern const char * vax_output_int_subtract (rtx, rtx *, enum machine_mode);

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.7 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.8
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.7	Tue Jun  3 22:31:48 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Tue Jun  3 22:34:28 2014
@@ -2325,3 +2325,50 @@ vax_function_arg_advance (cumulative_arg
 	   ? (GET_MODE_SIZE (mode) + 3)  ~3
 	   : (int_size_in_bytes (type) + 3)  ~3);
 }
+
+bool
+vax_decomposed_dimode_operand_p (rtx lo, rtx hi)
+{
+  HOST_WIDE_INT lo_offset = 0;
+  HOST_WIDE_INT hi_offset = 0;
+
+  /* If the codes aren't the same, can't be a DImode operand.  */
+  if (GET_CODE (lo) != GET_CODE (hi))
+return false;
+
+  /* If a register, hi regno must be one more than the lo regno.  */
+  if (REG_P (lo))
+return REGNO (lo) + 1 == REGNO (hi);
+
+  /* If not memory, can't be a DImode operand.  */
+  if (!MEM_P (lo))
+return false;
+
+  /* Get addresses of memory operands.  */
+  lo = XEXP(lo, 0);
+  hi = XEXP(hi, 0);
+
+  /* If POST_INC, regno must match.  */
+  if (GET_CODE (lo) == POST_INC  GET_CODE (hi) == POST_INC)
+return REGNO (XEXP (lo, 0)) == REGNO (XEXP (hi, 0));
+
+  if (GET_CODE (lo) == PLUS)
+{
+  /* If PLUS, this must an indexed address so fail.  */
+  if (GET_CODE (XEXP (lo, 0)) == PLUS || !CONST_INT_P (XEXP (lo, 1)))
+	return false;
+  lo_offset = INTVAL (XEXP (lo, 1));
+  lo = XEXP(lo, 0);
+}
+
+  if (GET_CODE (hi) == PLUS)
+{
+  /* If PLUS, this must an indexed address so fail.  */
+  if (GET_CODE (XEXP (hi, 0)) == PLUS || !CONST_INT_P (XEXP (hi, 1)))
+	return false;
+  hi_offset = INTVAL (XEXP (hi, 1));
+  hi = XEXP(hi, 0);
+}
+
+  return rtx_equal_p(lo, hi)  lo_offset + 4 == hi_offset;
+}
Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.7 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.8
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.7	Thu Mar 20 16:53:55 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.md	Tue Jun  3 22:34:28 2014
@@ -1678,3 +1678,48 @@
 })
 
 (include builtins.md)
+
+(define_peephole2
+  [(set (match_operand:SI 0 push_operand )
+(const_int 0))
+   (set (match_dup 0)
+(match_operand:SI 1 const_int_operand ))]
+  INTVAL (operands[1]) = 0
+  [(set (match_dup 0)
+(match_dup 1))]
+  operands[0] = gen_rtx_MEM(DImode, XEXP (operands[0], 0));)
+
+(define_peephole2
+  [(set (match_operand:SI 0 push_operand )
+(match_operand:SI 1 general_operand ))
+   (set (match_dup 0)
+(match_operand:SI 2 general_operand ))]
+  vax_decomposed_dimode_operand_p (operands[2], operands[1])
+  [(set (match_dup 0)
+(match_dup 2))]
+  {
+operands[0] = gen_rtx_MEM(DImode, XEXP (operands[0], 0));
+operands[2] = REG_P (operands[2])
+  ? gen_rtx_REG(DImode, REGNO (operands[2]))
+  : gen_rtx_MEM(DImode, XEXP (operands[2], 0));
+})
+
+; Leave this commented out until we can determine whether the second move
+; precedes a jump which relies on the CC flags being set correctly.
+(define_peephole2
+  [(set (match_operand:SI 0 nonimmediate_operand )
+(match_operand:SI 1 general_operand ))
+   (set (match_operand:SI 2 nonimmediate_operand )
+(match_operand:SI 3 general_operand ))]
+  0  

CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2014-05-23 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Fri May 23 13:35:26 UTC 2014

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax-protos.h vax.c vax.h

Log Message:
Add LEGITIMATE_PIC_OPERAND_P(X) to prevent global symbol + offset from
being a legitimate pic operand (because it's not).


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.2 -r1.2 \
src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h
cvs rdiff -u -r1.5 -r1.6 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
cvs rdiff -u -r1.2 -r1.3 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h

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/vax/vax-protos.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.1.1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h:1.1.1.2	Sat Mar  1 08:43:34 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax-protos.h	Fri May 23 13:35:26 2014
@@ -18,6 +18,7 @@ along with GCC; see the file COPYING3.  
 http://www.gnu.org/licenses/.  */
 
 extern bool legitimate_constant_address_p (rtx);
+extern bool legitimate_pic_operand_p (rtx);
 extern void vax_expand_prologue (void);
 
 #ifdef RTX_CODE

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.5 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.6
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.5	Thu Mar 20 16:53:55 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Fri May 23 13:35:26 2014
@@ -572,6 +572,11 @@ print_operand (FILE *file, rtx x, int co
 		   sizeof (dstr), 0, 1);
   fprintf (file, $0%c%s, ASM_DOUBLE_CHAR, dstr);
 }
+  else if (GET_CODE (x) == SUBREG)
+{
+  debug_rtx (x);
+  output_operand_lossage (SUBREG operand);
+}
   else
 {
   if (flag_pic  1  symbolic_operand (x, SImode))
@@ -1777,6 +1782,19 @@ legitimate_constant_address_p (rtx x)
return true;
 }
 
+bool
+legitimate_pic_operand_p (rtx x)
+{
+#ifdef NO_EXTERNAL_INDIRECT_ADDRESS
+  if (GET_CODE (x) != CONST)
+return true;
+  if (GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF
+   !SYMBOL_REF_LOCAL_P (XEXP (XEXP (x, 0), 0)))
+return false;
+#endif
+  return true;
+}
+
 /* The other macros defined here are used only in legitimate_address_p ().  */
 
 /* Nonzero if X is a hard reg that can be used as an index

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.3
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.2	Thu Mar 20 16:53:55 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.h	Fri May 23 13:35:26 2014
@@ -373,6 +373,10 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_
 	RETURN_ADDRESS_OFFSET))		\
: (rtx) 0)
 
+/* A C expression that is nonzero if X is a legitimate immediate operand
+   on the target machine when generating position independent code.  */
+
+#define LEGITIMATE_PIC_OPERAND_P(X) legitimate_pic_operand_p (X)
 
 /* Addressing modes, and classification of registers for them.  */
 



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2014-03-20 Thread Joerg Sonnenberger
Module Name:src
Committed By:   joerg
Date:   Thu Mar 20 16:53:55 UTC 2014

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c vax.h vax.md

Log Message:
Annotation for the Processor Status Word. Sensible DWARF frame layout.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
cvs rdiff -u -r1.1.1.2 -r1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h
cvs rdiff -u -r1.6 -r1.7 src/external/gpl3/gcc/dist/gcc/config/vax/vax.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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.4 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.5
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.4	Sat Mar  1 09:04:13 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Thu Mar 20 16:53:55 2014
@@ -162,9 +162,13 @@ vax_expand_prologue (void)
   HOST_WIDE_INT size;
   rtx insn;
 
+  offset = 20;
   for (regno = 0; regno  FIRST_PSEUDO_REGISTER; regno++)
 if (df_regs_ever_live_p (regno)  !call_used_regs[regno])
-  mask |= 1  regno;
+  {
+mask |= 1  regno;
+offset += 4;
+  }
 
   insn = emit_insn (gen_procedure_entry_mask (GEN_INT (mask)));
   RTX_FRAME_RELATED_P (insn) = 1;
@@ -186,11 +190,17 @@ vax_expand_prologue (void)
 
  The rest of the prologue will adjust the SP for the local frame.  */
 
-  vax_add_reg_cfa_offset (insn, 4, arg_pointer_rtx);
-  vax_add_reg_cfa_offset (insn, 8, frame_pointer_rtx);
-  vax_add_reg_cfa_offset (insn, 12, pc_rtx);
+  add_reg_note (insn, REG_CFA_DEF_CFA,
+plus_constant (Pmode, frame_pointer_rtx, offset));
+  insn = emit_insn (gen_blockage ());
+  RTX_FRAME_RELATED_P (insn) = 1;
 
-  offset = 16;
+  vax_add_reg_cfa_offset (insn, 4, gen_rtx_REG (Pmode, PSW_REGNUM));
+  vax_add_reg_cfa_offset (insn, 8, arg_pointer_rtx);
+  vax_add_reg_cfa_offset (insn, 12, frame_pointer_rtx);
+  vax_add_reg_cfa_offset (insn, 16, pc_rtx);
+
+  offset = 20;
   for (regno = 0; regno  FIRST_PSEUDO_REGISTER; regno++)
 if (mask  (1  regno))
   {
@@ -198,12 +208,6 @@ vax_expand_prologue (void)
 	offset += 4;
   }
 
-  /* Because add_reg_note pushes the notes, adding this last means that
- it will be processed first.  This is required to allow the other
- notes be interpreted properly.  */
-  add_reg_note (insn, REG_CFA_DEF_CFA,
-		plus_constant (Pmode, frame_pointer_rtx, offset));
-
   /* Allocate the local stack frame.  */
   size = get_frame_size ();
   size -= STARTING_FRAME_OFFSET;

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.1.1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.h:1.1.1.2	Sat Mar  1 08:43:34 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.h	Thu Mar 20 16:53:55 2014
@@ -156,6 +156,9 @@ along with GCC; see the file COPYING3.  
 /* Specify the registers used for certain standard purposes.
The values of these macros are register numbers.  */
 
+/* VAX PSW for DWARF-2 */
+#define PSW_REGNUM VAX_PSW_REGNUM
+
 /* VAX pc is overloaded on a register.  */
 #define PC_REGNUM VAX_PC_REGNUM
 

Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.6 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.7
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.6	Sat Mar  1 09:44:50 2014
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.md	Thu Mar 20 16:53:55 2014
@@ -40,6 +40,7 @@
(VAX_FP_REGNUM 13)	; Register 13 contains the frame pointer
(VAX_SP_REGNUM 14)	; Register 14 contains the stack pointer
(VAX_PC_REGNUM 15)	; Register 15 contains the program counter
+   (VAX_PSW_REGNUM 16)	; Program Status Word
   ]
 )
 



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2012-02-05 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Feb  5 17:37:19 UTC 2012

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: constraints.md

Log Message:
Constraint 'T' needs to be a CONSTANT_P so add a match_test for that.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 \
src/external/gpl3/gcc/dist/gcc/config/vax/constraints.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/vax/constraints.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/constraints.md:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/vax/constraints.md:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/constraints.md:1.1.1.1	Tue Jun 21 01:22:25 2011
+++ src/external/gpl3/gcc/dist/gcc/config/vax/constraints.md	Sun Feb  5 17:37:19 2012
@@ -113,5 +113,6 @@
 
 (define_constraint T
 @internal satisfies CONSTANT_P and, if pic is enabled, is not a SYMBOL_REF, LABEL_REF, or CONST.
-   (ior (not (match_code const,symbol_ref,label_ref))
-	(match_test !flag_pic)))
+   (and (match_test CONSTANT_P (op))
+	(ior (not (match_code const,symbol_ref,label_ref))
+	 (match_test !flag_pic



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2012-02-05 Thread Matt Thomas
Module Name:src
Committed By:   matt
Date:   Sun Feb  5 17:38:21 UTC 2012

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: vax.c vax.md

Log Message:
Use REG_P, CONST_INT_P, and gcc_unreachable().
Bring forward movememsi from gcc4.1


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c
cvs rdiff -u -r1.2 -r1.3 src/external/gpl3/gcc/dist/gcc/config/vax/vax.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/vax/vax.c
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.c:1.1.1.1	Tue Jun 21 01:22:25 2011
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.c	Sun Feb  5 17:38:21 2012
@@ -300,7 +300,10 @@ print_operand_address (FILE * file, rtx 
 	  addr = XEXP (addr, 1);
 	}
   else
-	gcc_unreachable ();
+	{
+	   debug_rtx (orig);
+	   gcc_unreachable ();
+	}
 
   if (REG_P (addr))
 	{
@@ -311,9 +314,8 @@ print_operand_address (FILE * file, rtx 
 	}
   else if (GET_CODE (addr) == MULT)
 	ireg = addr;
-  else
+  else if (GET_CODE (addr) == PLUS)
 	{
-	  gcc_assert (GET_CODE (addr) == PLUS);
 	  if (CONSTANT_ADDRESS_P (XEXP (addr, 0))
 	  || MEM_P (XEXP (addr, 0)))
 	{
@@ -321,11 +323,15 @@ print_operand_address (FILE * file, rtx 
 		{
 		  if (CONST_INT_P (offset))
 		offset = plus_constant (XEXP (addr, 0), INTVAL (offset));
-		  else
+		  else if (CONST_INT_P (XEXP (addr, 0)))
 		{
-		  gcc_assert (CONST_INT_P (XEXP (addr, 0)));
 		  offset = plus_constant (offset, INTVAL (XEXP (addr, 0)));
 		}
+		  else
+		{
+		  debug_rtx (orig);
+		  gcc_unreachable ();
+		}
 		}
 	  offset = XEXP (addr, 0);
 	}
@@ -336,12 +342,15 @@ print_operand_address (FILE * file, rtx 
 	  else
 		reg1 = XEXP (addr, 0);
 	}
-	  else
+	  else if (GET_CODE (XEXP (addr, 0)) == MULT  !ireg)
 	{
-	  gcc_assert (GET_CODE (XEXP (addr, 0)) == MULT);
-	  gcc_assert (!ireg);
 	  ireg = XEXP (addr, 0);
 	}
+	  else
+	{
+	  debug_rtx (orig);
+	  gcc_unreachable ();
+	}
 
 	  if (CONSTANT_ADDRESS_P (XEXP (addr, 1))
 	  || MEM_P (XEXP (addr, 1)))
@@ -365,12 +374,20 @@ print_operand_address (FILE * file, rtx 
 	  else
 		reg1 = XEXP (addr, 1);
 	}
-	  else
+	  else if (GET_CODE (XEXP (addr, 1)) == MULT  !ireg)
 	{
-	  gcc_assert (GET_CODE (XEXP (addr, 1)) == MULT);
-	  gcc_assert (!ireg);
 	  ireg = XEXP (addr, 1);
 	}
+	  else
+	{
+	  debug_rtx (orig);
+	  gcc_unreachable ();
+	}
+	}
+  else
+	{
+	  debug_rtx (orig);
+	  gcc_unreachable ();
 	}
 
   /* If REG1 is nonzero, figure out if it is a base or index register.  */
@@ -382,7 +399,11 @@ print_operand_address (FILE * file, rtx 
 		   (MEM_P (offset)
 		  || (flag_pic  symbolic_operand (offset, SImode)
 	{
-	  gcc_assert (!ireg);
+	  if (ireg)
+		{
+		  debug_rtx (orig);
+		  gcc_unreachable ();
+		}
 	  ireg = reg1;
 	}
 	  else
@@ -428,12 +449,17 @@ print_operand_address (FILE * file, rtx 
 	{
 	  if (GET_CODE (ireg) == MULT)
 	ireg = XEXP (ireg, 0);
-	  gcc_assert (REG_P (ireg));
+	  if (! REG_P (ireg))
+	{
+	  debug_rtx (orig);
+	  output_operand_lossage (non-register index expression);
+	}
 	  fprintf (file, [%s], reg_names[REGNO (ireg)]);
 	}
   break;
 
 default:
+  gcc_assert (! REG_P(addr));
   output_addr_const (file, addr);
 }
 }
@@ -1566,6 +1592,111 @@ vax_output_int_subtract (rtx insn, rtx *
   }
 }
 
+static rtx
+mkrtx(enum rtx_code code, enum machine_mode mode, rtx base, HOST_WIDE_INT off)
+{
+  rtx tmp;
+
+  if (GET_CODE (base) == CONST)
+base = XEXP (base, 0);
+
+  if (GET_CODE (base) == PLUS)
+{
+  rtx a = XEXP (base, 0);
+  rtx b = XEXP (base, 1);
+  if (GET_CODE (b) == CONST)
+	b = XEXP (b, 0);
+  if (CONST_INT_P (b))
+	{
+  off += INTVAL (b);
+  base = a;
+	}
+  else if (REG_P (a)  GET_CODE (b) == SYMBOL_REF)
+	{
+	  if (off != 0)
+	{
+	  base = gen_rtx_PLUS (Pmode, a, plus_constant(b, off));
+	  off = 0;
+	}
+	}
+  else if (REG_P (a)  GET_CODE (b) == PLUS)
+	{
+  off += INTVAL (XEXP (b, 1));
+	  base = gen_rtx_PLUS (Pmode, a, plus_constant(XEXP (b, 0), off));
+	  off = 0;
+	}
+  else
+{
+	  debug_rtx(base);
+	  gcc_unreachable ();
+	}
+}
+  if (code == POST_INC)
+tmp = gen_rtx_POST_INC (SImode, base);
+  else if (off == 0 || (REG_P (base)  code == REG))
+tmp = base;
+  else
+tmp = plus_constant (base, off);
+  return gen_rtx_MEM (mode, tmp);
+}
+
+const char *
+vax_output_movmemsi (rtx insn, rtx *operands)
+{
+  HOST_WIDE_INT n = INTVAL (operands[2]);
+  HOST_WIDE_INT off;
+  rtx src, dest;
+  const char *pat = NULL;

CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2012-01-28 Thread Valeriy E. Ushakov
Module Name:src
Committed By:   uwe
Date:   Sat Jan 28 11:24:05 UTC 2012

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: elf.h

Log Message:
Pull in revision 1.4 from src/gnu/dist/gcc4/gcc/config/vax/elf.h:

  Emit DWARF relocation in its expected form

PR toolchain/43314


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 src/external/gpl3/gcc/dist/gcc/config/vax/elf.h

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/vax/elf.h
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/elf.h:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/vax/elf.h:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/elf.h:1.1.1.1	Tue Jun 21 01:22:25 2011
+++ src/external/gpl3/gcc/dist/gcc/config/vax/elf.h	Sat Jan 28 11:24:05 2012
@@ -109,5 +109,5 @@ along with GCC; see the file COPYING3.  
 fputs (integer_asm_op (SIZE, FALSE), FILE);		\
 fprintf (FILE, %%pcrel%d(, SIZE * 8);		\
 assemble_name (FILE, LABEL);			\
-fputc (')', FILE);	\
+fprintf (FILE, %+d), SIZE);			\
   } while (0)



CVS commit: src/external/gpl3/gcc/dist/gcc/config/vax

2011-11-10 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Thu Nov 10 17:16:30 UTC 2011

Modified Files:
src/external/gpl3/gcc/dist/gcc/config/vax: builtins.md vax.md

Log Message:
include builtins.md in vax.md so that ffs is defined.
update for conditional branch changes in gcc.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 \
src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md \
src/external/gpl3/gcc/dist/gcc/config/vax/vax.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/vax/builtins.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md:1.1.1.1	Tue Jun 21 01:22:25 2011
+++ src/external/gpl3/gcc/dist/gcc/config/vax/builtins.md	Thu Nov 10 17:16:30 2011
@@ -24,6 +24,12 @@
   ]
 )
 
+(define_expand condjump
+  [(set (pc)
+	(if_then_else (match_operand 0)
+		  (label_ref (match_operand 1))
+		  (pc)))])
+
 (define_expand ffssi2
   [(set (match_operand:SI 0 nonimmediate_operand )
 	(ffs:SI (match_operand:SI 1 general_operand )))]
@@ -32,7 +38,7 @@
 {
   rtx label = gen_label_rtx ();
   emit_insn (gen_ffssi2_internal (operands[0], operands[1]));
-  emit_jump_insn (gen_bne (label));
+  emit_jump_insn (gen_condjump (gen_rtx_NE(VOIDmode, cc0_rtx, const0_rtx), label));
   emit_insn (gen_negsi2 (operands[0], const1_rtx));
   emit_label (label);
   emit_insn (gen_addsi3 (operands[0], operands[0], const1_rtx));
@@ -189,4 +195,3 @@
 	  (const_int 0))])]
   
   jbcci %1,%0,%l2)
-
Index: src/external/gpl3/gcc/dist/gcc/config/vax/vax.md
diff -u src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.1.1.1 src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.2
--- src/external/gpl3/gcc/dist/gcc/config/vax/vax.md:1.1.1.1	Tue Jun 21 01:22:25 2011
+++ src/external/gpl3/gcc/dist/gcc/config/vax/vax.md	Thu Nov 10 17:16:30 2011
@@ -1634,3 +1634,5 @@
   emit_barrier ();
   DONE;
 })
+
+(include builtins.md)