Ticket #1498 (new bug)

Opened 5 years ago

Last modified 3 weeks ago

Optimisation: eliminate unnecessary heap check in recursive function

Reported by: simonmar Owned by:
Priority: normal Milestone: 7.4.1
Component: Compiler Version: 6.6.1
Keywords: Cc: ndmitchell@…, johan.tibell@…
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: Runtime performance bug Difficulty: Moderate (less than a day)
Test Case: Blocked By: #4258
Blocking: Related Tickets:

Description

See  http://www.haskell.org/pipermail/cvs-ghc/2007-July/036496.html

In a basic block consisting of some primitive cases, in which only some branches require heap, we could push the heap check into the branches as long as the primitive operations are safe to repeat, and the stack has not been modified. This might save a heap check in the common recursive case, which could be a significant win.

Change History

Changed 5 years ago by neil

  • cc ndmitchell@… added

Changed 4 years ago by tibbe

  • cc johan.tibell@… added

Changed 3 years ago by simonmar

  • architecture changed from Unknown to Unknown/Multiple

Changed 3 years ago by simonmar

  • os changed from Unknown to Unknown/Multiple

Changed 3 years ago by igloo

  • milestone changed from 6.10 branch to 6.12 branch

Changed 2 years ago by simonmar

  • milestone changed from 6.12 branch to 6.14.1

Another new codegen task.

Changed 2 years ago by simonmar

  • difficulty changed from Moderate (1 day) to Moderate (less than a day)

Changed 17 months ago by simonmar

  • failure set to None/Unknown
  • blockedby 4258 added
  • milestone changed from 7.0.1 to 7.2.1

Changed 3 weeks ago by rl

  • failure changed from None/Unknown to Runtime performance bug
  • type changed from task to bug

This is actually biting high-performance code with the LLVM backend quite badly. I'm not sure if and how the new codegen will affect the LLVM backend but this is one of the top reasons for suboptimal loop performance right now.

Note: See TracTickets for help on using tickets.