about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorVadzim Dambrouski <pftbest@gmail.com>2016-12-12 21:56:52 +0300
committerVadzim Dambrouski <pftbest@gmail.com>2016-12-12 21:56:52 +0300
commit9d764fc3c1607b2f5f84b73d48cbddfef33fa37e (patch)
tree9912219f1a8796389b719977279528be16a2a6ba /src
parentb4b1e5ece21fb497877350c3d6defa143c88076c (diff)
downloadrust-9d764fc3c1607b2f5f84b73d48cbddfef33fa37e.tar.gz
rust-9d764fc3c1607b2f5f84b73d48cbddfef33fa37e.zip
Do not generate '@' character in symbol names.
MSP430 assembler does not like '@' character in symbol names, so we should
only use alphanumerics when we generate a new name.

Fixes #38116
Diffstat (limited to 'src')
-rw-r--r--src/librustc_data_structures/base_n.rs2
-rw-r--r--src/librustc_trans/context.rs2
2 files changed, 3 insertions, 1 deletions
diff --git a/src/librustc_data_structures/base_n.rs b/src/librustc_data_structures/base_n.rs
index bf3e682f86f..4359581a897 100644
--- a/src/librustc_data_structures/base_n.rs
+++ b/src/librustc_data_structures/base_n.rs
@@ -14,6 +14,8 @@
 use std::str;
 
 pub const MAX_BASE: u64 = 64;
+pub const ALPHANUMERIC_ONLY: u64 = 62;
+
 const BASE_64: &'static [u8; MAX_BASE as usize] =
     b"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@$";
 
diff --git a/src/librustc_trans/context.rs b/src/librustc_trans/context.rs
index 8b98eb57814..6435b20eeaa 100644
--- a/src/librustc_trans/context.rs
+++ b/src/librustc_trans/context.rs
@@ -971,7 +971,7 @@ impl<'b, 'tcx> CrateContext<'b, 'tcx> {
         let mut name = String::with_capacity(prefix.len() + 6);
         name.push_str(prefix);
         name.push_str(".");
-        base_n::push_str(idx as u64, base_n::MAX_BASE, &mut name);
+        base_n::push_str(idx as u64, base_n::ALPHANUMERIC_ONLY, &mut name);
         name
     }
 }