https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78104

            Bug ID: 78104
           Summary: optimizer doesn't grok C++ new/delete yet
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trippels at gcc dot gnu.org
  Target Milestone: ---

A simple example:

int main() {
  int *ob = new int();
  delete ob;
}

clang optimizes it away:

main:                      # @main
        xorl    %eax, %eax
        retq

gcc doesn't:

main:
        subq    $8, %rsp
        movl    $4, %edi
        call    operator new(unsigned long)
        movl    $4, %esi
        movl    $0, (%rax)
        movq    %rax, %rdi
        call    operator delete(void*, unsigned long)
        xorl    %eax, %eax
        addq    $8, %rsp
        ret

Reply via email to