# HG changeset patch # User lindquist # Date 1210597135 -7200 # Node ID 2900754a69896d28a5a062bdcdd1641628bcff47 # Parent 36044016709a73999034f15f7efa426c51025823 [svn r207] Fixed: the runtime support didn't handle string switch. diff -r 36044016709a -r 2900754a6989 gen/runtime.cpp --- a/gen/runtime.cpp Mon May 12 14:32:29 2008 +0200 +++ b/gen/runtime.cpp Mon May 12 14:58:55 2008 +0200 @@ -696,6 +696,40 @@ const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); new llvm::Function(fty, llvm::GlobalValue::ExternalLinkage, fname, M); } + + ///////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////////////// + + // int _d_switch_string(char[][] table, char[] ca) + { + std::string fname("_d_switch_string"); + std::vector types; + types.push_back(rt_array(stringTy)); + types.push_back(stringTy); + const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); + new llvm::Function(fty, llvm::GlobalValue::ExternalLinkage, fname, M); + } + + // int _d_switch_ustring(wchar[][] table, wchar[] ca) + { + std::string fname("_d_switch_ustring"); + std::vector types; + types.push_back(rt_array(wstringTy)); + types.push_back(wstringTy); + const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); + new llvm::Function(fty, llvm::GlobalValue::ExternalLinkage, fname, M); + } + + // int _d_switch_dstring(dchar[][] table, dchar[] ca) + { + std::string fname("_d_switch_dstring"); + std::vector types; + types.push_back(rt_array(dstringTy)); + types.push_back(dstringTy); + const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); + new llvm::Function(fty, llvm::GlobalValue::ExternalLinkage, fname, M); + } }