diff --git a/gcc/convert.cc b/gcc/convert.cc index 5357609d8f05ec722d6696994debb12adc15fc60..ac6af7026a75041c35bec304823113d82ff090e8 100644 --- a/gcc/convert.cc +++ b/gcc/convert.cc @@ -96,7 +96,7 @@ convert_to_pointer_1 (tree type, tree expr, bool fold_p) default: error ("cannot convert to a pointer type"); - return convert_to_pointer_1 (type, integer_zero_node, fold_p); + return error_mark_node; } } @@ -332,11 +332,11 @@ convert_to_real_1 (tree type, tree expr, bool fold_p) case POINTER_TYPE: case REFERENCE_TYPE: error ("pointer value used where a floating-point was expected"); - return convert_to_real_1 (type, integer_zero_node, fold_p); + return error_mark_node; default: error ("aggregate value used where a floating-point was expected"); - return convert_to_real_1 (type, integer_zero_node, fold_p); + return error_mark_node; } } @@ -959,7 +959,7 @@ convert_to_integer_1 (tree type, tree expr, bool dofold) default: error ("aggregate value used where an integer was expected"); - return convert (type, integer_zero_node); + return error_mark_node; } } @@ -1053,11 +1053,11 @@ convert_to_complex_1 (tree type, tree expr, bool fold_p) case POINTER_TYPE: case REFERENCE_TYPE: error ("pointer value used where a complex was expected"); - return convert_to_complex_1 (type, integer_zero_node, fold_p); + return error_mark_node; default: error ("aggregate value used where a complex was expected"); - return convert_to_complex_1 (type, integer_zero_node, fold_p); + return error_mark_node; } } diff --git a/gcc/objc/objc-gnu-runtime-abi-01.cc b/gcc/objc/objc-gnu-runtime-abi-01.cc index fbf8307297a5dbf23a0652eda024b537e1540fdb..6f45283b307bf6baed3d60c71837923741ffb064 100644 --- a/gcc/objc/objc-gnu-runtime-abi-01.cc +++ b/gcc/objc/objc-gnu-runtime-abi-01.cc @@ -700,6 +700,9 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, lookup_object = build_c_cast (loc, rcv_p, lookup_object); + if (error_operand_p (lookup_object)) + return error_mark_node; + /* Use SAVE_EXPR to avoid evaluating the receiver twice. */ lookup_object = save_expr (lookup_object); diff --git a/gcc/objc/objc-next-runtime-abi-01.cc b/gcc/objc/objc-next-runtime-abi-01.cc index 70ab5262e171526307a02c240a58858b1829eaeb..9e28976043eaba88d6a4b95cff3dcc423dd5d865 100644 --- a/gcc/objc/objc-next-runtime-abi-01.cc +++ b/gcc/objc/objc-next-runtime-abi-01.cc @@ -846,6 +846,9 @@ build_objc_method_call (location_t loc, int super_flag, tree method_prototype, lookup_object = build_c_cast (loc, rcv_p, lookup_object); + if (error_operand_p (lookup_object)) + return error_mark_node; + /* Use SAVE_EXPR to avoid evaluating the receiver twice. */ lookup_object = save_expr (lookup_object); diff --git a/gcc/objc/objc-next-runtime-abi-02.cc b/gcc/objc/objc-next-runtime-abi-02.cc index 6548c0078e0afdc2522dd7597d5bc4aee27df439..723b47c9cf6f01f1ab4eaa5e8f00207536a567e8 100644 --- a/gcc/objc/objc-next-runtime-abi-02.cc +++ b/gcc/objc/objc-next-runtime-abi-02.cc @@ -1729,6 +1729,9 @@ build_v2_build_objc_method_call (int super, tree method_prototype, lookup_object = build_c_cast (loc, rcv_p, lookup_object); + if (error_operand_p (lookup_object)) + return error_mark_node; + /* Use SAVE_EXPR to avoid evaluating the receiver twice. */ lookup_object = save_expr (lookup_object);