File tree Expand file tree Collapse file tree 6 files changed +15
-2
lines changed Expand file tree Collapse file tree 6 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -4309,6 +4309,10 @@ BinaryenSideEffects BinaryenSideEffectImplicitTrap(void) {
4309
4309
return static_cast <BinaryenSideEffects>(
4310
4310
EffectAnalyzer::SideEffects::ImplicitTrap);
4311
4311
}
4312
+ BinaryenSideEffects BinaryenSideEffectTrapsNeverHappen (void ) {
4313
+ return static_cast <BinaryenSideEffects>(
4314
+ EffectAnalyzer::SideEffects::TrapsNeverHappen);
4315
+ }
4312
4316
BinaryenSideEffects BinaryenSideEffectIsAtomic (void ) {
4313
4317
return static_cast <BinaryenSideEffects>(
4314
4318
EffectAnalyzer::SideEffects::IsAtomic);
Original file line number Diff line number Diff line change @@ -2620,6 +2620,7 @@ BINARYEN_API BinaryenSideEffects BinaryenSideEffectWritesGlobal(void);
2620
2620
BINARYEN_API BinaryenSideEffects BinaryenSideEffectReadsMemory (void );
2621
2621
BINARYEN_API BinaryenSideEffects BinaryenSideEffectWritesMemory (void );
2622
2622
BINARYEN_API BinaryenSideEffects BinaryenSideEffectImplicitTrap (void );
2623
+ BINARYEN_API BinaryenSideEffects BinaryenSideEffectTrapsNeverHappen (void );
2623
2624
BINARYEN_API BinaryenSideEffects BinaryenSideEffectIsAtomic (void );
2624
2625
BINARYEN_API BinaryenSideEffects BinaryenSideEffectThrows (void );
2625
2626
BINARYEN_API BinaryenSideEffects BinaryenSideEffectDanglingPop (void );
Original file line number Diff line number Diff line change @@ -256,6 +256,7 @@ class EffectAnalyzer {
256
256
writesHeap = writesHeap || other.writesHeap ;
257
257
trap = trap || other.trap ;
258
258
implicitTrap = implicitTrap || other.implicitTrap ;
259
+ trapsNeverHappen = trapsNeverHappen || other.trapsNeverHappen ;
259
260
isAtomic = isAtomic || other.isAtomic ;
260
261
throws = throws || other.throws ;
261
262
danglingPop = danglingPop || other.danglingPop ;
@@ -687,7 +688,8 @@ class EffectAnalyzer {
687
688
IsAtomic = 1 << 9 ,
688
689
Throws = 1 << 10 ,
689
690
DanglingPop = 1 << 11 ,
690
- Any = (1 << 12 ) - 1
691
+ TrapsNeverHappen = 1 << 12 ,
692
+ Any = (1 << 13 ) - 1
691
693
};
692
694
uint32_t getSideEffects () const {
693
695
uint32_t effects = 0 ;
@@ -718,6 +720,9 @@ class EffectAnalyzer {
718
720
if (implicitTrap) {
719
721
effects |= SideEffects::ImplicitTrap;
720
722
}
723
+ if (trapsNeverHappen) {
724
+ effects |= SideEffects::TrapsNeverHappen;
725
+ }
721
726
if (isAtomic) {
722
727
effects |= SideEffects::IsAtomic;
723
728
}
Original file line number Diff line number Diff line change @@ -551,6 +551,7 @@ function initializeConstants() {
551
551
'IsAtomic' ,
552
552
'Throws' ,
553
553
'DanglingPop' ,
554
+ 'TrapsNeverHappen' ,
554
555
'Any'
555
556
] . forEach ( name => {
556
557
Module [ 'SideEffects' ] [ name ] = Module [ '_BinaryenSideEffect' + name ] ( ) ;
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ console.log("SideEffects.ImplicitTrap=" + binaryen.SideEffects.ImplicitTrap);
11
11
console . log ( "SideEffects.IsAtomic=" + binaryen . SideEffects . IsAtomic ) ;
12
12
console . log ( "SideEffects.Throws=" + binaryen . SideEffects . Throws ) ;
13
13
console . log ( "SideEffects.DanglingPop=" + binaryen . SideEffects . DanglingPop ) ;
14
+ console . log ( "SideEffects.TrapsNeverHappen=" + binaryen . SideEffects . TrapsNeverHappen ) ;
14
15
console . log ( "SideEffects.Any=" + binaryen . SideEffects . Any ) ;
15
16
16
17
var module = new binaryen . Module ( ) ;
Original file line number Diff line number Diff line change @@ -11,4 +11,5 @@ SideEffects.ImplicitTrap=256
11
11
SideEffects.IsAtomic=512
12
12
SideEffects.Throws=1024
13
13
SideEffects.DanglingPop=2048
14
- SideEffects.Any=4095
14
+ SideEffects.TrapsNeverHappen=4096
15
+ SideEffects.Any=8191
You can’t perform that action at this time.
0 commit comments