From: Valentin Clement Date: Mon, 7 Feb 2022 11:17:02 +0000 (+0100) Subject: [flang] Add lowering for ASCII character constant X-Git-Tag: upstream/15.0.7~17555 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=74751f4b0c312592494c6cc9922bea1ec71372a8;p=platform%2Fupstream%2Fllvm.git [flang] Add lowering for ASCII character constant Lower character constant of KIND = 1 with the `createStringLiteral` helper function. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: kiranchandramohan, schweitz Differential Revision: https://reviews.llvm.org/D118992 --- diff --git a/flang/lib/Lower/ConvertExpr.cpp b/flang/lib/Lower/ConvertExpr.cpp index 2f159fe..f97e440 100644 --- a/flang/lib/Lower/ConvertExpr.cpp +++ b/flang/lib/Lower/ConvertExpr.cpp @@ -292,6 +292,16 @@ public: } } + /// Convert a ascii scalar literal CHARACTER to IR. (specialization) + ExtValue + genAsciiScalarLit(const Fortran::evaluate::Scalar> &value, + int64_t len) { + assert(value.size() == static_cast(len) && + "value.size() doesn't match with len"); + return fir::factory::createStringLiteral(builder, getLoc(), value); + } + template ExtValue genval(const Fortran::evaluate::Constant> @@ -302,7 +312,9 @@ public: opt = con.GetScalarValue(); assert(opt.has_value() && "constant has no value"); if constexpr (TC == Fortran::common::TypeCategory::Character) { - TODO(getLoc(), "genval char constant"); + if constexpr (KIND == 1) + return genAsciiScalarLit(opt.value(), con.LEN()); + TODO(getLoc(), "genval for Character with KIND != 1"); } else { return genScalarLit(opt.value()); }