[llvm-commits] [llvm] r153465 - /llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp

Rotem, Nadav nadav.rotem at intel.com
Tue Mar 27 01:01:43 PDT 2012


Hi Duncan, 

You are absolutely correct. I realized it a second after I made this commit, and I fixed it in r153468.

Thanks,
Nadav

-----Original Message-----
From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of Duncan Sands
Sent: Tuesday, March 27, 2012 09:54
To: llvm-commits at cs.uiuc.edu
Subject: Re: [llvm-commits] [llvm] r153465 - /llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp

Hi Nadav,

> PR12357: The pointer was used before it was checked.

> --- llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp 
> (original)
> +++ llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp Mon 
> +++ Mar 26 15:39:18 2012
> @@ -915,11 +915,13 @@
>
>     // Handle gep(bitcast x) and gep(gep x, 0, 0, 0).
>     Value *StrippedPtr = PtrOp->stripPointerCasts();
> -  PointerType *StrippedPtrTy = 
> dyn_cast<PointerType>(StrippedPtr->getType());
> +
>     // We do not handle pointer-vector geps here
>     if (!StrippedPtr)
>       return 0;
>
> +  PointerType *StrippedPtrTy = 
> + dyn_cast<PointerType>(StrippedPtr->getType());
> +
>     if (StrippedPtr != PtrOp&&
>       StrippedPtrTy->getAddressSpace() == 
> GEP.getPointerAddressSpace()) {

are you sure the mistake wasn't that

     if (!StrippedPtr)
       return 0;

should have been

     if (!StrippedPtrTy)
       return 0;

?

After all, StrippedPtr cannot ever be null, so the test is pointless for it.
However the dynamic cast generating StrippedPtrTy can result in a null value, which is not checked for.  Also, if StrippedPtrTy is null then I think that corresponds to exactly the situation of a GEP on a vector of pointers mentioned in the comment on the test.

Ciao, Duncan.
_______________________________________________
llvm-commits mailing list
llvm-commits at cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.





More information about the llvm-commits mailing list