Skip to content
Snippets Groups Projects
  • Mark Mitchell's avatar
    d17811fd
    fold-const.c (make_range): Do not access operand 1 for a zero-operand operator. · d17811fd
    Mark Mitchell authored
    	* fold-const.c (make_range): Do not access operand 1 for a
    	zero-operand operator.
    
    2003-07-08  Mark Mitchell  <mark@codesourcery.com>
    
    	* cp-tree.def (NON_DEPENDENT_EXPR): New node.
    	* cp-tree.h (build_call_from_tree): Remove.
    	(build_member_call): Likewise.
    	(dependent_template_arg_p): Remove.
    	(any_dependent_template_arguments_p): New function.
    	(dependent_template_id_p): Likewise.
    	(any_type_dependent_arguments_p): Likewise.
    	(build_non_dependent_expr): Likewise.
    	(build_non_dependent_args): Likewise.
    	(build_x_compound_expr): Adjust prototype.
    	* call.c (build_new_method_call): Handle non-dependent expressions
    	correctly.
    	* decl2.c (grok_array_decl): Likewise.
    	(build_offset_ref_call_from_tree): Likewise.
    	(build_call_from_tree): Remove.
    	* error.c (dump_decl): Handle NON_DEPENDENT_EXPR.
    	(dump_expr): Likewise.
    	* init.c (build_member_call): Remove.
    	* mangle.c (write_expression): Update handling for template-ids.
    	* parser.c (cp_parser_primary_expression): Use
    	any_dependent_template_arguments_p.  Update constant-expression
    	handling.
    	(cp_parser_postfix_expression): Use
    	any_type_dependent_arguments_p.  Simplify call processing.
    	(cp_parser_unary_expression): Simplify.
    	(cp_parser_expression): Adjust for changes to
    	build_x_compound_expr.
    	(cp_parser_template_argument): Implement standard-conforming
    	parsing of non-type template arguments.
    	(cp_parser_direct_declarator): Use
    	cp_parser_fold_non_dependent_expr.
    	(cp_parser_fold_non_dependent_expr): New function.
    	(cp_parser_next_token_ends_template_argument_p): Likewise.
    	* pt.c (convert_template_argument): Do not call
    	maybe_fold_nontype_arg.
    	(tsubst_baselink): Likewise.
    	(tsubst_copy_and_build): Share common code.  Make sizeof/alignof
    	processing work correctly for non-dependent expressions.  Adjust
    	handling of COMPOUND_EXPR.  Simplify call processing.
    	(value_dependent_expression_p): Deal with functional casts and
    	sizeof/alignof correctly.
    	(type_dependent_expression_p): Handle overloaded functions.
    	(any_type_dependent_arguments_p): New function.
    	(any_dependent_template_arguments_p): Likewise.
    	(dependent_template_p): Treat SCOPE_REFs as dependent.
    	(dependent_template_id_p): Simplify.
    	(build_non_dependent_expr): New function.
    	(build_non_dependent_args): Likewise.
    	* semantics.c (finish_stmt_expr): Don't make dependent
    	statement-expresions have void type.
    	(finish_call_expr): Handle non-dependent expressions
    	correctly.
    	* tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues.
    	* typeck.c (cxx_sizeof_or_alignof_type): Give the expression
    	type size_t, even in templates.
    	(expr_sizeof): Likewise.
    	(finish_class_member_access_expr): Handle non-dependent expressions
    	correctly.
    	(build_x_indirect_ref): Likewise.
    	(build_x_binary_op): Likewise.
    	(build_x_unary_op): Likewise.
    	(build_x_conditional_expr): Likewise.
    	(build_x_compound_expr): Likewise.
    	* typeck2.c (build_x_arrow): Likewise.
    
    2003-07-08  Mark Mitchell  <mark@codesourcery.com>
    
    	* g++.dg/abi/mangle17.C: Make sure template expressions are
    	dependent.
    	* g++.dg/abi/mangle4.C: Mark erroneous casts.
    	* g++.dg/debug/debug7.C: Mark erronous new-declarator.
    	* g++.dg/opt/stack1.C: Remove erroneous code.
    	* g++.dg/parse/template7.C: New test.
    	* g++.dg/template/dependent-expr1.C: Mark erroneous code.
    	* g++.old-deja/g++.pt/crash4.C: Likewise.
    
    2003-07-09  Mark Mitchell  <mark@codesourcery.com>
    
    	* gcj/array.h (JvPrimClass): Don't parenthesize the output.
    
    From-SVN: r69130
    d17811fd
    History
    fold-const.c (make_range): Do not access operand 1 for a zero-operand operator.
    Mark Mitchell authored
    	* fold-const.c (make_range): Do not access operand 1 for a
    	zero-operand operator.
    
    2003-07-08  Mark Mitchell  <mark@codesourcery.com>
    
    	* cp-tree.def (NON_DEPENDENT_EXPR): New node.
    	* cp-tree.h (build_call_from_tree): Remove.
    	(build_member_call): Likewise.
    	(dependent_template_arg_p): Remove.
    	(any_dependent_template_arguments_p): New function.
    	(dependent_template_id_p): Likewise.
    	(any_type_dependent_arguments_p): Likewise.
    	(build_non_dependent_expr): Likewise.
    	(build_non_dependent_args): Likewise.
    	(build_x_compound_expr): Adjust prototype.
    	* call.c (build_new_method_call): Handle non-dependent expressions
    	correctly.
    	* decl2.c (grok_array_decl): Likewise.
    	(build_offset_ref_call_from_tree): Likewise.
    	(build_call_from_tree): Remove.
    	* error.c (dump_decl): Handle NON_DEPENDENT_EXPR.
    	(dump_expr): Likewise.
    	* init.c (build_member_call): Remove.
    	* mangle.c (write_expression): Update handling for template-ids.
    	* parser.c (cp_parser_primary_expression): Use
    	any_dependent_template_arguments_p.  Update constant-expression
    	handling.
    	(cp_parser_postfix_expression): Use
    	any_type_dependent_arguments_p.  Simplify call processing.
    	(cp_parser_unary_expression): Simplify.
    	(cp_parser_expression): Adjust for changes to
    	build_x_compound_expr.
    	(cp_parser_template_argument): Implement standard-conforming
    	parsing of non-type template arguments.
    	(cp_parser_direct_declarator): Use
    	cp_parser_fold_non_dependent_expr.
    	(cp_parser_fold_non_dependent_expr): New function.
    	(cp_parser_next_token_ends_template_argument_p): Likewise.
    	* pt.c (convert_template_argument): Do not call
    	maybe_fold_nontype_arg.
    	(tsubst_baselink): Likewise.
    	(tsubst_copy_and_build): Share common code.  Make sizeof/alignof
    	processing work correctly for non-dependent expressions.  Adjust
    	handling of COMPOUND_EXPR.  Simplify call processing.
    	(value_dependent_expression_p): Deal with functional casts and
    	sizeof/alignof correctly.
    	(type_dependent_expression_p): Handle overloaded functions.
    	(any_type_dependent_arguments_p): New function.
    	(any_dependent_template_arguments_p): Likewise.
    	(dependent_template_p): Treat SCOPE_REFs as dependent.
    	(dependent_template_id_p): Simplify.
    	(build_non_dependent_expr): New function.
    	(build_non_dependent_args): Likewise.
    	* semantics.c (finish_stmt_expr): Don't make dependent
    	statement-expresions have void type.
    	(finish_call_expr): Handle non-dependent expressions
    	correctly.
    	* tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues.
    	* typeck.c (cxx_sizeof_or_alignof_type): Give the expression
    	type size_t, even in templates.
    	(expr_sizeof): Likewise.
    	(finish_class_member_access_expr): Handle non-dependent expressions
    	correctly.
    	(build_x_indirect_ref): Likewise.
    	(build_x_binary_op): Likewise.
    	(build_x_unary_op): Likewise.
    	(build_x_conditional_expr): Likewise.
    	(build_x_compound_expr): Likewise.
    	* typeck2.c (build_x_arrow): Likewise.
    
    2003-07-08  Mark Mitchell  <mark@codesourcery.com>
    
    	* g++.dg/abi/mangle17.C: Make sure template expressions are
    	dependent.
    	* g++.dg/abi/mangle4.C: Mark erroneous casts.
    	* g++.dg/debug/debug7.C: Mark erronous new-declarator.
    	* g++.dg/opt/stack1.C: Remove erroneous code.
    	* g++.dg/parse/template7.C: New test.
    	* g++.dg/template/dependent-expr1.C: Mark erroneous code.
    	* g++.old-deja/g++.pt/crash4.C: Likewise.
    
    2003-07-09  Mark Mitchell  <mark@codesourcery.com>
    
    	* gcj/array.h (JvPrimClass): Don't parenthesize the output.
    
    From-SVN: r69130