Opened 3 years ago

Closed 9 months ago

#11791 closed task (fixed)

Remove the `isInlinePragma prag` test

Reported by: nomeata Owned by:
Priority: normal Milestone:
Component: Compiler Version: 8.1
Keywords: newcomer, Inlining Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: #11781, #5928 Differential Rev(s):
Wiki Page:

Description (last modified by sjakobi)

This is a spin off of ticket:11781#comment:9, where simonpj writes:

What is more mysterious to me is why the unfolding for $fApplicativeIO_$c*> doesn't have bindIO, and then bindIO inlined into it, which would allow a cascade of further improvements, which would, I think, produce essentially the same code as thenIO.

The offending corner is this

active_unfolding_gentle id
  =  isInlinePragma prag    -- WHY??
  && isEarlyActive (inlinePragmaActivation prag)

So I tried removing the isInlinePragma prag test, and indeed the code becomes identical.

Conclusion:

  • I'd love to make the above change to active_unfolding_gentle and see if any other performance numbers budge. I doubt that anything will change a lot -- it really only affects whether optimisation happens before or after inlining -- but it should improve compiler performance a bit for that very reason. This could be a separate ticket

Incidentally, see #5928 which is somewhat related.

This ticket tracks that idea.

Change History (3)

comment:1 Changed 2 years ago by mpickering

Keywords: newcomer Inlining added

comment:2 Changed 9 months ago by sjakobi

Description: modified (diff)

comment:3 Changed 9 months ago by sjakobi

Resolution: fixed
Status: newclosed

The offending bit of code was removed in 2effe18ab51d66474724d38b20e49cc1b8738f60.

Note: See TracTickets for help on using tickets.