| Index: src/IceInstVarIter.h
|
| diff --git a/src/IceInstVarIter.h b/src/IceInstVarIter.h
|
| index 35cee005111a031b3a5ebe09b391575da0fd21bc..4a2c31b5ad0acdd45761d67b912616cc4f57010c 100644
|
| --- a/src/IceInstVarIter.h
|
| +++ b/src/IceInstVarIter.h
|
| @@ -145,8 +145,8 @@
|
| #define FOREACH_VAR_IN_INST(Var, Instr) \
|
| for (SizeT Sz_I##Var##_ = 0, Sz_##Var##Index_ = 0, \
|
| Sz_SrcSize##Var##_ = (Instr).getSrcSize(), Sz_J##Var##_ = 0, \
|
| - Sz_NumVars##Var##_ = 0; \
|
| - Sz_I##Var##_ < Sz_SrcSize##Var##_; ++Sz_I##Var##_) \
|
| + Sz_NumVars##Var##_ = 0, Sz_Foreach_Break = 0; \
|
| + !Sz_Foreach_Break && Sz_I##Var##_ < Sz_SrcSize##Var##_; ++Sz_I##Var##_) \
|
| if (Operand *Sz_Op##Var##_ = nullptr) \
|
| /*nothing*/; \
|
| else \
|
| @@ -154,7 +154,7 @@
|
| (Sz_J##Var##_ = 0, \
|
| Sz_Op##Var##_ = (Instr).getSrc(Sz_I##Var##_), \
|
| Sz_NumVars##Var##_ = Sz_Op##Var##_->getNumVars(), nullptr); \
|
| - Sz_J##Var##_ < Sz_NumVars##Var##_ && \
|
| + !Sz_Foreach_Break && Sz_J##Var##_ < Sz_NumVars##Var##_ && \
|
| ((Var = Sz_Op##Var##_->getVar(Sz_J##Var##_)), true); \
|
| ++Sz_J##Var##_, ++Sz_##Var##Index_)
|
|
|
| @@ -162,6 +162,12 @@
|
| (static_cast<const SizeT>(Sz_##V##_))
|
| #define IndexOfVarInInst(Var) IsOnlyValidInFOREACH_VAR_IN_INST(Var##Index)
|
| #define IndexOfVarOperandInInst(Var) IsOnlyValidInFOREACH_VAR_IN_INST(I##Var)
|
| +#define FOREACH_VAR_IN_INST_BREAK \
|
| + if (true) { \
|
| + Sz_Foreach_Break = 1; \
|
| + continue; \
|
| + } else { \
|
| + }
|
| #undef OnlyValidIn_FOREACH_VAR_IN_INSTS
|
|
|
| #endif // SUBZERO_SRC_ICEINSTVARITER_H
|
|
|