diff options
author | Jonghyun Park <parjong@gmail.com> | 2017-01-20 19:34:16 +0900 |
---|---|---|
committer | Jan Vorlicek <janvorli@microsoft.com> | 2017-01-20 11:34:16 +0100 |
commit | d17e8c5f587fd8971dd61c2f282d98d395b5e4fc (patch) | |
tree | fea9d37e272f138c66eafbe25ea2342542fd2b92 /src/jit/emit.h | |
parent | 9743c40692687d6ad0bb43046d88b3bbf021f3f2 (diff) | |
download | coreclr-d17e8c5f587fd8971dd61c2f282d98d395b5e4fc.tar.gz coreclr-d17e8c5f587fd8971dd61c2f282d98d395b5e4fc.tar.bz2 coreclr-d17e8c5f587fd8971dd61c2f282d98d395b5e4fc.zip |
[x86/Linux] Allow push/pop in funclet prolog and epilog (#9001)
* [x86/Linux] Allow Push/Pop in Funclet Prolog and Epilog
Diffstat (limited to 'src/jit/emit.h')
-rw-r--r-- | src/jit/emit.h | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/jit/emit.h b/src/jit/emit.h index 5b1a395379..f57cc0a0f7 100644 --- a/src/jit/emit.h +++ b/src/jit/emit.h @@ -270,16 +270,14 @@ struct insGroup #define IGF_FINALLY_TARGET 0x0004 // this group is the start of a basic block that is returned to after a finally. #endif // FEATURE_EH_FUNCLETS && defined(_TARGET_ARM_) #define IGF_FUNCLET_PROLOG 0x0008 // this group belongs to a funclet prolog -#ifdef DEBUG -#define IGF_FUNCLET_EPILOG 0x0010 // this group belongs to a funclet epilog. Currently, this is only needed for DEBUG. -#endif -#define IGF_EPILOG 0x0020 // this group belongs to a main function epilog -#define IGF_NOGCINTERRUPT 0x0040 // this IG is is a no-interrupt region (prolog, epilog, etc.) -#define IGF_UPD_ISZ 0x0080 // some instruction sizes updated -#define IGF_PLACEHOLDER 0x0100 // this is a placeholder group, to be filled in later -#define IGF_EMIT_ADD 0x0200 // this is a block added by the emitter - // because the codegen block was too big. Also used for - // placeholder IGs that aren't also labels. +#define IGF_FUNCLET_EPILOG 0x0010 // this group belongs to a funclet epilog. +#define IGF_EPILOG 0x0020 // this group belongs to a main function epilog +#define IGF_NOGCINTERRUPT 0x0040 // this IG is is a no-interrupt region (prolog, epilog, etc.) +#define IGF_UPD_ISZ 0x0080 // some instruction sizes updated +#define IGF_PLACEHOLDER 0x0100 // this is a placeholder group, to be filled in later +#define IGF_EMIT_ADD 0x0200 // this is a block added by the emitter + // because the codegen block was too big. Also used for + // placeholder IGs that aren't also labels. // Mask of IGF_* flags that should be propagated to new blocks when they are created. // This allows prologs and epilogs to be any number of IGs, but still be @@ -491,12 +489,11 @@ protected: return (ig != nullptr) && ((ig->igFlags & IGF_FUNCLET_PROLOG) != 0); } -#ifdef DEBUG bool emitIGisInFuncletEpilog(const insGroup* ig) { return (ig != nullptr) && ((ig->igFlags & IGF_FUNCLET_EPILOG) != 0); } -#endif // DEBUG + #endif // FEATURE_EH_FUNCLETS // If "ig" corresponds to the start of a basic block that is the |