Giter Site home page Giter Site logo

Comments (8)

est31 avatar est31 commented on September 26, 2024 1

Not a volunteer, but as someone who had a good share of "fighting with bors", I wish anyone who mounts an attempt the best of luck.

from compiler-builtins.

japaric avatar japaric commented on September 26, 2024 1

@est31 Hey, don't scare away the volunteers!

from compiler-builtins.

est31 avatar est31 commented on September 26, 2024

Note, now that rust-lang/rust#38482 is merged, i128 support is required as well.

Just using the C implementation is not enough as the C implementation only is enabled and works on non windows 64 bit platforms (that was the reason the PR had to implement the intrinsics in Rust in the first place).

See #133 that attempts to add support.

Also note that during the making of that PR I not just had linker issues with calls to panic, it also complained about calls to eh_personality, which in some cases survives while panic does not.

from compiler-builtins.

japaric avatar japaric commented on September 26, 2024

Added i128 support to the list. After #133 lands, we would still need the famility of floatundif intrinsics, I believe.

Also added changing the ABI of (some?) intrinsics from C to aapcs on ARM. cc #116

compile functions with hidden visibility

And I believe this issue was fixed in rust-lang/rust proper? cc @alexcrichton

from compiler-builtins.

est31 avatar est31 commented on September 26, 2024

With #133 merged, the following float functions are required to be ported:

  • __fixsfti
  • __fixdfti
  • __fixunsdfti
  • __fixunssfti
  • __floattidf
  • __floattisf
  • __floatuntidf
  • __floatuntisf

They all need extern "unadjusted" instead of extern "C" on windows.

from compiler-builtins.

japaric avatar japaric commented on September 26, 2024

"C" ABI -> "aapcs" on ARM - #116 #141

I think that powisf2 and powidf2 may need to be changed to AAPCS too. Honestly, I'm no longer sure what's the state of those intrinsics on LLVM 3.9 vs 4.0.

from compiler-builtins.

japaric avatar japaric commented on September 26, 2024

OK. I believe that all the required intrinsics to land this in rust-lang/rust have been implemented. All that's left is: (a) check that the compiler-rt submodule in this repo matches the revision being used in rust-lang/rust and then (b) fight with bors and land this in rust-lang/rust.

Any volunteers? Here's what needs to be done for (b):

  • Remove the src/libcompiler_builtins directory in rust-lang/rust
  • Replace it with a git submodule that points to this repo
  • Create a libcompiler_builtins_shim Cargo project that builds this repo with the right Cargo features (the "rustbuild" feature). The std crate will depend on that shim. (I lost track of the comment that explained why the shim was necessary. Sorry)
  • Likely update the part of the boostrap tool that cares of building the sanitizers' runtimes to use the new location of the compiler-rt code. (src/compiler-rt -> src/libcompiler_builtins/compiler-rt)

All in one PR. You should test locally as a sanity check and then we can feed it to bors.

Here's an old attempt of mine: rust-lang/rust#37802. All the Makefile changes in that PR won't be necessary as the Makefiles have been removed.

from compiler-builtins.

alexcrichton avatar alexcrichton commented on September 26, 2024

Done now!

from compiler-builtins.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.