File tree 1 file changed +26
-0
lines changed
1 file changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -490,6 +490,19 @@ overflow: ZEND_ATTRIBUTE_COLD_LABEL
490
490
return ;
491
491
overflow : ZEND_ATTRIBUTE_COLD_LABEL
492
492
ZVAL_DOUBLE (op1 , (double )ZEND_LONG_MAX + 1.0 );
493
+ #elif defined(HAVE_ASM_GOTO ) && defined(__aarch64__ )
494
+ __asm__ goto (
495
+ "ldr x5, [%0]\n\t"
496
+ "adds x5, x5, 1\n\t"
497
+ "bvs %l1\n"
498
+ "str x5, [%0]"
499
+ :
500
+ : "r" (& op1 -> value )
501
+ : "x5" , "cc" , "memory"
502
+ : overflow );
503
+ return ;
504
+ overflow : ZEND_ATTRIBUTE_COLD_LABEL
505
+ ZVAL_DOUBLE (op1 , (double )ZEND_LONG_MAX + 1.0 );
493
506
#elif PHP_HAVE_BUILTIN_SADDL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG
494
507
long lresult ;
495
508
if (UNEXPECTED (__builtin_saddl_overflow (Z_LVAL_P (op1 ), 1 , & lresult ))) {
@@ -540,6 +553,19 @@ overflow: ZEND_ATTRIBUTE_COLD_LABEL
540
553
return ;
541
554
overflow : ZEND_ATTRIBUTE_COLD_LABEL
542
555
ZVAL_DOUBLE (op1 , (double )ZEND_LONG_MIN - 1.0 );
556
+ #elif defined(HAVE_ASM_GOTO ) && defined(__aarch64__ )
557
+ __asm__ goto (
558
+ "ldr x5, [%0]\n\t"
559
+ "subs x5 ,x5, 1\n\t"
560
+ "bvs %l1\n"
561
+ "str x5, [%0]"
562
+ :
563
+ : "r" (& op1 -> value )
564
+ : "x5" , "cc" , "memory"
565
+ : overflow );
566
+ return ;
567
+ overflow : ZEND_ATTRIBUTE_COLD_LABEL
568
+ ZVAL_DOUBLE (op1 , (double )ZEND_LONG_MIN - 1.0 );
543
569
#elif PHP_HAVE_BUILTIN_SSUBL_OVERFLOW && SIZEOF_LONG == SIZEOF_ZEND_LONG
544
570
long lresult ;
545
571
if (UNEXPECTED (__builtin_ssubl_overflow (Z_LVAL_P (op1 ), 1 , & lresult ))) {
You can’t perform that action at this time.
0 commit comments