Skip to content

use tbaa.struct to inform LLVM about struct/enum padding #6736

Description

@thestinger

This will allow LLVM to be lazier when copying the contents.

Activity

  1. catamorphism commented on Sep 2, 2013

    @catamorphism
    Contributor

    Visiting for bug triage. Performance improvements are always good, but this one doesn't look like a release blocker.

  2. pcwalton commented on Nov 23, 2013

    @pcwalton
    Contributor

    #10613 is an example of how this bites us.

  3. brson commented on Feb 3, 2014

    @brson
    Contributor

    Can anybody mentor this?

  4. emberian commented on Mar 29, 2014

    @emberian
    Contributor

    I'm working on this.

  5. erickt commented on Dec 16, 2014

    @erickt
    Contributor

    @cmr blogged about trying to implement this here.

  6. Aatch commented on Jan 20, 2015

    @Aatch
    Contributor

    Investigation in to how LLVM uses tbaa.struct suggests that it doesn't actually help with padding, it just informs LLVM of the types inside what would otherwise be an opaque pointer to help with alias analysis.

    If/When we get actual TBAA, outputing tbaa.struct metadata may be useful, but my investigations have shown that LLVM doesn't use it for avoiding padding, etc.

    Maybe somebody with more knowledge on LLVM could confirm? @dotdash?

  7. dotdash commented on Jan 20, 2015

    @dotdash
    Contributor

    I came to the same conclusion when I looked at the LLVM code.
    Am 20.01.2015 21:15 schrieb "James Miller" notifications@github.com:

    Investigation in to how LLVM uses tbaa.struct suggests that it doesn't
    actually help with padding, it just informs LLVM of the types inside what
    would otherwise be an opaque pointer to help with alias analysis.

    If/When we get actual TBAA, outputing tbaa.struct metadata may be useful,
    but my investigations have shown that LLVM doesn't use it for avoiding
    padding, etc.

    Maybe somebody with more knowledge on LLVM could confirm? @dotdash
    https://github.com/dotdash?

    —
    Reply to this email directly or view it on GitHub
    #6736 (comment).

  8. thestinger commented on Jan 20, 2015

    @thestinger
    ContributorAuthor

    It used to use it but it was lost after various rewrites of the relevant passes. It could be taught to make use of it again, of course.

  9. self-assigned this
    on Mar 25, 2015
  10. added
    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.
    on Oct 5, 2015
  11. removed their assignment
    on Jan 5, 2016
  12. nox commented on Mar 30, 2018

    @nox
    Contributor

    Hey, psst. @rust-lang/wg-codegen

  13. nox commented on Mar 30, 2018

    @nox
    Contributor

    Also cc @rust-lang/compiler.

  14. nox commented on Mar 30, 2018

    @nox
    Contributor

    Given @cmr's blog post and @Aatch and @dotdash comments which seem to indicate that it doesn't actually help with padding, I suggest we just close this issue.

  15. oli-obk commented on Apr 15, 2018

    @oli-obk
    Contributor

    I agree, without a concrete case of something that we want to improve, this issue is not really actionable

  16. added a commit that references this issue on Feb 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-codegenArea: Code generationC-enhancementCategory: An issue proposing an enhancement or a PR with one.I-slowIssue: Problems and improvements with respect to performance of generated code.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions