[PATCH] [RFC v4] BPF backend

cc-ing llvmdev to get feedback.

this patch is not the end of development,
rather are solid base that folks can start using now.
I'm still working on better error handling, more tests,
fixes for some corner cases, debug gen, few optimizations, etc.
I can keep posting next versions, but the patch will
only get bigger which is against 'incremental changes' policy.
I would prefer to get this base in and keep working
in the tree. What is the way forward here?
Since it's not build by default and doesn't touch core,
it shouldn't cause any breakage, but
may be someone can trigger buildbot run for this patch?

> V3->V4:
>
> - added CODE_OWNERS entry for BPF backend
>
> V2->V3:
>
> - fix metadata in tests
>
> V1->V2:
>
> - addressed feedback from Tom and Matt
> - removed top level change to configure (now everything via 'experimental-backend')
> - reworked error reporting via DiagnosticInfo (similar to R600)
> - added few more tests
> - added cmake build
> - added Triple::bpf
> - tested on linux and darwin
>
>
> ⚙ D6494 BPF backend

cc-ing llvmdev to get feedback.

this patch is not the end of development,
rather are solid base that folks can start using now.
I'm still working on better error handling, more tests,
fixes for some corner cases, debug gen, few optimizations, etc.
I can keep posting next versions, but the patch will
only get bigger which is against 'incremental changes' policy.
I would prefer to get this base in and keep working
in the tree. What is the way forward here?
Since it's not build by default and doesn't touch core,
it shouldn't cause any breakage, but
may be someone can trigger buildbot run for this patch?

As far as I know it's up to Chris Lattner to approve new backends, so
you should start cc'ing him on these emails. Also, due to the holidays
and the recent mailing list issues reviews / responses may be delayed.

Personally, I think this should be added as an experimental target.
I have reviewed the code and it looks pretty good. I also think it
benefits the project to have a simple backend like this in tree, because
it's much easier to use a reference then some of the more complex targets.

-Tom