diff options
Diffstat (limited to 'lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h')
| -rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h index 77e131fa551c..431d52b4b9b9 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h +++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h @@ -975,18 +975,28 @@ struct RegsForValue {    /// expanded value requires multiple registers.    SmallVector<unsigned, 4> Regs; +  /// This list holds the number of registers for each value. +  SmallVector<unsigned, 4> RegCount; + +  /// Records if this value needs to be treated in an ABI dependant manner, +  /// different to normal type legalization. +  bool IsABIMangled; +    RegsForValue(); -  RegsForValue(const SmallVector<unsigned, 4> ®s, MVT regvt, EVT valuevt); +  RegsForValue(const SmallVector<unsigned, 4> ®s, MVT regvt, EVT valuevt, +               bool IsABIMangledValue = false);    RegsForValue(LLVMContext &Context, const TargetLowering &TLI, -               const DataLayout &DL, unsigned Reg, Type *Ty); +               const DataLayout &DL, unsigned Reg, Type *Ty, +               bool IsABIMangledValue = false);    /// Add the specified values to this one.    void append(const RegsForValue &RHS) {      ValueVTs.append(RHS.ValueVTs.begin(), RHS.ValueVTs.end());      RegVTs.append(RHS.RegVTs.begin(), RHS.RegVTs.end());      Regs.append(RHS.Regs.begin(), RHS.Regs.end()); +    RegCount.push_back(RHS.Regs.size());    }    /// Emit a series of CopyFromReg nodes that copies from this value and returns  | 
