Khi xây dựng IR từ một AST hiện có, AST của tôi có một số giá trị chuỗi (tại thời gian biên dịch chúng được xây dựng từ std::string
) và tôi muốn cài đặt chúng một cách an toàn như llvm::Value
để sử dụng như một phần của một biểu thức.LLVM String Value objects: Làm thế nào tôi có thể lấy String từ một giá trị?
Trong trường hợp này, tôi không cần phải ràng buộc chuỗi tại thời gian chạy, bởi vì các giá trị chuỗi chỉ có nghĩa là để giải quyết các công cụ như biến, hàm hoặc lớp tại thời gian biên dịch (ngôn ngữ không hỗ trợ loại chuỗi).
Làm cách nào tốt nhất để giữ nội dung chuỗi của tôi là llvm::Value
và vẫn có thể truy xuất nó ở các giai đoạn biên dịch sau (khi biểu thức lồng được tạo)?
Cụ thể hơn, nếu tôi đặt llvm::Value
với:
llvm::Value* v = llvm::ConstantArray::get(llvmContext, myString.c_str());
Làm thế nào để an toàn lấy giá trị chuỗi? Có phải llvm::ConstantArray
cách thích hợp để quấn dây không?