[llvm] r194221 - IR: Properly canonicalize PointerType in ConstantExpr GEPs

David Majnemer david.majnemer at gmail.com
Thu Nov 7 17:17:04 PST 2013


Will take a look in an hour, feel free to revert if you'd like.

Sent from my iPhone

> On Nov 7, 2013, at 3:21 PM, jahanian <fjahanian at apple.com> wrote:
> 
> This patch breaks couple of tests on a Windows buildbot.
> 
> Failing Tests (2):
>       Clang :: CodeGenCXX/for-range.cpp
>       Clang :: CodeGenCXX/global-array-destruction.cpp
> 
> A sample of failure (with complete path replaced with … ) is below.
> 
> - Fariborz
> 
> 
> Command 1 Stderr:
>   C:\...\src\tools\clang\test\CodeGenCXX\global-array-destruction.cpp:59:11: error: expected string not found in input
>   // CHECK: getelementptr inbounds ([2 x [3 x {{.*}}]]* @_ZGR1u, i64 1, i64 0, i64 0)
>             ^
>   <stdin>:327:29: note: scanning from here
>    %1 = call i32 @__cxa_atexit(void (i8*)* @__cxx_global_array_dtor18, i8* null, i8* @__dso_handle) #0
>                               ^
>   <stdin>:339:59: note: possible intended match here
>    %4 = phi %struct.T* [ getelementptr inbounds (%struct.T* getelementptr inbounds ([2 x [3 x %struct.T]]* @_ZGR1u, i32 0, i32 0, i32 0), i64 6), %1 ], [ %5, %3 ]
>                                                             
> 
>> On Nov 7, 2013, at 2:29 PM, David Majnemer <david.majnemer at gmail.com> wrote:
>> 
>> Author: majnemer
>> Date: Thu Nov  7 16:29:42 2013
>> New Revision: 194221
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=194221&view=rev
>> Log:
>> IR: Properly canonicalize PointerType in ConstantExpr GEPs
>> 
>> No additional test was needed, Other/constant-fold-gep.ll detects this
>> just fine.
>> 
>> Modified:
>>    llvm/trunk/lib/IR/ConstantFold.cpp
>> 
>> Modified: llvm/trunk/lib/IR/ConstantFold.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/ConstantFold.cpp?rev=194221&r1=194220&r2=194221&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/IR/ConstantFold.cpp (original)
>> +++ llvm/trunk/lib/IR/ConstantFold.cpp Thu Nov  7 16:29:42 2013
>> @@ -1966,11 +1966,12 @@ static Constant *ConstantFoldGetElementP
>>         else if (VectorType *VTy = dyn_cast<VectorType>(LastTy))
>>           NumElements = VTy->getNumElements();
>> 
>> -        if (ConstantInt *CI = dyn_cast<ConstantInt>(Idx0)) {
>> -          int64_t Idx0Val = CI->getSExtValue();
>> -          if (NumElements > 0 && Idx0Val >= 0 &&
>> -              (uint64_t)Idx0Val < NumElements)
>> -            IsSequentialAccessInRange = true;
>> +        if (NumElements > 0) {
>> +          if (ConstantInt *CI = dyn_cast<ConstantInt>(Idx0)) {
>> +            int64_t Idx0Val = CI->getSExtValue();
>> +            if (Idx0Val >= 0 && (uint64_t)Idx0Val < NumElements)
>> +              IsSequentialAccessInRange = true;
>> +          }
>>         } else if (PointerType *PTy = dyn_cast<PointerType>(LastTy))
>>           // Only handle pointers to sized types, not pointers to functions.
>>           if (PTy->getElementType()->isSized())
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131107/0e65c40a/attachment.html>


More information about the llvm-commits mailing list