def test_ident(self): got = itanium_mangler.mangle_identifier("apple") expect = "5apple" self.assertEqual(expect, got) got = itanium_mangler.mangle_identifier("ap_ple") expect = "6ap_ple" self.assertEqual(expect, got) got = itanium_mangler.mangle_identifier("apple213") expect = "8apple213" self.assertEqual(expect, got)
def test_ident(self): got = itanium_mangler.mangle_identifier("apple") expect = "5apple" self.assertEqual(expect, got) got = itanium_mangler.mangle_identifier("ap_ple") expect = "6ap_ple" self.assertEqual(expect, got) got = itanium_mangler.mangle_identifier("apple213") expect = "8apple213" self.assertEqual(expect, got)
def insert_const_string(self, mod, string): """ Unlike the parent version. This returns a a pointer in the constant addrspace. """ text = Constant.stringz(string) name = '$'.join(["__conststring__", itanium_mangler.mangle_identifier(string)]) # Try to reuse existing global gv = mod.globals.get(name) if gv is None: # Not defined yet gv = mod.add_global_variable(text.type, name=name, addrspace=nvvm.ADDRSPACE_CONSTANT) gv.linkage = LINKAGE_INTERNAL gv.global_constant = True gv.initializer = text # Cast to a i8* pointer charty = gv.type.pointee.element return Constant.bitcast(gv, charty.as_pointer(nvvm.ADDRSPACE_CONSTANT))
def insert_const_string(self, mod, string): """ Unlike the parent version. This returns a a pointer in the constant addrspace. """ text = Constant.stringz(string) name = '$'.join(["__conststring__", itanium_mangler.mangle_identifier(string)]) # Try to reuse existing global gv = mod.globals.get(name) if gv is None: # Not defined yet gv = mod.add_global_variable(text.type, name=name, addrspace=nvvm.ADDRSPACE_CONSTANT) gv.linkage = LINKAGE_INTERNAL gv.global_constant = True gv.initializer = text # Cast to a i8* pointer charty = gv.type.pointee.element return Constant.bitcast(gv, charty.as_pointer(nvvm.ADDRSPACE_CONSTANT))
def test_mangle_unicode(self): name = u'f∂ƒ©z' got = itanium_mangler.mangle_identifier(name) self.assertRegexpMatches(got, r'^\d+f(\$[a-z0-9][a-z0-9])+z$')
def test_mangle_unicode(self): name = u'f∂ƒ©z' got = itanium_mangler.mangle_identifier(name) self.assertRegexpMatches(got, r'^\d+f(\$[a-z0-9][a-z0-9])+z$')