diff options
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r-- | src/binaryen-c.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 79571bd96..d0c672abd 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -4449,6 +4449,65 @@ void BinaryenAddCustomSection(BinaryenModuleRef module, } // +// ========= Effect analyzer ========= +// + +BinaryenSideEffects BinaryenSideEffectNone(void) { + return static_cast<BinaryenSideEffects>(EffectAnalyzer::SideEffects::None); +} +BinaryenSideEffects BinaryenSideEffectBranches(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::Branches); +} +BinaryenSideEffects BinaryenSideEffectCalls(void) { + return static_cast<BinaryenSideEffects>(EffectAnalyzer::SideEffects::Calls); +} +BinaryenSideEffects BinaryenSideEffectReadsLocal(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::ReadsLocal); +} +BinaryenSideEffects BinaryenSideEffectWritesLocal(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::WritesLocal); +} +BinaryenSideEffects BinaryenSideEffectReadsGlobal(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::ReadsGlobal); +} +BinaryenSideEffects BinaryenSideEffectWritesGlobal(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::WritesGlobal); +} +BinaryenSideEffects BinaryenSideEffectReadsMemory(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::ReadsMemory); +} +BinaryenSideEffects BinaryenSideEffectWritesMemory(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::WritesMemory); +} +BinaryenSideEffects BinaryenSideEffectImplicitTrap(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::ImplicitTrap); +} +BinaryenSideEffects BinaryenSideEffectIsAtomic(void) { + return static_cast<BinaryenSideEffects>( + EffectAnalyzer::SideEffects::IsAtomic); +} +BinaryenSideEffects BinaryenSideEffectAny(void) { + return static_cast<BinaryenSideEffects>(EffectAnalyzer::SideEffects::Any); +} + +BinaryenSideEffects +BinaryenExpressionGetSideEffects(BinaryenExpressionRef expr) { + if (tracing) { + std::cout << " BinaryenExpressionGetSideEffects(expressions[" + << expressions[expr] << "]);\n"; + } + return EffectAnalyzer(globalPassOptions, (Expression*)expr).getSideEffects(); +} + +// // ========== CFG / Relooper ========== // |