Skip to content

Conversation

philberty
Copy link
Member

This pulls over more constexpr support from C++ front-end.

Fixes #4146

gcc/rust/ChangeLog:

* backend/rust-constexpr.cc (eval_constant_expression): port over missing bits
(eval_store_expression): likewise
(eval_call_expression): likewise
(eval_binary_expression): likewise
(eval_bit_field_ref): likewise
(eval_check_shift_p): likewise
(fold_pointer_plus_expression): likewise
(maybe_fold_addr_pointer_plus): likewise
(fold_expr): likewise
(union_active_member): likewise
(fold_indirect_ref_1): likewise
(rs_fold_indirect_ref): likewise
(rs_eval_indirect_ref): likewise
(eval_logical_expression): likewise
(eval_vector_conditional_expression): likewise
(eval_bare_aggregate): likewise
(cxx_eval_trinary_expression): likewise
(eval_and_check_array_index): likewise
(eval_array_reference): likewise
(eval_component_reference): likewise
(rs_bind_parameters_in_call): likewise
(eval_builtin_function_call): likewise
(constexpr_fn_retval): likewise
(verify_constant): likewise
(get_array_or_vector_nelts): likewise
(eval_conditional_expression): likewise
(eval_switch_expr): likewise
(eval_unary_expression): likewise
(cxx_eval_outermost_constant_expr): likewise
(potential_constant_expression_1): likewise

gcc/testsuite/ChangeLog:

* rust/compile/issue-2394.rs: Update test case
* rust/compile/issue-4146.rs: New test.

This pulls over more constexpr support from C++ front-end.

Fixes #4146

gcc/rust/ChangeLog:

	* backend/rust-constexpr.cc (eval_constant_expression): port over missing bits
	(eval_store_expression): likewise
	(eval_call_expression): likewise
	(eval_binary_expression): likewise
	(eval_bit_field_ref): likewise
	(eval_check_shift_p): likewise
	(fold_pointer_plus_expression): likewise
	(maybe_fold_addr_pointer_plus): likewise
	(fold_expr): likewise
	(union_active_member): likewise
	(fold_indirect_ref_1): likewise
	(rs_fold_indirect_ref): likewise
	(rs_eval_indirect_ref): likewise
	(eval_logical_expression): likewise
	(eval_vector_conditional_expression): likewise
	(eval_bare_aggregate): likewise
	(cxx_eval_trinary_expression): likewise
	(eval_and_check_array_index): likewise
	(eval_array_reference): likewise
	(eval_component_reference): likewise
	(rs_bind_parameters_in_call): likewise
	(eval_builtin_function_call): likewise
	(constexpr_fn_retval): likewise
	(verify_constant): likewise
	(get_array_or_vector_nelts): likewise
	(eval_conditional_expression): likewise
	(eval_switch_expr): likewise
	(eval_unary_expression): likewise
	(cxx_eval_outermost_constant_expr): likewise
	(potential_constant_expression_1): likewise

gcc/testsuite/ChangeLog:

	* rust/compile/issue-2394.rs: Update test case
	* rust/compile/issue-4146.rs: New test.

Signed-off-by: Philip Herron <[email protected]>
@philberty philberty added this pull request to the merge queue Sep 16, 2025
Merged via the queue into master with commit 88384ab Sep 16, 2025
13 checks passed
@github-project-automation github-project-automation bot moved this from Todo to Done in libcore 1.49 Sep 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

segfault build_fold_addr_expr_with_type_loc(unsigned long, tree_node*, tree_node*) , division by zero

1 participant