[llvm-dev] the root cause is CP, was: A tagged architecture, the elephant in the undef / poison room
Sanjoy Das via llvm-dev
llvm-dev at lists.llvm.org
Tue Jun 20 00:17:09 PDT 2017
Hi Peter,
On Mon, Jun 19, 2017 at 10:02 AM, Peter Lawrence
<peterl95124 at sbcglobal.net> wrote:
> The point is this, you have to take a stand one way or
> the other on the function-inlining issue:
>
>
> [1. this function *always* executes statement S,
> F(a) {
> If (a == a) S;
> }
> but in llvm if you inline it and “a” happens to be “undef” then nothing can
> be said about whether statement S is executed. This is indefensible.]
>
>
> My belief is this: that llvm exists for a utilitarian purpose,
Agreed on this front.
> and that llvm currently violates that utilitarian goal by violating
You've assumed that LLVM's utility primarily lies in providing
programming-language like semantics that are obvious and easy to
program. That isn't the case -- LLVM is a compiler framework, and its
IR semantics are only somewhat related to source language semantics.
> the users expectations in the function-inlining example.
>
> So the question is, where do you stand ?
As I said, I disagree with your characterization of LLVM's utility.
You can always write an LLVM frontend that does not generate IR that
will have this kind of "odd" semantics (in fact, I *am* a proponent of
using "safe" languages wherever possible). However, the safety /
"obviousness" of the programming language is not directly related to
the safety / "obviousness" of LLVM IR.
-- Sanjoy
More information about the llvm-dev
mailing list