summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/trans/codegen_c.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index 2c4e436e..4990832e 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -1358,6 +1358,9 @@ namespace {
else if( name == "type_id" ) {
emit_lvalue(e.ret_val); m_of << " = (uintptr_t)&__typeid_" << Trans_Mangle(params.m_types.at(0));
}
+ else if( name == "type_name" ) {
+ emit_lvalue(e.ret_val); m_of << " = \"" << params.m_types.at(0) << "\"";
+ }
else if( name == "transmute" ) {
m_of << "memcpy( &"; emit_lvalue(e.ret_val); m_of << ", &"; emit_lvalue(e.args.at(0)); m_of << ", sizeof("; emit_ctype(params.m_types.at(0)); m_of << "))";
}
@@ -1515,6 +1518,12 @@ namespace {
else if( name == "truncf64" ) {
emit_lvalue(e.ret_val); m_of << " = trunc("; emit_lvalue(e.args.at(0)); m_of << ")";
}
+ else if( name == "powif32" ) {
+ emit_lvalue(e.ret_val); m_of << " = powif("; emit_lvalue(e.args.at(0)); m_of << ")";
+ }
+ else if( name == "powif64" ) {
+ emit_lvalue(e.ret_val); m_of << " = powi("; emit_lvalue(e.args.at(0)); m_of << ")";
+ }
// --- Atomics!
// > Single-ordering atomics
else if( name == "atomic_xadd" || name.compare(0, 7+4+1, "atomic_xadd_") == 0 ) {