[llvm] r228760 - EarlyCSE: It isn't safe to CSE across synchronization boundaries
Hans Wennborg
hans at chromium.org
Tue Feb 10 18:25:00 PST 2015
Merged in r228790.
Thanks,
Hans
On Tue, Feb 10, 2015 at 6:08 PM, David Majnemer
<david.majnemer at gmail.com> wrote:
> Hi Hans,
>
> I think r228760 and r228761 should get merged into 3.6
>
> On Tue, Feb 10, 2015 at 3:09 PM, David Majnemer <david.majnemer at gmail.com>
> wrote:
>>
>> Author: majnemer
>> Date: Tue Feb 10 17:09:43 2015
>> New Revision: 228760
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=228760&view=rev
>> Log:
>> EarlyCSE: It isn't safe to CSE across synchronization boundaries
>>
>> This fixes PR22514.
>>
>> Modified:
>> llvm/trunk/lib/Transforms/Scalar/EarlyCSE.cpp
>> llvm/trunk/test/Transforms/EarlyCSE/basic.ll
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/EarlyCSE.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/EarlyCSE.cpp?rev=228760&r1=228759&r2=228760&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/EarlyCSE.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/EarlyCSE.cpp Tue Feb 10 17:09:43 2015
>> @@ -527,6 +527,9 @@ bool EarlyCSE::processNode(DomTreeNode *
>> // Ignore volatile loads.
>> if (MemInst.isVolatile()) {
>> LastStore = nullptr;
>> + // Don't CSE across synchronization boundaries.
>> + if (Inst->mayWriteToMemory())
>> + ++CurrentGeneration;
>> continue;
>> }
>>
>>
>> Modified: llvm/trunk/test/Transforms/EarlyCSE/basic.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/EarlyCSE/basic.ll?rev=228760&r1=228759&r2=228760&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/test/Transforms/EarlyCSE/basic.ll (original)
>> +++ llvm/trunk/test/Transforms/EarlyCSE/basic.ll Tue Feb 10 17:09:43 2015
>> @@ -193,4 +193,10 @@ define void @test11(i32 *%P) {
>> ; CHECK-NEXT: ret void
>> }
>>
>> -
>> +define i32 @test12(i1 %B, i32* %P1, i32* %P2) {
>> + %load0 = load i32* %P1
>> + %1 = load atomic i32* %P2 seq_cst, align 4
>> + %load1 = load i32* %P1
>> + %sel = select i1 %B, i32 %load0, i32 %load1
>> + ret i32 %sel
>> +}
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
More information about the llvm-commits
mailing list