File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2329,16 +2329,7 @@ bool Converter::VisitIntegerLiteral(clang::IntegerLiteral *expr) {
23292329}
23302330
23312331bool Converter::VisitFloatingLiteral (clang::FloatingLiteral *expr) {
2332- auto value = expr->getValue ();
2333- if (&value.getSemantics () == &llvm::APFloat::IEEEsingle ()) {
2334- StrCat (std::format (" {}_f32" , value.convertToFloat ()));
2335- } else {
2336- bool loses_info = false ;
2337- value.convert (llvm::APFloat::IEEEdouble (),
2338- llvm::APFloat::rmNearestTiesToEven, &loses_info);
2339- StrCat (value.isInfinity () ? std::string (" f64::INFINITY" )
2340- : std::format (" {}_f64" , value.convertToDouble ()));
2341- }
2332+ StrCat (GetNumAsString (expr->getValue ()));
23422333 computed_expr_type_ = ComputedExprType::FreshValue;
23432334 return false ;
23442335}
Original file line number Diff line number Diff line change @@ -262,6 +262,17 @@ bool IsCodeUnitStringLiteral(const clang::StringLiteral *expr) {
262262 expr->getKind () == clang::StringLiteralKind::UTF8 ;
263263}
264264
265+ std::string GetNumAsString (llvm::APFloat value) {
266+ if (&value.getSemantics () == &llvm::APFloat::IEEEsingle ()) {
267+ return std::format (" {}_f32" , value.convertToFloat ());
268+ }
269+ bool loses_info = false ;
270+ value.convert (llvm::APFloat::IEEEdouble (),
271+ llvm::APFloat::rmNearestTiesToEven, &loses_info);
272+ return value.isInfinity () ? " f64::INFINITY"
273+ : std::format (" {}_f64" , value.convertToDouble ());
274+ }
275+
265276bool IsUserDefinedDecl (const clang::Decl *decl) {
266277 const auto &ctx = decl->getASTContext ();
267278 const auto &src_mgr = ctx.getSourceManager ();
Original file line number Diff line number Diff line change @@ -191,6 +191,8 @@ template <class T> llvm::SmallString<16> GetNumAsString(const T &num) {
191191 return small_string;
192192}
193193
194+ std::string GetNumAsString (llvm::APFloat value);
195+
194196clang::QualType GetReturnTypeOfFunction (const clang::CallExpr *expr);
195197
196198const char *GetOverloadedOperator (const clang::FunctionDecl *decl);
You can’t perform that action at this time.
0 commit comments