Giter Club home page Giter Club logo

Comments (5)

hosewiejacke avatar hosewiejacke commented on May 26, 2024

I played with the official python API and everything being a value (including instructions that do not return a value) was bewildering. Don't know what's better in this case, though.

from llvm.

mewmew avatar mewmew commented on May 26, 2024

Hi @hosewiejacke

I played with the official python API and everything being a value (including instructions that do not return a value) was bewildering. Don't know what's better in this case, though.

I agree, you kind of feel like a compiler construction Wizard when everything can be used as an operand to everything else.

I think we've struck a good balance atm with what instructions implement the value.Value interface. Essentially, anything you can use as an operand to another instruction is a value. The few remaining instructions, mostly fence and store which instead only implement the ir.Instruction and can thus only be appended to the list of instructions in a basic block.

Regarding this issue, we are trying to figure out if relaxing the type constraints on the concrete struct types of various instructions may allow for more powerful data flow analysis APIs in future releases of llir/llvm. There is an obvious trade-off. The more concrete of a type you have as members of the structs, the more knowledge is presented to the user, e.g. using *ir.BasicBlock for the target of a branch instruction provides more knowledge than if we use a value.Value.

However, if we relax this and use value.Value throughout, then we could have APIs that allow not only retrieval of information about value uses throughout the IR, but also makes it possible to have APIs that update the values through *value.Value pointer access.

We will continue to collect information, and see what are the various benefits and drawbacks with different approaches. I think I'm starting to lean more and more to the side of using value.Value throughout. We will see :)

Wish you a great winter holidays and happy coding!

Cheers,
Robin

from llvm.

mewmew avatar mewmew commented on May 26, 2024

Hmm, I've been using the help wanted labels for indicating that we'd like to get more input and various views for the design discussions. Perhaps this label is more often interpreted to mean something along the lines of we need help to implement this rather than please join our discussion to nail the API. Should we add a new label (e.g. ongoing discussion, user input wanted, or something along those lines) instead?

cc: @pwaller.

from llvm.

hosewiejacke avatar hosewiejacke commented on May 26, 2024

from llvm.

mewmew avatar mewmew commented on May 26, 2024

Perhaps this label is more often interpreted to mean something along the lines of we need help to implement this
Yes, that's how I interpret it.
Should we add a new label (e.g. ongoing discussion, user input wanted, or something along those lines) instead?
SGTM.

Good. I've added the proposal label now, perhaps that is enough to indicate that this is a design decision that needs to be fleshed out and that welcome anyone to contribution to the discussion.

from llvm.

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.