re PR middle-end/22375 (fold_builtins creates mis-matched types)

PR middle-end/22375
	* trans.c (gfc_trans_runtime_check): Promote the arguments of
	__builtin_expect to the correct types, and the result back to
	boolean_type_node.

From-SVN: r112547
This commit is contained in:
Roger Sayle 2006-03-30 22:37:55 +00:00 committed by Roger Sayle
parent 7d30b888b5
commit 240c7c0274
2 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2006-03-30 Roger Sayle <roger@eyesopen.com>
PR middle-end/22375
* trans.c (gfc_trans_runtime_check): Promote the arguments of
__builtin_expect to the correct types, and the result back to
boolean_type_node.
2006-03-29 Carlos O'Donell <carlos@codesourcery.com>
* Make-lang.in: Rename docdir to gcc_docdir.

View File

@ -340,9 +340,11 @@ gfc_trans_runtime_check (tree cond, tree msg, stmtblock_t * pblock)
else
{
/* Tell the compiler that this isn't likely. */
cond = fold_convert (long_integer_type_node, cond);
tmp = gfc_chainon_list (NULL_TREE, cond);
tmp = gfc_chainon_list (tmp, integer_zero_node);
tmp = gfc_chainon_list (tmp, build_int_cst (long_integer_type_node, 0));
cond = build_function_call_expr (built_in_decls[BUILT_IN_EXPECT], tmp);
cond = fold_convert (boolean_type_node, cond);
tmp = build3_v (COND_EXPR, cond, body, build_empty_stmt ());
gfc_add_expr_to_block (pblock, tmp);