Skip to content

Commit c0b126b

Browse files
authored
Add TrapsNeverHappen to SideEffects's API (#4086)
1 parent b82be0f commit c0b126b

File tree

6 files changed

+15
-2
lines changed

6 files changed

+15
-2
lines changed

src/binaryen-c.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4309,6 +4309,10 @@ BinaryenSideEffects BinaryenSideEffectImplicitTrap(void) {
43094309
return static_cast<BinaryenSideEffects>(
43104310
EffectAnalyzer::SideEffects::ImplicitTrap);
43114311
}
4312+
BinaryenSideEffects BinaryenSideEffectTrapsNeverHappen(void) {
4313+
return static_cast<BinaryenSideEffects>(
4314+
EffectAnalyzer::SideEffects::TrapsNeverHappen);
4315+
}
43124316
BinaryenSideEffects BinaryenSideEffectIsAtomic(void) {
43134317
return static_cast<BinaryenSideEffects>(
43144318
EffectAnalyzer::SideEffects::IsAtomic);

src/binaryen-c.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2620,6 +2620,7 @@ BINARYEN_API BinaryenSideEffects BinaryenSideEffectWritesGlobal(void);
26202620
BINARYEN_API BinaryenSideEffects BinaryenSideEffectReadsMemory(void);
26212621
BINARYEN_API BinaryenSideEffects BinaryenSideEffectWritesMemory(void);
26222622
BINARYEN_API BinaryenSideEffects BinaryenSideEffectImplicitTrap(void);
2623+
BINARYEN_API BinaryenSideEffects BinaryenSideEffectTrapsNeverHappen(void);
26232624
BINARYEN_API BinaryenSideEffects BinaryenSideEffectIsAtomic(void);
26242625
BINARYEN_API BinaryenSideEffects BinaryenSideEffectThrows(void);
26252626
BINARYEN_API BinaryenSideEffects BinaryenSideEffectDanglingPop(void);

src/ir/effects.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ class EffectAnalyzer {
256256
writesHeap = writesHeap || other.writesHeap;
257257
trap = trap || other.trap;
258258
implicitTrap = implicitTrap || other.implicitTrap;
259+
trapsNeverHappen = trapsNeverHappen || other.trapsNeverHappen;
259260
isAtomic = isAtomic || other.isAtomic;
260261
throws = throws || other.throws;
261262
danglingPop = danglingPop || other.danglingPop;
@@ -687,7 +688,8 @@ class EffectAnalyzer {
687688
IsAtomic = 1 << 9,
688689
Throws = 1 << 10,
689690
DanglingPop = 1 << 11,
690-
Any = (1 << 12) - 1
691+
TrapsNeverHappen = 1 << 12,
692+
Any = (1 << 13) - 1
691693
};
692694
uint32_t getSideEffects() const {
693695
uint32_t effects = 0;
@@ -718,6 +720,9 @@ class EffectAnalyzer {
718720
if (implicitTrap) {
719721
effects |= SideEffects::ImplicitTrap;
720722
}
723+
if (trapsNeverHappen) {
724+
effects |= SideEffects::TrapsNeverHappen;
725+
}
721726
if (isAtomic) {
722727
effects |= SideEffects::IsAtomic;
723728
}

src/js/binaryen.js-post.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,7 @@ function initializeConstants() {
551551
'IsAtomic',
552552
'Throws',
553553
'DanglingPop',
554+
'TrapsNeverHappen',
554555
'Any'
555556
].forEach(name => {
556557
Module['SideEffects'][name] = Module['_BinaryenSideEffect' + name]();

test/binaryen.js/sideffects.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ console.log("SideEffects.ImplicitTrap=" + binaryen.SideEffects.ImplicitTrap);
1111
console.log("SideEffects.IsAtomic=" + binaryen.SideEffects.IsAtomic);
1212
console.log("SideEffects.Throws=" + binaryen.SideEffects.Throws);
1313
console.log("SideEffects.DanglingPop=" + binaryen.SideEffects.DanglingPop);
14+
console.log("SideEffects.TrapsNeverHappen=" + binaryen.SideEffects.TrapsNeverHappen);
1415
console.log("SideEffects.Any=" + binaryen.SideEffects.Any);
1516

1617
var module = new binaryen.Module();

test/binaryen.js/sideffects.js.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ SideEffects.ImplicitTrap=256
1111
SideEffects.IsAtomic=512
1212
SideEffects.Throws=1024
1313
SideEffects.DanglingPop=2048
14-
SideEffects.Any=4095
14+
SideEffects.TrapsNeverHappen=4096
15+
SideEffects.Any=8191

0 commit comments

Comments
 (0)