[LLVMdev] Type safe MVT::ValueType

Chris Lattner sabre at nondot.org
Thu Jun 5 23:21:51 PDT 2008

Looks awesome to me Duncan, please apply.  Very nice!


On Jun 5, 2008, at 1:38 PM, Duncan Sands wrote:

> I would like to apply the attached patch which
> changes MVT::ValueType (currently a uint32_t) into
> a one-element struct (the element being a uint32_t).
> This makes it harder to misuse MVT::ValueType.  Thanks
> to this patch I found two cases in which the arguments
> to DAG.getConstant were inverted and one in which
> getStore was being passed an ValueType for the "volatile"
> argument.  When I first started on this patch a few months
> ago I found several other similar examples which I fixed
> at the time.  The other reason for applying it is that
> it gives better control over how the type is used, for
> example the DAG combiner regularly compares value types
> using "<" but these are wrong for apints.  I plan to fix
> all these kinds of issues once this patch is in.
> The struct is named MVT so also plays the role previously
> played by the namespace.
> This means that MVT::ValueType -> MVT, and rather than
> writing MVT::getBitSize(VT) you write VT.getBitSize().
> If it passes testing I plan to commit it quickly because
> this kind of massive patch bitrots fast.  So if you have
> any objections please make them known now!
> Tests with llvm-g++ show that the new type is a POD.  I will
> check before committing that it doesn't slow codegen down.
> This patch is not supposed to change functionality, but
> it might because a few pieces of target code will now assert
> if they get an extended value type, while they wouldn't
> before.  I think they are supposed to only get simple value
> types...
> Duncan.
> <vstruct.diff>_______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list