@@ -1004,8 +1004,10 @@ static bool interp__builtin_bswap(InterpState &S, CodePtr OpPC,
1004
1004
const CallExpr *Call) {
1005
1005
const APSInt &Val = popToAPSInt (S, Call->getArg (0 ));
1006
1006
assert (Val.getActiveBits () <= 64 );
1007
-
1008
- pushInteger (S, Val.byteSwap (), Call->getType ());
1007
+ if (Val.getBitWidth () == 8 )
1008
+ pushInteger (S, Val, Call->getType ());
1009
+ else
1010
+ pushInteger (S, Val.byteSwap (), Call->getType ());
1009
1011
return true ;
1010
1012
}
1011
1013
@@ -3288,15 +3290,7 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
3288
3290
case Builtin::BI__builtin_elementwise_ctzg:
3289
3291
return interp__builtin_elementwise_countzeroes (S, OpPC, Frame, Call,
3290
3292
BuiltinID);
3291
- case Builtin::BI__builtin_bswapg: {
3292
- const APSInt &Val = popToAPSInt (S, Call->getArg (0 ));
3293
- assert (Val.getActiveBits () <= 64 );
3294
- if (Val.getBitWidth () == 8 )
3295
- pushInteger (S, Val, Call->getType ());
3296
- else
3297
- pushInteger (S, Val.byteSwap (), Call->getType ());
3298
- return true ;
3299
- }
3293
+ case Builtin::BI__builtin_bswapg:
3300
3294
case Builtin::BI__builtin_bswap16:
3301
3295
case Builtin::BI__builtin_bswap32:
3302
3296
case Builtin::BI__builtin_bswap64:
0 commit comments