Skip to content

Add TrapsNeverHappen to SideEffects's API #4086

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 17, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/binaryen-c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4309,6 +4309,10 @@ BinaryenSideEffects BinaryenSideEffectImplicitTrap(void) {
return static_cast<BinaryenSideEffects>(
EffectAnalyzer::SideEffects::ImplicitTrap);
}
BinaryenSideEffects BinaryenSideEffectTrapsNeverHappen(void) {
return static_cast<BinaryenSideEffects>(
EffectAnalyzer::SideEffects::TrapsNeverHappen);
}
BinaryenSideEffects BinaryenSideEffectIsAtomic(void) {
return static_cast<BinaryenSideEffects>(
EffectAnalyzer::SideEffects::IsAtomic);
Expand Down
1 change: 1 addition & 0 deletions src/binaryen-c.h
Original file line number Diff line number Diff line change
Expand Up @@ -2620,6 +2620,7 @@ BINARYEN_API BinaryenSideEffects BinaryenSideEffectWritesGlobal(void);
BINARYEN_API BinaryenSideEffects BinaryenSideEffectReadsMemory(void);
BINARYEN_API BinaryenSideEffects BinaryenSideEffectWritesMemory(void);
BINARYEN_API BinaryenSideEffects BinaryenSideEffectImplicitTrap(void);
BINARYEN_API BinaryenSideEffects BinaryenSideEffectTrapsNeverHappen(void);
BINARYEN_API BinaryenSideEffects BinaryenSideEffectIsAtomic(void);
BINARYEN_API BinaryenSideEffects BinaryenSideEffectThrows(void);
BINARYEN_API BinaryenSideEffects BinaryenSideEffectDanglingPop(void);
Expand Down
7 changes: 6 additions & 1 deletion src/ir/effects.h
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ class EffectAnalyzer {
writesHeap = writesHeap || other.writesHeap;
trap = trap || other.trap;
implicitTrap = implicitTrap || other.implicitTrap;
trapsNeverHappen = trapsNeverHappen || other.trapsNeverHappen;
isAtomic = isAtomic || other.isAtomic;
throws = throws || other.throws;
danglingPop = danglingPop || other.danglingPop;
Expand Down Expand Up @@ -687,7 +688,8 @@ class EffectAnalyzer {
IsAtomic = 1 << 9,
Throws = 1 << 10,
DanglingPop = 1 << 11,
Any = (1 << 12) - 1
TrapsNeverHappen = 1 << 12,
Any = (1 << 13) - 1
};
uint32_t getSideEffects() const {
uint32_t effects = 0;
Expand Down Expand Up @@ -718,6 +720,9 @@ class EffectAnalyzer {
if (implicitTrap) {
effects |= SideEffects::ImplicitTrap;
}
if (trapsNeverHappen) {
effects |= SideEffects::TrapsNeverHappen;
}
if (isAtomic) {
effects |= SideEffects::IsAtomic;
}
Expand Down
1 change: 1 addition & 0 deletions src/js/binaryen.js-post.js
Original file line number Diff line number Diff line change
Expand Up @@ -551,6 +551,7 @@ function initializeConstants() {
'IsAtomic',
'Throws',
'DanglingPop',
'TrapsNeverHappen',
'Any'
].forEach(name => {
Module['SideEffects'][name] = Module['_BinaryenSideEffect' + name]();
Expand Down
1 change: 1 addition & 0 deletions test/binaryen.js/sideffects.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ console.log("SideEffects.ImplicitTrap=" + binaryen.SideEffects.ImplicitTrap);
console.log("SideEffects.IsAtomic=" + binaryen.SideEffects.IsAtomic);
console.log("SideEffects.Throws=" + binaryen.SideEffects.Throws);
console.log("SideEffects.DanglingPop=" + binaryen.SideEffects.DanglingPop);
console.log("SideEffects.TrapsNeverHappen=" + binaryen.SideEffects.TrapsNeverHappen);
console.log("SideEffects.Any=" + binaryen.SideEffects.Any);

var module = new binaryen.Module();
Expand Down
3 changes: 2 additions & 1 deletion test/binaryen.js/sideffects.js.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ SideEffects.ImplicitTrap=256
SideEffects.IsAtomic=512
SideEffects.Throws=1024
SideEffects.DanglingPop=2048
SideEffects.Any=4095
SideEffects.TrapsNeverHappen=4096
SideEffects.Any=8191