Skip to content

build(deps): bump github.com/llir/llvm from 0.3.0 to 0.3.1#171

Closed
dependabot-preview[bot] wants to merge 1 commit into
masterfrom
dependabot/go_modules/github.com/llir/llvm-0.3.1
Closed

build(deps): bump github.com/llir/llvm from 0.3.0 to 0.3.1#171
dependabot-preview[bot] wants to merge 1 commit into
masterfrom
dependabot/go_modules/github.com/llir/llvm-0.3.1

Conversation

@dependabot-preview

@dependabot-preview dependabot-preview Bot commented May 5, 2020

Copy link
Copy Markdown
Contributor

Bumps github.com/llir/llvm from 0.3.0 to 0.3.1.

Changelog

Sourced from github.com/llir/llvm's changelog.

Version 0.3.1 (2020-05-04)

Update llir/llvm to include new language concepts of LLVM 10.0 (thanks @dannypsnl).

Full list of changes since v0.3.0.

Version 0.3 (2019-12-29)

Primary focus of version 0.3: grammar covering the entire LLVM IR language.

The grammar for LLVM IR is now complete and covers the entire LLVM IR language (as of LLVM 9.0).

Lexers and parsers for LLVM IR assembly are automatically generated from an EBNF grammar using Textmapper.

The Textmapper generated source code has been split into a dedicated repository to better handle repository size.

Version 0.2 (2017-06-24)

Primary focus of version 0.2: read and write support of LLVM IR assembly.

Lexers and parsers for LLVM IR assembly are automatically generated from a BNF grammar using Gocc.

A high-level API for parsing LLVM IR assembly is provided by llvm/asm.

The llvm/ir package supports all instructions of LLVM IR, except the instructions used for concurrency and exception handling.

The llir/llvm packages are now go-getable, as the Gocc generated source code has been added to the source tree.

Version 0.1 (2015-04-19)

Initial release.

Preliminary work on the llvm/ir package which provides an in-memory representation of LLVM IR in pure Go.

Hand-written lexer and preliminary work on a recursive descent parser for LLVM IR assembly.

Commits
  • 6e91213 history: add v0.3.1 release notes
  • e0fa62b llvm: run go get -u ./... to update dependencies
  • ae564fc llvm: run go mod tidy
  • 4e94e66 readme: add map between llir/llvm versions and and LLVM release versions
  • d26e37f CI: fix (#144)
  • 116ce41 CI: switch to GitHub Action (#142)
  • 6a9fa5e (#128) new calling conventions (#140)
  • c4cdd68 testdata: update to latest commit
  • f22b4ba all: enable test cases of Coreutils and SQLite; updated using Clang 10.0
  • 0c8dd50 (#128) parameter attribute: nofree (#138)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Pull request limits (per update run and/or open at any time)
  • Automerge options (never/patch/minor, and dev/runtime dependencies)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

@dependabot-preview dependabot-preview Bot added the dependencies Pull requests that update a dependency file label May 5, 2020
Bumps [github.com/llir/llvm](https://github.com/llir/llvm) from 0.3.0 to 0.3.1.
- [Release notes](https://github.com/llir/llvm/releases)
- [Changelog](https://github.com/llir/llvm/blob/master/HISTORY.md)
- [Commits](llir/llvm@v0.3.0...v0.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
@dependabot-preview dependabot-preview Bot force-pushed the dependabot/go_modules/github.com/llir/llvm-0.3.1 branch from 9dbfee2 to b8adbf6 Compare June 9, 2020 14:15
@mewmew

mewmew commented Jun 9, 2020

Copy link
Copy Markdown
Contributor

Hi Gustav!

I tried to have a look at the reason for the CI failure, but it seems you need to sign in to CircleCI view the log.

In either case, the v0.3.1 release of llir/llvm should not have any breaking API changes, so if you find any breakage related to the latest release, I'd be curious to learn.

Ha en fin sommar! :)

Cheers,
Robin

Edit: I noticed that ir.NewLocalIdent had been unintentionally removed in v0.3.1. As this function was part of the exported API it has been re-added in v0.3.2. ref: https://github.com/llir/llvm/pull/131/files#r437725232

Edit2: The story continues to unfold. @dannypsnl and I are currently discussing what parts of the API should really belong in the core ir package, and what parts should be removed or moved to other packages such as irutil. If you feel like joining the discussion, you are most welcome @zegl!

@zegl

zegl commented Jun 10, 2020

Copy link
Copy Markdown
Owner

Hey!

The error seems to come from how functions without a body are generated. tre is calling out to printf, and is generating the function definition like so:

setExternal := func(internalName string, fn *ir.Func, variadic bool) value.Value {
	fn.Sig.Variadic = variadic
	val := value.Value{
		Type: &types.Function{
			LlvmReturnType: types.Void,
			FuncType:       fn.Type(),
			IsExternal:     true,
		},
		Value: fn,
	}
	external.DefinePkgVar(internalName, val)
	return val
}

c.externalFuncs.Printf = setExternal("Printf", c.module.NewFunc("printf",
	i32.LLVM(),
	ir.NewParam("", llvmTypes.NewPointer(i8.LLVM())),
), true)

The expected output is

declare i32 @printf(i8*, ...)

But with 0.3.1 the following is generated, which causes Clang to error out

declare i32 @printf(i8* %0, ...)
/var/folders/lg/v0h1vf5x0gv92j2nmgtfkq600000gn/T/tre331165117/main.ll:9:25: error: expected ')' at end of argument list
declare i32 @printf(i8* %0, ...)
                        ^
1 error generated.

@zegl

zegl commented Jun 10, 2020

Copy link
Copy Markdown
Owner

I've added some test-runners with Clang 10, let's see if this version is working there.

@dependabot rebase

@dependabot-preview

Copy link
Copy Markdown
Contributor Author

Superseded by #175.

@dependabot-preview dependabot-preview Bot deleted the dependabot/go_modules/github.com/llir/llvm-0.3.1 branch June 10, 2020 14:57
@zegl

zegl commented Jun 10, 2020

Copy link
Copy Markdown
Owner

Everything works nicely against LLVM 10, but not 9 or 8. This project doesn't really have a policy for which LLVM versions that should be supported, so for me it's fine to only support a single version, but I'd imagine that this isn't what you where expecting when introducing LLVM 10 features to llir/llvm.

@mewmew

mewmew commented Jun 10, 2020

Copy link
Copy Markdown
Contributor

Everything works nicely against LLVM 10, but not 9 or 8. This project doesn't really have a policy for which LLVM versions that should be supported, so for me it's fine to only support a single version, but I'd imagine that this isn't what you where expecting when introducing LLVM 10 features to llir/llvm.

The intention of llir/llvm is to always follow the latest version of LLVM. So, when LLVM makes backwards incompatible changes to the LLVM IR assembly representaiton (e.g. assigning explicit local IDs to "unnamed" function parameters, basic blocks an unnamed local variables, as introduced in LLVM 10.0), so does the master branch at llir/llvm. Keeping support for more than one version of LLVM is not feasible as we are but few maintainers of llir/llvm as of current. So, for those that need older versions of LLVM, we try to map them against the corresponding version of llir/llvm in https://github.com/llir/llvm/#versions

Improvements to llir/llvm will only target the latest version of LLVM though, so unless there is a specific reason to pin to older versions of LLVM, the suggestion is to always use the latest version of llir/llvm.

@mewmew

mewmew commented Jun 10, 2020

Copy link
Copy Markdown
Contributor

I've added some test-runners with Clang 10, let's see if this version is working there.

Thanks for testing this @zegl. Glad to see it working with Clang 10.0. As mentioned above, the master branch (and latest release) of llir/llvm only strives to support the latest release of LLVM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants