From: John David Anglin Date: Sun, 25 Oct 2015 15:45:33 +0000 (+0000) Subject: re PR middle-end/68079 (hppa: pointers to method types need canonicalization before... X-Git-Tag: releases/gcc-4.9.4~541 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97a7fe039705115ebc70619a3b6c8473773af580;p=thirdparty%2Fgcc.git re PR middle-end/68079 (hppa: pointers to method types need canonicalization before comparison) PR middle-end/68079 * dojump.c (do_compare_and_jump): Canonicalize both function and method types. From-SVN: r229301 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5090d1a37a0c..b1d6892dfbe7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-10-25 John David Anglin + + PR middle-end/68079 + * dojump.c (do_compare_and_jump): Canonicalize both function and + method types. + 2015-10-15 Peter Bergner Backport from mainline diff --git a/gcc/dojump.c b/gcc/dojump.c index 1c3a2bee872c..140aa57939b0 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -1193,12 +1193,12 @@ do_compare_and_jump (tree treeop0, tree treeop1, enum rtx_code signed_code, If one side isn't, we want a noncanonicalized comparison. See PR middle-end/17564. */ if (HAVE_canonicalize_funcptr_for_compare - && TREE_CODE (TREE_TYPE (treeop0)) == POINTER_TYPE - && TREE_CODE (TREE_TYPE (TREE_TYPE (treeop0))) - == FUNCTION_TYPE - && TREE_CODE (TREE_TYPE (treeop1)) == POINTER_TYPE - && TREE_CODE (TREE_TYPE (TREE_TYPE (treeop1))) - == FUNCTION_TYPE) + && POINTER_TYPE_P (TREE_TYPE (treeop0)) + && POINTER_TYPE_P (TREE_TYPE (treeop1)) + && (TREE_CODE (TREE_TYPE (TREE_TYPE (treeop0))) == FUNCTION_TYPE + || TREE_CODE (TREE_TYPE (TREE_TYPE (treeop0))) == METHOD_TYPE) + && (TREE_CODE (TREE_TYPE (TREE_TYPE (treeop1))) == FUNCTION_TYPE + || TREE_CODE (TREE_TYPE (TREE_TYPE (treeop1))) == METHOD_TYPE)) { rtx new_op0 = gen_reg_rtx (mode); rtx new_op1 = gen_reg_rtx (mode);