Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NewOptimizer] Fix _apply elision #26821

Merged
merged 1 commit into from
Apr 18, 2018
Merged

[NewOptimizer] Fix _apply elision #26821

merged 1 commit into from
Apr 18, 2018

Conversation

Keno
Copy link
Member

@Keno Keno commented Apr 16, 2018

The old optimizer had an extra loop outside the inlining pass that would
turn _apply's in to regular calls. When I wrote the new inliner we discussed
that this wasn't actually necessary because we could just keep track of
this information in the inliner (as we do for invoke). However, that of
course also means that if we can't turn something into an :invoke, we
should still at least turn it into a regular call. Do that.

@Keno Keno mentioned this pull request Apr 16, 2018
18 tasks
@ararslan ararslan added the compiler:optimizer Optimization passes (mostly in base/compiler/ssair/) label Apr 17, 2018
isinvoke, isapply, argexprs)
ex.typ = etype
ex.args = argexprs
ir[SSAValue(idx)] = ex
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All this code is duplicated below.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair enough. I'll refactor a bit.

@Keno Keno force-pushed the kf/applyelision branch from f88bc55 to d193166 Compare April 17, 2018 20:44
The old optimizer had an extra loop outside the inlining pass that would
turn _apply's in to regular calls. When I wrote the new inliner we discussed
that this wasn't actually necessary because we could just keep track of
this information in the inliner (as we do for invoke). However, that of
course also means that if we can't turn something into an :invoke, we
should still at least turn it into a regular call. Do that.
@Keno Keno force-pushed the kf/applyelision branch from d193166 to 84298cb Compare April 17, 2018 20:50
@JeffBezanson JeffBezanson merged commit 8e7034e into master Apr 18, 2018
@JeffBezanson JeffBezanson deleted the kf/applyelision branch April 18, 2018 16:21
mbauman added a commit that referenced this pull request Apr 19, 2018
* origin/master: (22 commits)
  separate `isbitstype(::Type)` from `isbits` (#26850)
  bugfix for regex matches ending with non-ASCII (#26831)
  [NewOptimizer] track inbounds state as a per-statement flag
  change default LOAD_PATH and DEPOT_PATH (#26804, fix #25709)
  Change url scheme to https (#26835)
  [NewOptimizer] inlining: Refactor todo object
  inference: enable CodeInfo method_for_inference_limit_heuristics support (#26822)
  [NewOptimizer] Fix _apply elision (#26821)
  add test case from issue #26607, cfunction with no args (#26838)
  add `do` in front-end deparser. fixes #17781 (#26840)
  Preserve CallInst metadata in LateLowerGCFrame pass.
  Improve differences from R documentation (#26810)
  reserve syntax that could be used for computed field types (#18466) (#26816)
  Add support for Atomic{Bool} (Fix #26542). (#26597)
  Remove argument restriction on dims2string and inds2string (#26799) (#26817)
  remove some unnecessary `eltype` methods (#26791)
  optimize: ensure merge_value_ssa doesn't drop PiNodes
  inference: improve tmerge for Conditional and Const
  ensure more iterators stay type-stable
  code loading docs (#26787)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:optimizer Optimization passes (mostly in base/compiler/ssair/)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants