--- p/predef.c Sun Jan 30 14:02:02 2005 +++ p/predef.c Sat Feb 26 03:52:10 2005 @@ -1169,6 +1174,7 @@ tree val = NULL_TREE, val2 = NULL_TREE, val3 = NULL_TREE, val4 = NULL_TREE; tree type = NULL_TREE, type2 = NULL_TREE, type3 = NULL_TREE, type4 = NULL_TREE; tree retval = NULL_TREE, fun; + tree convert_result = NULL_TREE; /* type to convert the result to */ tree post_statement = NULL_TREE; /* for statements to be executed after calling the RTS procedure */ tree actual_result = NULL_TREE; /* value to return for a procedure call if any */ int argcount, swapargs = 0, invertresult = 0, minarg, maxarg, i, procflag, orig_p_id = r_num; @@ -2087,6 +2079,14 @@ apar = build_tree_list (NULL_TREE, get_standard_input (1)); break; + case p_Random: + { + tree t = TREE_CODE (val) == INTEGER_CST ? val : TYPE_MAX_VALUE (type); + if (TREE_CODE (t) == INTEGER_CST && !const_lt (TYPE_MAX_VALUE (long_long_integer_type_node), t)) + convert_result = long_long_integer_type_node; + break; + } + case p_Abs: retval = build_unary_op (ABS_EXPR, val, 0); break; @@ -2800,6 +2800,9 @@ retval = error_mark_node; } } + + if (convert_result) + retval = convert (convert_result, retval); if (invertresult) retval = build_pascal_unary_op (TRUTH_NOT_EXPR, retval);