This is an archive of the discontinued LLVM Phabricator instance.

[llgo]: Somewhat revive it and make it buildable with current trunk.
ClosedPublic

Authored by kristina on Jan 12 2019, 8:16 AM.

Details

Summary

Make llgo buildable with current LLVM.

Some caveats:

  • No compiler-rt support for now (That may be fixed soon, depending on other factors).
  • No test coverage either as I'm not familiar with LLGO test structure enough.

Diff Detail

Repository
rL LLVM

Event Timeline

kristina created this revision.Jan 12 2019, 8:16 AM

Changes to runtime.go address the regression caused by rL322965.

pcc added a comment.Jan 13 2019, 2:07 PM

For testing -fsplit-stack you probably want to add a test under llgo/test/irgen. They are standard lit tests.

cmd/gllgo/gllgo.go
201 ↗(On Diff #181444)

I don't see where this is used.

kristina marked an inline comment as done.Jan 13 2019, 2:39 PM

Currently actual tests would require using libgcc, as compiler-rt does not support split stack yet. If libgcc is required for tests then I don't think I can accurately make one. So if you require a test for this, it's likely that I'll have to mark this as "Changes Planned" for now until compiler-rt is sufficient to link this, unfortunately. Up to you really, though in my opinion even without tests this is better than it failing to compile. And the reasons for avoiding libgcc are fairly complicated, my intentions currently are to stay as far away from GNU runtime components as possible.

cmd/gllgo/gllgo.go
201 ↗(On Diff #181444)

Currently it's not, in this patch, so I can revise it to remove it. Though flags still need to be handled.

pcc accepted this revision.Jan 20 2019, 2:37 PM

LGTM

cmd/gllgo/gllgo.go
201 ↗(On Diff #181444)

Please move the code handling -fsplit-stack into a separate patch.

This revision is now accepted and ready to land.Jan 20 2019, 2:37 PM
kristina marked an inline comment as done.Jan 20 2019, 8:31 PM

Revised, landing it without split stack stuff, should autoupdate the revision here.

This revision was automatically updated to reflect the committed changes.