[LLVMdev] Type safe MVT::ValueType
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
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev