re PR middle-end/23369 (build_range_check generates wrong code for funcptr comparison)

PR middle-end/23369
	* fold-const.c (build_range_check): Disable optimization for function
	pointer expressions on targets that require function pointer
	canonicalization.

From-SVN: r103145
This commit is contained in:
John David Anglin 2005-08-16 02:20:40 +00:00 committed by John David Anglin
parent 5b5dc47588
commit f60c951c84
2 changed files with 16 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2005-08-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR middle-end/23369
* fold-const.c (build_range_check): Disable optimization for function
pointer expressions on targets that require function pointer
canonicalization.
2005-08-15 Ulrich Weigand <uweigand@de.ibm.com>
* simplify-rtx.c (simplify_const_relational_operation): When

View File

@ -3929,6 +3929,15 @@ build_range_check (tree type, tree exp, int in_p, tree low, tree high)
tree etype = TREE_TYPE (exp);
tree value;
#ifdef HAVE_canonicalize_funcptr_for_compare
/* Disable this optimization for function pointer expressions
on targets that require function pointer canonicalization. */
if (HAVE_canonicalize_funcptr_for_compare
&& TREE_CODE (etype) == POINTER_TYPE
&& TREE_CODE (TREE_TYPE (etype)) == FUNCTION_TYPE)
return NULL_TREE;
#endif
if (! in_p)
{
value = build_range_check (type, exp, 1, low, high);