d: Call the assertp and boundsp variants for assert and array contract failures.
commit766f5f8726965dfe69e70f234a08f6bccedc144e
authorIain Buclaw <ibuclaw@gdcproject.org>
Sat, 28 Aug 2021 22:50:38 +0000 (29 00:50 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Sun, 29 Aug 2021 15:19:03 +0000 (29 17:19 +0200)
tree3faf414ef540d78219b3e3832a658dc31a7e0e53
parent118a559df998051430c2068cfa4e03479c0c85da
d: Call the assertp and boundsp variants for assert and array contract failures.

gcc/d/ChangeLog:

* d-codegen.cc: Include dmd/module.h.
(build_filename_from_loc): New function.
(d_assert_call): Rename to...
(build_assert_call): ...this.
(build_array_bounds_call): Call arrayboundsp variant of the array
bounds failure callback.
(build_bounds_condition): Rename to...
(build_bounds_index_condition): ...this.  Update signature.
(build_bounds_slice_condition): New function.
(checkaction_trap_p): New function.
(d_assert_call): Call assertp variant of assert failure callback.
* d-tree.h (class IndexExp): Declare.
(class SliceExp): Declare.
(build_bounds_condition): Remove.
(build_assert_call): Declare.
(build_bounds_index_condition): Declare.
(build_bounds_slice_condition): Declare.
(checkaction_trap_p): Declare.
(d_assert_call): Remove.
* expr.cc (ExprVisitor::visit(IndexExp *)): Call
build_bounds_index_condition.
(ExprVisitor::visit(SliceExp *)): Call build_bounds_slice_condition.
(ExprVisitor::visit(AssertExp *)): Update setting of libcall.
* runtime.cc (enum d_libcall_type): Add LCT_IMMUTABLE_CHARPTR.
(get_libcall_type): Handle LCT_IMMUTABLE_CHARPTR.
* runtime.def (ASSERT): Rename to...
(ASSERTP): ...this.  Update signature.
(UNITTEST): Rename to...
(UNITTESTP): ...this.  Update signature.
(ARRAY_BOUNDS): Rename to...
(ARRAYBOUNDSP): ...this.  Updates signature.
* toir.cc (IRVisitor::visit(SwitchErrorStatement *)): Update call.
gcc/d/d-codegen.cc
gcc/d/d-tree.h
gcc/d/expr.cc
gcc/d/runtime.cc
gcc/d/runtime.def
gcc/d/toir.cc