diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 030f172173d9bd35b02eff37337a724f09f59958..5d8aeffa59ad88200cd8fc8013115609ceadb533 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-09-19  Steve Ellcey  <sje@cup.hp.com>
+
+	PR  28490
+	* config/ia64/ia64.c (ia64_legitimate_constant_p): Allow function
+	pointers as legitimate constants.
+
 2006-09-19  Paul Brook  <paul@codesourcery.com>
 
 	PR target/28516
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 71953e29570984ac68708e9e118da0dc61bb92aa..8a98b2457c4d8408b8291c96653841eac7052241 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -831,8 +831,9 @@ ia64_legitimate_constant_p (rtx x)
 	      op = XEXP (XEXP (op, 0), 0);
 	    }
 
-	  if (any_offset_symbol_operand (op, GET_MODE (op)))
-	    return true;
+          if (any_offset_symbol_operand (op, GET_MODE (op))
+              || function_operand (op, GET_MODE (op)))
+            return true;
 	  if (aligned_offset_symbol_operand (op, GET_MODE (op)))
 	    return (addend & 0x3fff) == 0;
 	  return false;