MAX_INTEGER_COMPUTATION_MODE fix
Jeffrey A Law
law@cygnus.com
Fri Mar 12 00:04:00 GMT 1999
An inline function which returns a value in a mode greater than
MAX_INTEGER_COMPUTATION_MODE should not give an error since it is not
a computation -- just a copy to/from registers or memory.
* expr.c (expand_expr): Allow a CALL_EXPR with a mode wider than
MAX_INTEGER_COMPUTATION_MODE.
Index: expr.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/expr.c,v
retrieving revision 1.384
diff -c -3 -p -r1.384 expr.c
*** expr.c 1999/02/27 23:07:54 1.384
--- expr.c 1999/03/12 07:54:33
*************** expand_expr (exp, target, tmode, modifie
*** 5587,5592 ****
--- 5587,5593 ----
&& TREE_CODE (exp) != COMPONENT_REF
&& TREE_CODE (exp) != BIT_FIELD_REF
&& TREE_CODE (exp) != INDIRECT_REF
+ && TREE_CODE (exp) != CALL_EXPR
&& TREE_CODE (exp) != VAR_DECL)
{
enum machine_mode mode = GET_MODE (target);
*************** expand_expr (exp, target, tmode, modifie
*** 5603,5608 ****
--- 5604,5610 ----
&& TREE_CODE (exp) != BIT_FIELD_REF
&& TREE_CODE (exp) != INDIRECT_REF
&& TREE_CODE (exp) != VAR_DECL
+ && TREE_CODE (exp) != CALL_EXPR
&& GET_MODE_CLASS (tmode) == MODE_INT
&& tmode > MAX_INTEGER_COMPUTATION_MODE)
fatal ("unsupported wide integer operation");
More information about the Gcc-patches
mailing list