(original) (raw)



On Tue, Feb 24, 2015 at 11:00 AM, Philip Reames <listmail@philipreames.com> wrote:

On 02/24/2015 10:51 AM, Hal Finkel wrote:
\----- Original Message -----
From: "Philip Reames" <listmail@philipreames.com>
To: "Chandler Carruth" <chandlerc@google.com>, "Katya Romanova" <Katya\_Romanova@playstation.sony.com>, "Nick Lewycky"
<nlewycky@google.com>
Cc: llvmdev@cs.uiuc.edu, "Hal Finkel" <hfinkel@anl.gov>, "Rafael Espindola" <rafael\_espindola@playstation.sony.com>,
"Sanjoy Das" <sanjoy@playingwithpointers.com>, "David Majnemer" <david.majnemer@gmail.com>
Sent: Tuesday, February 24, 2015 12:45:51 PM
Subject: Re: Jump Theading/GVN bug - moving discussion to llvm-dev

Whatever we end up deciding, I think we do need to preserve the
ability of a language frontend to generate complete garbage in the
form of unreachable code.
And this is exactly what I don't understand. Why would a frontend need to produce "complete garbage" in unreachabe code?
Er, my wording was poor here. I did not mean the self referential case. I simply meant an unreachable block. I meant to say that a frontend shouldn't have to remove all statically unreachable blocks before passing it to LLVM. Not producing self referential instructions seems like a perfectly reasonable restriction. :)

I'm actually perfectly fine with this kind of restriction. If we want to create dead blocks through passes, so be it (though we seem to already go to lengths to avoid it in a lot of passes, as i pointed out). But uh, we should limit the stuff in the dead blocks to not be invalid in some form :)