aboutsummaryrefslogtreecommitdiff
path: root/gcc/f
diff options
context:
space:
mode:
authorCraig Burley <burley@gnu.org>1998-08-05 07:19:05 -0400
committerDave Love <fx@gcc.gnu.org>1998-08-05 11:19:05 +0000
commita74de6ea6859b83927debfd99a95bf9fbc74b657 (patch)
treec485faacf988fb08a67553e024d1f38d10a03917 /gcc/f
parenta16be296490bc7b31d2718accf4334a3f51d9758 (diff)
downloadgcc-a74de6ea6859b83927debfd99a95bf9fbc74b657.zip
gcc-a74de6ea6859b83927debfd99a95bf9fbc74b657.tar.gz
gcc-a74de6ea6859b83927debfd99a95bf9fbc74b657.tar.bz2
com.c (ffecom_convert_narrow_, [...]): Allow conversion from pointer to same-sized integer...
Tue Aug 4 16:59:39 1998 Craig Burley <burley@gnu.org> * com.c (ffecom_convert_narrow_, ffecom_convert_widen_): Allow conversion from pointer to same-sized integer, to fix invoking SIGNAL as a function. [[Split portion of a mixed commit.]] From-SVN: r21617.2
Diffstat (limited to 'gcc/f')
-rw-r--r--gcc/f/ChangeLog6
-rw-r--r--gcc/f/com.c14
2 files changed, 16 insertions, 4 deletions
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index 806841a..d9fd6ef 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,9 @@
+Tue Aug 4 16:59:39 1998 Craig Burley <burley@gnu.org>
+
+ * com.c (ffecom_convert_narrow_, ffecom_convert_widen_):
+ Allow conversion from pointer to same-sized integer,
+ to fix invoking SIGNAL as a function.
+
1998-07-26 Dave Love <d.love@dl.ac.uk>
* BUGS, INSTALL, NEWS: Rebuilt.
diff --git a/gcc/f/com.c b/gcc/f/com.c
index 269477d..fc1f6a5 100644
--- a/gcc/f/com.c
+++ b/gcc/f/com.c
@@ -922,8 +922,11 @@ ffecom_convert_narrow_ (type, expr)
assert (code != ENUMERAL_TYPE);
if (code == INTEGER_TYPE)
{
- assert (TREE_CODE (TREE_TYPE (e)) == INTEGER_TYPE);
- assert (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (e)));
+ assert ((TREE_CODE (TREE_TYPE (e)) == INTEGER_TYPE
+ && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (e)))
+ || (TREE_CODE (TREE_TYPE (e)) == POINTER_TYPE
+ && (TYPE_PRECISION (type)
+ == TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (e))))));
return fold (convert_to_integer (type, e));
}
if (code == POINTER_TYPE)
@@ -992,8 +995,11 @@ ffecom_convert_widen_ (type, expr)
assert (code != ENUMERAL_TYPE);
if (code == INTEGER_TYPE)
{
- assert (TREE_CODE (TREE_TYPE (e)) == INTEGER_TYPE);
- assert (TYPE_PRECISION (type) >= TYPE_PRECISION (TREE_TYPE (e)));
+ assert ((TREE_CODE (TREE_TYPE (e)) == INTEGER_TYPE
+ && TYPE_PRECISION (type) >= TYPE_PRECISION (TREE_TYPE (e)))
+ || (TREE_CODE (TREE_TYPE (e)) == POINTER_TYPE
+ && (TYPE_PRECISION (type)
+ == TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (e))))));
return fold (convert_to_integer (type, e));
}
if (code == POINTER_TYPE)