Previously, the default ABI was set to Rust, which is not correct for
extern blocks and extern functions. This patch changes the default
ABI to C for these cases.
gcc/rust/ChangeLog:
* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers):
Change default ABI to C for extern functions
(ASTLoweringBase::lower_extern_block): Likewise
Signed-off-by: Nobel Singh <nobel2073@gmail.com>
Unsafety unsafety
= qualifiers.is_unsafe () ? Unsafety::Unsafe : Unsafety::Normal;
bool has_extern = qualifiers.is_extern ();
+ ABI abi = has_extern ? ABI::C : ABI::RUST;
- ABI abi = ABI::RUST;
if (qualifiers.has_abi ())
{
const std::string &extern_abi = qualifiers.get_extern_abi ();
extern_items.push_back (std::unique_ptr<HIR::ExternalItem> (lowered));
}
- ABI abi = ABI::RUST;
+ ABI abi = ABI::C;
if (extern_block.has_abi ())
{
const std::string &extern_abi = extern_block.get_abi ();