diff options
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/class.c | 25 |
2 files changed, 9 insertions, 19 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3557e48..b9e6441 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2017-08-25 Nathan Sidwell <nathan@acm.org> + * class.c (method_name_cmp, resort_method_name_cmp): Method names + can never be NULL. + Conversion operators have a special name * cp-tree.h (CPTI_CONV_OP_MARKER, CPTI_CONV_OP_IDENTIFIER): New. (conv_op_marker, conv_op_identifier): New. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index fc37bd8..4d7c76b 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -2263,12 +2263,6 @@ method_name_cmp (const void* m1_p, const void* m2_p) const tree *const m1 = (const tree *) m1_p; const tree *const m2 = (const tree *) m2_p; - if (*m1 == NULL_TREE && *m2 == NULL_TREE) - return 0; - if (*m1 == NULL_TREE) - return -1; - if (*m2 == NULL_TREE) - return 1; if (OVL_NAME (*m1) < OVL_NAME (*m2)) return -1; return 1; @@ -2282,20 +2276,13 @@ resort_method_name_cmp (const void* m1_p, const void* m2_p) { const tree *const m1 = (const tree *) m1_p; const tree *const m2 = (const tree *) m2_p; - if (*m1 == NULL_TREE && *m2 == NULL_TREE) - return 0; - if (*m1 == NULL_TREE) + + tree n1 = OVL_NAME (*m1); + tree n2 = OVL_NAME (*m2); + resort_data.new_value (&n1, resort_data.cookie); + resort_data.new_value (&n2, resort_data.cookie); + if (n1 < n2) return -1; - if (*m2 == NULL_TREE) - return 1; - { - tree d1 = OVL_NAME (*m1); - tree d2 = OVL_NAME (*m2); - resort_data.new_value (&d1, resort_data.cookie); - resort_data.new_value (&d2, resort_data.cookie); - if (d1 < d2) - return -1; - } return 1; } |