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

WIP/RFC: Split GC lowering pass into a platform-agnostic pass and a CPU-specific pass #31135

Merged
merged 7 commits into from
Jun 3, 2019

Commits on Apr 24, 2019

  1. Factor platform-agnostic types and intrinsics out of LateLowerGCFrame

    Factor a loop out of LateLowerGCFrame::runOnFunction and into GCLoweringRefs
    
    Move TBAA NDNode init from LateLowerGCFrame to GCLoweringRefs
    
    Rename 'llvm-late-gc-helpers.{cpp,h}' to 'llvm-pass-helpers.{cpp,h}'
    jonathanvdc committed Apr 24, 2019
    1 Configuration menu
    Copy the full SHA
    0bd5602 View commit details
    Browse the repository at this point in the history
  2. Delay GC frame lowering into a separate pass

    Fix a typo in the final GC lowering pass
    
    Split up 'julia.push_new_gc_frame' into two intrinsics
    
    Steal name from existing GC frame when lowering 'julia.new_gc_frame'
    
    Move GC frame pop lowering to final GC lowering pass
    
    Change how GC helper intrinsics are accessed
    
    Remove fields from GCLoweringRefs
    
    Capture module pointer in GCLoweringRefs
    
    Make the 'julia.new_gc_frame' intrinsic noalias
    
    Move GC frame access lowering to final GC lowering pass
    
    Update some outdated comments
    
    Add some sanity checks to final GC lowering pass
    
    Include 'llvm-version.h' in final GC lowering pass
    
    Define tests that test GC frame lowering passes in isolation
    
    Use 'i32' instead of 'size_t' for 'julia.{new,push}_gc_frame' size args
    
    Try to fix GC lowering tests
    
    These tests work fine on most machines, but they break on x86 Travis CI builds.
    The breakage is almost certainly due to a mismatch between integer types in
    the tests and 'size_t', exposed by recent changes to the GC lowering pass.
    
    Define 'LLVMExtraAddFinalLowerGCPass'
    jonathanvdc committed Apr 24, 2019
    Configuration menu
    Copy the full SHA
    1352b97 View commit details
    Browse the repository at this point in the history
  3. Define a 'julia.gc_alloc_bytes' intrinsic

    Delay GC allocation lowering into the final GC lowering pass
    
    Fix a broken LLVM pass test
    
    Define GC alloc lowering pass tests
    
    Cast 'julia.gc_alloc_obj' argument
    
    Add missing annotation to test
    
    
    Relax final GC lowering pass test
    jonathanvdc committed Apr 24, 2019
    Configuration menu
    Copy the full SHA
    fff80db View commit details
    Browse the repository at this point in the history
  4. Define a 'julia.queue_gc_root' intrinsic

    Delay 'jl_gc_queue_root' call generation until final GC lowering pass
    
    Fix two broken assertions
    jonathanvdc committed Apr 24, 2019
    Configuration menu
    Copy the full SHA
    1e06be7 View commit details
    Browse the repository at this point in the history
  5. Introduce a namespace for well-known runtime functions

    Use helpers to grab well-known functions
    jonathanvdc committed Apr 24, 2019
    Configuration menu
    Copy the full SHA
    7bb118c View commit details
    Browse the repository at this point in the history
  6. Rename 'IntrinsicDescription::getOrDefine' to 'getOrDeclare'

    Use getOrDeclare to get 'julia.gc_alloc_obj' intrinsic
    jonathanvdc committed Apr 24, 2019
    Configuration menu
    Copy the full SHA
    0f58a60 View commit details
    Browse the repository at this point in the history
  7. Change intrinsic declaration function signatures

    Insert a newline
    jonathanvdc committed Apr 24, 2019
    Configuration menu
    Copy the full SHA
    ef31437 View commit details
    Browse the repository at this point in the history