diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8ba2aed5c3de241c0aa3bfcdceb6242a1c3671c7..5b137ab1f3a0424ea18efb0f05a62e601b008c70 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-05-11  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+	PR optimization/15100
+	* combine.c (distribute_notes): Don't create a dangling
+	REG_LIBCALL/REG_RETVAL note.
+
 2004-05-11  Aldy Hernandez  <aldyh@redhat.com>
 
 	* config/rs6000/spe.md (spe_evneg): Rename to negv2si2.
diff --git a/gcc/combine.c b/gcc/combine.c
index eea9bf2849d66bf2095301652cea2ad51fe594b9..49b486e28c46afd44977c37c19bd8126d7b588ef 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -12592,6 +12592,9 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
 		 libcall sequence, don't add the notes.  */
 	      else if (XEXP (note, 0) == from_insn)
 		tem = place = 0;
+	      /* Don't add the dangling REG_RETVAL note.  */
+	      else if (! tem)
+		place = 0;
 	    }
 	  break;
 
@@ -12609,6 +12612,9 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2)
 		 libcall sequence, don't add the notes.  */
 	      else if (XEXP (note, 0) == from_insn)
 		tem = place = 0;
+	      /* Don't add the dangling REG_LIBCALL note.  */
+	      else if (! tem)
+		place = 0;
 	    }
 	  break;