ConstantInt::getRawValue

Is there are reason why ConstantInt::getRawValue method can't be moved one
step into class hierarchy, into ConstantIntegral::getRawValue

The reason I'd like this is that to handle both ConstantInt and ConstantBool,
I need the following:

  if (ConstantInt* CI = dyn_cast<ConstantInt>(V)) {
     BuildMI(*MBB, IPt, NM::MOVE, 1, Reg).addImm(CI->getRawValue());
   } if (ConstantBool* CB = dyn_cast<ConstantBool>(V)) {
     BuildMI(*MBB, IPt, NM::MOVE, 1, Reg).addImm(CI->getalue());
   } ...

If getRawValue is moved to ConstantIntegral, I'd simply write

  if (ConstantIntegral* CI = dyn_cast<ConstantInt>(V)) {
     BuildMI(*MBB, IPt, NM::MOVE, 1, Reg).addImm(CI->getRawValue());
  } ...

which is a bit nicer. Of course, if you think it's a good idea, I can send a
patch.

- Volodya

Sure that sounds great. It increases the size of the ConstantBool class,
but since there are only two instances of it ever created, I think we can
live with this. :slight_smile:

-Chris

Chris Lattner wrote:

> If getRawValue is moved to ConstantIntegral, I'd simply write
>
> if (ConstantIntegral* CI = dyn_cast<ConstantInt>(V)) {
> BuildMI(*MBB, IPt, NM::MOVE, 1, Reg).addImm(CI->getRawValue());
> } ...
>
> which is a bit nicer. Of course, if you think it's a good idea, I can
> send a patch.

Sure that sounds great. It increases the size of the ConstantBool class,
but since there are only two instances of it ever created, I think we can
live with this. :slight_smile:

I actually meant making getRawValue into a virtual function, so the size of
ConstantBool won't change, but speed might change. I'm not at all sure that
the virtual call overhead will be noticable, but if you prefer to move both
getRawValue and Val into ConstantIntergal, that's fine with me, too -- I can
make a change either way.

- Volodya

Yes, please move those up to ConstantBool.

-Chris