[PATCH] Fix crash in loop idiom recognizer
Hal Finkel
hfinkel at anl.gov
Wed Jul 8 18:36:56 PDT 2015
LGTM.
-Hal
----- Original Message -----
> From: "Pete Cooper" <peter_cooper at apple.com>
> To: "llvm-commits" <llvm-commits at cs.uiuc.edu>
> Sent: Wednesday, July 8, 2015 1:35:38 PM
> Subject: [PATCH] Fix crash in loop idiom recognizer
>
>
>
> Hi all
>
> When spotting that a loop can use ctpop, we were incorrectly
> replacing all uses of a value with a value derived from ctpop.
>
> The bug here was exposed because we were replacing a use prior to the
> ctpop with the ctpop value and so we have a use before def, i.e., we
> changed
>
> %tobool.5 = icmp ne i32 %num, 0
> store i1 %tobool.5, i1* %ptr
> br i1 %tobool.5, label %for.body.lr.ph, label %for.end
>
> to
>
> store i1 %1, i1* %ptr
> %0 = call i32 @llvm.ctpop.i32(i32 %num)
> %1 = icmp ne i32 %0, 0
> br i1 %1, label %for.body.lr.ph, label %for.end
>
> Even if we inserted the ctpop so that it dominates the store here,
> that would still be incorrect. The store doesn’t want the result of
> ctpop.
>
> The fix is very simple, and involves replacing only the branch
> condition with the ctpop instead of all uses.
>
> Cheers,
> Pete
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list