GP-3269 Never input cast to SUBPIECE or PIECE

This commit is contained in:
caheckman 2023-03-29 18:23:56 -04:00
parent edc7515e29
commit 6981a90700
2 changed files with 14 additions and 2 deletions

View file

@ -1899,6 +1899,12 @@ string TypeOpPiece::getOperatorName(const PcodeOp *op) const
return s.str(); return s.str();
} }
Datatype *TypeOpPiece::getInputCast(const PcodeOp *op,int4 slot,const CastStrategy *castStrategy) const
{
return (Datatype *)0; // Never need a cast into a PIECE
}
Datatype *TypeOpPiece::getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const Datatype *TypeOpPiece::getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const
{ {
@ -1926,6 +1932,12 @@ string TypeOpSubpiece::getOperatorName(const PcodeOp *op) const
return s.str(); return s.str();
} }
Datatype *TypeOpSubpiece::getInputCast(const PcodeOp *op,int4 slot,const CastStrategy *castStrategy) const
{
return (Datatype *)0; // Never need a cast into a SUBPIECE
}
Datatype *TypeOpSubpiece::getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const Datatype *TypeOpSubpiece::getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const
{ {

View file

@ -733,6 +733,7 @@ public:
class TypeOpPiece : public TypeOpFunc { class TypeOpPiece : public TypeOpFunc {
public: public:
TypeOpPiece(TypeFactory *t); ///< Constructor TypeOpPiece(TypeFactory *t); ///< Constructor
virtual Datatype *getInputCast(const PcodeOp *op,int4 slot,const CastStrategy *castStrategy) const;
virtual Datatype *getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const; virtual Datatype *getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const;
virtual string getOperatorName(const PcodeOp *op) const; virtual string getOperatorName(const PcodeOp *op) const;
virtual void push(PrintLanguage *lng,const PcodeOp *op,const PcodeOp *readOp) const { lng->opPiece(op); } virtual void push(PrintLanguage *lng,const PcodeOp *op,const PcodeOp *readOp) const { lng->opPiece(op); }
@ -742,8 +743,7 @@ public:
class TypeOpSubpiece : public TypeOpFunc { class TypeOpSubpiece : public TypeOpFunc {
public: public:
TypeOpSubpiece(TypeFactory *t); ///< Constructor TypeOpSubpiece(TypeFactory *t); ///< Constructor
// virtual Datatype *getOutputLocal(const PcodeOp *op) const; virtual Datatype *getInputCast(const PcodeOp *op,int4 slot,const CastStrategy *castStrategy) const;
// virtual Datatype *getInputLocal(const PcodeOp *op,int4 slot) const;
virtual Datatype *getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const; virtual Datatype *getOutputToken(const PcodeOp *op,CastStrategy *castStrategy) const;
virtual Datatype *propagateType(Datatype *alttype,PcodeOp *op,Varnode *invn,Varnode *outvn, virtual Datatype *propagateType(Datatype *alttype,PcodeOp *op,Varnode *invn,Varnode *outvn,
int4 inslot,int4 outslot); int4 inslot,int4 outslot);