[llvm-dev] ConstantFP->getType() is not right

Craig Topper via llvm-dev llvm-dev at lists.llvm.org
Wed Sep 25 19:59:17 PDT 2019


The Type passed to llvm::ConstantFP::get is only used to get the context
and to determine if the constant needs to be a vector. The width is taken
from the APFloat passed in. There is an assert in the implementation that
makes sure the scalar type of the type passed in matches the size of the
APFloat. Is your llvm library compiled with asserts enabled?

You can use ConstantExpr::getFPExtend to do what you want.

~Craig


On Wed, Sep 25, 2019 at 7:43 PM Yafei Liu via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi, I want to create a double constant from a float constant, here's my
> code:
>
> auto* constFloat1 =
> static_cast<llvm::ConstantFP*>(llvm::ConstantFP::get(llvm::Type::getFloatTy(context),
> 3.1));
>
>   assert(constFloat1->getType() == llvm::Type::getFloatTy(context));
>
>
>   auto* constFloat2 =
> llvm::ConstantFP::get(llvm::Type::getDoubleTy(context),
> constFloat1->getValueAPF());
>
>   assert(constFloat2->getType() == llvm::Type::getDoubleTy(context));
>
> but the second assert failed, the type of constFloat2 is still float, not
> double, why?
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190925/5a418789/attachment.html>


More information about the llvm-dev mailing list