gnu/gcc/ecb843c77de84add5fa315ff06ea99494aa27374 gccrs: Introduce CStr language item
gcc/rust/ChangeLog:
* util/rust-lang-item.h (LangItem::Kind): New CSTR kind.
* util/rust-lang-item.cc (LangItem::lang_items): Ditto.
* backend/rust-compile-type.cc (visit(TyTy::ReferenceType)): Add specific record
type for CStr.
* typecheck/rust-tyty.h (ReferenceType): Add function definition for is_dyn_cstr_type.
* typecheck/rust-tyty.cc (ReferenceType::is_dyn_object): Update to include
is_dyn_cstr_type.
(ReferenceType::is_dyn_cstr_type): Add implementation to check whether the
ReferenceType is of type CStr.
* typecheck/rust-hir-type-check-base.cc(resolve_literal): Update C_STRING case to
resolve to the CStr language item instead.
gcc/testsuite/ChangeLog:
* rust/execute/torture/c_string.rs: Add CStr language item definition.
* rust/compile/c_string_null_byte_check.rs: Ditto.
* rust/execute/torture/c_string_ensure_null_term.rs: New test.
Signed-Off-By: Yap Zhi Heng <yapzhhg@gmail.com>
9 files changed