[llvm-dev] Questions about jump threading optimization and what we can do (original) (raw)
Karl Rehm via llvm-dev llvm-dev at lists.llvm.org
Mon Feb 3 09:55:46 PST 2020
- Previous message: [llvm-dev] Questions about jump threading optimization and what we can do
- Next message: [llvm-dev] Questions about jump threading optimization and what we can do
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Well ideally it'd do the same thing as before (with two if statements). Something like: ret i64 4
It's not really about needing to be as good as gcc, it's more that I wonder why the same concept with just two if-else blocks gets optimized yet more doesn't. An interesting point to make is that I don't think it's jump threading optimizing the original example fully: https://godbolt.org/z/rGvHJk
-Karl
On Mon, Feb 3, 2020 at 12:29 PM Michael Kruse <llvmdev at meinersbur.de> wrote:
How does the code you would like to have look like? I don't see a relevant difference compared to gcc: https://godbolt.org/z/F-oah4 (clang unnecessarily introduces another temporary register, but that seems unrelated)
Michael Am So., 2. Feb. 2020 um 18:24 Uhr schrieb Karl Rehm via llvm-dev <llvm-dev at lists.llvm.org>: > > Here's a better example. https://godbolt.org/z/fpTyFS > I don't know what exactly you would need to change in JumpThreading to improve this, but I'm open to ideas. > > On Sun, Feb 2, 2020 at 12:45 PM Karl Rehm <klrehm123 at gmail.com> wrote: >> >> Holy crap, I completely missed that. I'm sorry! That's my fault. >> >> On Sun, Feb 2, 2020 at 12:15 PM Johannes Doerfert <jdoerfert at anl.gov> wrote: >>> >>> On 01/30, Karl Rehm via llvm-dev wrote: >>> > Since the bug report here: https://bugs.llvm.org/showbug.cgi?id=44679 I've >>> > been thinking about cases like it, such as: https://godbolt.org/z/Fwq8mn >>> > >>> > I wonder what we can do about this in a general sense. As far as I can >>> > tell, the jump threading algorithm is really conservative, which is one >>> > reason this isn't working as well as I'd hope; however, we don't want to >>> > produce irreducible control flow that the other passes would work less >>> > effectively on. Thoughts? >>> >>> I'm confused. In your godbold link you run it with O0 which disables >>> almost all transformations. If we take the IR, remove the optnone >>> attribute, run mem2reg and jump-threading we get what I think is >>> reasonable: >>> https://godbolt.org/z/u3fcTZ >>> >>> Please correct me if I misunderstand anything here. >>> >>> Cheers, >>> Johannes > _> ________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200203/a7a72572/attachment.html>
- Previous message: [llvm-dev] Questions about jump threading optimization and what we can do
- Next message: [llvm-dev] Questions about jump threading optimization and what we can do
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]