aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/util/rust-hir-map.cc
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-07-27 13:36:51 +0000
committerGitHub <noreply@github.com>2021-07-27 13:36:51 +0000
commitf76ddb42f82c04baf6b14aef1b532ccb5a0425bb (patch)
tree5b2ddeb0e2c1839ff97d7aa78886345295ef607a /gcc/rust/util/rust-hir-map.cc
parent9526e6d62167ff824814c7ac8c09b36316029262 (diff)
parent7f8adccb5056152edc4aacf08ce2ed040f076171 (diff)
downloadgcc-f76ddb42f82c04baf6b14aef1b532ccb5a0425bb.zip
gcc-f76ddb42f82c04baf6b14aef1b532ccb5a0425bb.tar.gz
gcc-f76ddb42f82c04baf6b14aef1b532ccb5a0425bb.tar.bz2
Merge #598
598: Hello world r=philberty a=philberty ```rust extern "C" { fn puts(s: *const i8); } fn main() { unsafe { let a = "Hello World\0"; let b = a as *const str; let c = b as *const i8; puts(c); } } ``` Fixes #421 Co-authored-by: Philip Herron <philip.herron@embecosm.com>
Diffstat (limited to 'gcc/rust/util/rust-hir-map.cc')
-rw-r--r--gcc/rust/util/rust-hir-map.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc
index 40b5167..69fbe25 100644
--- a/gcc/rust/util/rust-hir-map.cc
+++ b/gcc/rust/util/rust-hir-map.cc
@@ -284,6 +284,30 @@ Mappings::lookup_hir_trait_item (CrateNum crateNum, HirId id)
}
void
+Mappings::insert_hir_extern_item (CrateNum crateNum, HirId id,
+ HIR::ExternalItem *item)
+{
+ rust_assert (lookup_hir_extern_item (crateNum, id) == nullptr);
+
+ hirExternItemMappings[crateNum][id] = item;
+ nodeIdToHirMappings[crateNum][item->get_mappings ().get_nodeid ()] = id;
+}
+
+HIR::ExternalItem *
+Mappings::lookup_hir_extern_item (CrateNum crateNum, HirId id)
+{
+ auto it = hirExternItemMappings.find (crateNum);
+ if (it == hirExternItemMappings.end ())
+ return nullptr;
+
+ auto iy = it->second.find (id);
+ if (iy == it->second.end ())
+ return nullptr;
+
+ return iy->second;
+}
+
+void
Mappings::insert_hir_impl_block (CrateNum crateNum, HirId id,
HIR::ImplBlock *item)
{