On Tue, Nov 08, 2022 at 02:36:17PM +0000, Julian Brown wrote: > @@ -3258,6 +3273,7 @@ c_omp_address_inspector::get_origin (tree t) > || TREE_CODE (t) == SAVE_EXPR) > t = TREE_OPERAND (t, 0); > else if (TREE_CODE (t) == INDIRECT_REF > + && TREE_TYPE (TREE_OPERAND (t, 0)) > && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == REFERENCE_TYPE) > t = TREE_OPERAND (t, 0); > else > @@ -3274,7 +3290,9 @@ c_omp_address_inspector::get_origin (tree t) > tree > c_omp_address_inspector::maybe_unconvert_ref (tree t) > { > + /* The TREE_TYPE can be null if we had an earlier error. */ > if (TREE_CODE (t) == INDIRECT_REF > + && TREE_TYPE (TREE_OPERAND (t, 0)) > && TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == REFERENCE_TYPE) > return TREE_OPERAND (t, 0); >
I'd prefer avoiding changes like the above. If we had an earlier error, it should be error_mark_node or have error_mark_node type, not NULL. NULL type means something different in the C++ FE, in particular that something is type dependent and the type will be only figured out after instantiation. Other than that LGTM. Jakub