diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 443a62835eaca1e4d8b5cb2045c2bef1845111c8..253418d409bbd174dcb4f6cdb59783c815390d62 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+1999-04-06  Joseph S. Myers  <jsm28@cam.ac.uk>
+
+	* pdp11.c (simple_memory_operand): Add default case in switch.
+	* pdp11.h (TARGET_SWITCHES): Add help strings.
+	(NOTICE_UPDATE_CC): Don't include excess argument to format.
+	(ASM_OUTPUT_DOUBLE_INT): Remove.
+
 Tue Apr  6 22:09:40 1999  Richard Henderson  <rth@cygnus.com>
 
 	* expr.c (expand_builtin_setjmp): Put setjmp return label on
diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c
index 8ca31d684307ed9452e550133dc2b9488a52bb5d..61da8c4e8c76232fb1f9fef0f057c17aaf9cafa6 100644
--- a/gcc/config/pdp11/pdp11.c
+++ b/gcc/config/pdp11/pdp11.c
@@ -1,5 +1,5 @@
 /* Subroutines for gcc2 for pdp11.
-   Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
    Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
 
 This file is part of GNU CC.
@@ -1089,6 +1089,9 @@ int simple_memory_operand(op, mode)
       case PLUS:
 	/* X(R0) - extra cost */
 	return 0;
+
+      default:
+	break;
     }
     
     return FALSE;
diff --git a/gcc/config/pdp11/pdp11.h b/gcc/config/pdp11/pdp11.h
index 7cb73602fbe4bd1051a7bc379400ad3a51aea9f5..c8f6cd075442db42f6d0d2038c2f1787e82066af 100644
--- a/gcc/config/pdp11/pdp11.h
+++ b/gcc/config/pdp11/pdp11.h
@@ -1,5 +1,5 @@
 /* Definitions of target machine for GNU compiler, for the pdp-11
-   Copyright (C) 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
    Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
 
 This file is part of GNU CC.
@@ -61,50 +61,51 @@ int simple_memory_operand ();
 extern int target_flags;
 
 /* Macro to define tables used to set the flags.
-   This is a list in braces of pairs in braces,
-   each pair being { "NAME", VALUE }
-   where VALUE is the bits to set or minus the bits to clear.
+   This is a list in braces of triplets in braces,
+   each triplet being { "NAME", VALUE, DOC }
+   where VALUE is the bits to set or minus the bits to clear and DOC
+   is the documentation for --help (NULL if intentionally undocumented).
    An empty string NAME is used to identify the default VALUE.  */
 
 #define TARGET_SWITCHES  \
-{   { "fpu", 1},		\
-    { "soft-float", -1},       	\
-/* return float result in ac0 */\
-    { "ac0", 2},		\
-    { "no-ac0", -2},		\
-/* is 11/40 */			\
-    { "40", 4},			\
-    { "no-40", -4},		\
-/* is 11/45 */			\
-    { "45", 8},			\
-    { "no-45", -8},		\
-/* is 11/10 */			\
-    { "10", -12},		\
-/* use movstrhi for bcopy */	\
-    { "bcopy", 16},		\
-    { "bcopy-builtin", -16},	\
-/* use 32 bit for int */	\
-    { "int32", 32},		\
-    { "no-int16", 32},		\
-    { "int16", -32},		\
-    { "no-int32", -32},		\
-/* use 32 bit for float */	\
-    { "float32", 64},		\
-    { "no-float64", 64},	\
-    { "float64", -64},		\
-    { "no-float32", -64},	\
+{   { "fpu", 1, "Use hardware floating point" },		\
+    { "soft-float", -1, "Do not use hardware floating point" }, \
+/* return float result in ac0 */				\
+    { "ac0", 2, "Return floating point results in ac0" },	\
+    { "no-ac0", -2, "Return floating point results in memory" },\
+/* is 11/40 */							\
+    { "40", 4, "Generate code for an 11/40" },			\
+    { "no-40", -4, "" },					\
+/* is 11/45 */							\
+    { "45", 8, "Generate code for an 11/45" },			\
+    { "no-45", -8, "" },					\
+/* is 11/10 */							\
+    { "10", -12, "Generate code for an 11/10" },		\
+/* use movstrhi for bcopy */					\
+    { "bcopy", 16, NULL },					\
+    { "bcopy-builtin", -16, NULL },				\
+/* use 32 bit for int */					\
+    { "int32", 32, "Use 32 bit int" },				\
+    { "no-int16", 32, "Use 32 bit int" },			\
+    { "int16", -32, "Use 16 bit int" },				\
+    { "no-int32", -32, "Use 16 bit int" },			\
+/* use 32 bit for float */					\
+    { "float32", 64, "Use 32 bit float" },			\
+    { "no-float64", 64, "Use 32 bit float" },			\
+    { "float64", -64, "Use 64 bit float" },			\
+    { "no-float32", -64, "Use 64 bit float" },			\
 /* allow abshi pattern? - can trigger "optimizations" which make code SLOW! */\
-    { "abshi", 128},		\
-    { "no-abshi", -128},	\
+    { "abshi", 128, NULL },					\
+    { "no-abshi", -128, NULL },					\
 /* is branching expensive - on a PDP, it's actually really cheap */ \
 /* this is just to play around and check what code gcc generates */ \
-    { "branch-expensive", 256}, \
-    { "branch-cheap", -256},	\
-/* split instruction and data memory? */ \
-    { "split", 1024 },		\
-    { "no-split", -1024 },	\
+    { "branch-expensive", 256, NULL }, 				\
+    { "branch-cheap", -256, NULL },				\
+/* split instruction and data memory? */ 			\
+    { "split", 1024, "Target has split I&D" },			\
+    { "no-split", -1024, "Target does not have split I&D" },	\
 /* default */			\
-    { "", TARGET_DEFAULT}	\
+    { "", TARGET_DEFAULT, NULL}	\
 }
 
 #define TARGET_DEFAULT (1 | 8 | 128)
@@ -398,7 +399,7 @@ enum reg_class { NO_REGS, MUL_REGS, GENERAL_REGS, LOAD_FPU_REGS, NO_LOAD_FPU_REG
    This is an initializer for a vector of HARD_REG_SET
    of length N_REG_CLASSES.  */
 
-#define REG_CLASS_CONTENTS {0, 0x00aa, 0x00ff, 0x0f00, 0x3000, 0x3f00, 0x3fff}
+#define REG_CLASS_CONTENTS {{0}, {0x00aa}, {0x00ff}, {0x0f00}, {0x3000}, {0x3f00}, {0x3fff}}
 
 /* The same information, inverted:
    Return the class number of the smallest class containing
@@ -1024,8 +1025,11 @@ extern struct rtx_def *cc0_reg_rtx;
     { /* all bets are off */ CC_STATUS_INIT; }			\
   if (cc_status.value1 && GET_CODE (cc_status.value1) == REG	\
       && cc_status.value2					\
-      && reg_overlap_mentioned_p (cc_status.value1, cc_status.value2))	\
-    printf ("here!\n", cc_status.value2 = 0);			\
+      && reg_overlap_mentioned_p (cc_status.value1, cc_status.value2)) \
+    { 								\
+      printf ("here!\n");					\
+      cc_status.value2 = 0;					\
+    }								\
 }
 
 /* Control the assembler format that we output.  */
@@ -1250,8 +1254,6 @@ fprintf (FILE, "$help$: . = .+8 ; space for tmp moves!\n")	\
 #define ASM_IDENTIFY_GCC(FILE)			\
     fprintf(FILE, "gcc_compiled:\n")
 
-#define ASM_OUTPUT_DOUBLE_INT(a,b)	fprintf(a,"%d", b)
-
 /* trampoline - how should i do it in separate i+d ? 
    have some allocate_trampoline magic???