php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #79353 bad optimizing "Null Coalescing Assignment"
Submitted: 2020-03-08 02:46 UTC Modified: 2020-03-10 10:44 UTC
From: bugreports at gmail dot com Assigned: nikic (profile)
Status: Assigned Package: opcache
PHP Version: 7.4Git-2020-03-08 (Git) OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: bugreports at gmail dot com
New email:
PHP Version: OS:

 

 [2020-03-08 02:46 UTC] bugreports at gmail dot com
Description:
------------
with opcache other than "Null coalescing operator" the "Null Coalescing Assignment" is not completly optimized out

function a()
{
 $test = $test ?? TRUE;
 return $test;
}

function b()
{
 $test ??= TRUE;
 return $test;
}

runtime difference with 50000000 calls:
a(): 3.1884
b(): 3.3666

function name:  a
number of ops:  2
----------------------------------------------------------------------------------
   5     0*       COALESCE                                         ~1      !0
   6     1*       RETURN                                                   <true>

function name:  b
number of ops:  3
----------------------------------------------------------------------------------
  11     0*       COALESCE                                         ~1      !0
         1*       ASSIGN                                           $2      !0, <true>
  12     2*       RETURN                                                   !0


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2020-03-09 14:34 UTC] nikic@php.net
-Assigned To: +Assigned To: nikic
 [2020-03-09 14:34 UTC] nikic@php.net
I think we mainly need to add pi node placement for coalesce.
 [2020-03-09 15:21 UTC] nikic@php.net
https://github.com/php/php-src/commit/d9c45d86f9cd3d20f66ebf38384a9f53113415e5

Pi node placement turned out to be more complicated than anticipated, because it did not pass our existing profitability heuristic.
 [2020-03-10 10:29 UTC] bugreports at gmail dot com
as i understand that it will be part of PHP8 and not optimized for 7.4?
 [2020-03-10 10:44 UTC] nikic@php.net
Yes, this is only for master, as the change is non-trivial.

I'm also keeping this issue open, because we should still try to remove the COALESCE itself.
 [2022-12-22 09:43 UTC] melindaetinw81 at gmail dot com
I'll be sure to keep an eye on this thread. 

(https://www.myiclubonline.biz/)github.com
 [2023-04-25 10:36 UTC] heemadash93 at gmail dot com
Health Therphy News are sharing latest news about health, fitness, diet, weight loss, therphy, treatment etc. More info to visit: (https://healththerphynews.com)github.com
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Oct 06 14:01:27 2024 UTC