[llvm] r302137 - [ArgPromotion] Fix a truncated variable

Martin Storsjö via llvm-commits llvm-commits at lists.llvm.org
Thu May 4 11:52:24 PDT 2017


On Thu, 4 May 2017, Davide Italiano wrote:

> On Thu, May 4, 2017 at 3:54 AM, Martin Storsjo via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
>> Author: mstorsjo
>> Date: Thu May  4 05:54:35 2017
>> New Revision: 302137
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=302137&view=rev
>> Log:
>> [ArgPromotion] Fix a truncated variable
>>
>> This fixes a regression since SVN rev 273808 (which was supposed to
>> not change functionality).
>>
>> The regression caused miscompilations (noted in the wild when targeting
>> AArch64) on platforms with 32 bit long.
>>
>> Differential Revision: https://reviews.llvm.org/D32850
>>
>> Modified:
>>     llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp
>>
>> Modified: llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp?rev=302137&r1=302136&r2=302137&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp (original)
>> +++ llvm/trunk/lib/Transforms/IPO/ArgumentPromotion.cpp Thu May  4 05:54:35 2017
>> @@ -247,7 +247,7 @@ doPromotion(Function *F, SmallPtrSetImpl
>>            if (!ArgIndex.second.empty()) {
>>              Ops.reserve(ArgIndex.second.size());
>>              Type *ElTy = V->getType();
>> -            for (unsigned long II : ArgIndex.second) {
>> +            for (auto II : ArgIndex.second) {
>>                // Use i32 to index structs, and i64 for others (pointers/arrays).
>>                // This satisfies GEP constraints.
>>                Type *IdxTy =
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
> Please add the testcase that caused the miscompilation.

I've got a reduced testcase in 
https://bugs.llvm.org/show_bug.cgi?id=32917. Should I add the produced IR 
from this as a testcase in LLVM, looking e.g. for the string "#-4" in the 
output assembly, or do you have any more concrete suggestions on how to do 
such a test?

// Martin


More information about the llvm-commits mailing list