[llvm] r214321 - UseListOrder: Visit global values

Rafael Avila de Espindola rafael.espindola at gmail.com
Wed Jul 30 11:56:12 PDT 2014


>    I think the fix is to upgrade old-style global arrays (or reject
>    them?) in the .ll parser.
> 

The .ll format is not stable, so you should be able to just reject it.

> This is part of PR5680.
> 
> Modified:
>    llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp
>    llvm/trunk/test/Bitcode/miscInstructions.3.2.ll
>    llvm/trunk/test/Bitcode/ssse3_palignr.ll
>    llvm/trunk/test/Bitcode/use-list-order.ll
>    llvm/trunk/test/Bitcode/variableArgumentIntrinsic.3.2.ll
> 
> Modified: llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp?rev=214321&r1=214320&r2=214321&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp (original)
> +++ llvm/trunk/lib/Bitcode/Writer/ValueEnumerator.cpp Wed Jul 30 12:51:09 2014
> @@ -211,9 +211,9 @@ static void predictValueUseListOrder(con
> 
>   // Recursive descent into constants.
>   if (const Constant *C = dyn_cast<Constant>(V))
> -    if (C->getNumOperands() && !isa<GlobalValue>(C))
> +    if (C->getNumOperands()) // Visit GlobalValues.
>       for (const Value *Op : C->operands())
> -        if (isa<Constant>(Op) && !isa<GlobalValue>(Op))
> +        if (isa<Constant>(Op)) // Visit GlobalValues.
>           predictValueUseListOrder(Op, F, OM, Stack);
> }
> 
> @@ -241,8 +241,7 @@ static UseListOrderStack predictUseListO
>     for (const BasicBlock &BB : F)
>       for (const Instruction &I : BB)
>         for (const Value *Op : I.operands())
> -          if ((isa<Constant>(*Op) && !isa<GlobalValue>(*Op)) ||
> -              isa<InlineAsm>(*Op))
> +          if (isa<Constant>(*Op) || isa<InlineAsm>(*Op)) // Visit GlobalValues.
>             predictValueUseListOrder(Op, &F, OM, Stack);
>     for (const BasicBlock &BB : F)
>       for (const Instruction &I : BB)
> 
> Modified: llvm/trunk/test/Bitcode/miscInstructions.3.2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/miscInstructions.3.2.ll?rev=214321&r1=214320&r2=214321&view=diff
> ==============================================================================
> --- llvm/trunk/test/Bitcode/miscInstructions.3.2.ll (original)
> +++ llvm/trunk/test/Bitcode/miscInstructions.3.2.ll Wed Jul 30 12:51:09 2014
> @@ -1,4 +1,5 @@
> ; RUN: llvm-dis < %s.bc| FileCheck %s
> +; RUN: verify-uselistorder < %s.bc -preserve-bc-use-list-order -num-shuffles=5
> 
> ; miscInstructions.3.2.ll.bc was generated by passing this file to llvm-as-3.2.
> ; The test checks that LLVM does not misread miscellaneous instructions of
> 
> Modified: llvm/trunk/test/Bitcode/ssse3_palignr.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/ssse3_palignr.ll?rev=214321&r1=214320&r2=214321&view=diff
> ==============================================================================
> --- llvm/trunk/test/Bitcode/ssse3_palignr.ll (original)
> +++ llvm/trunk/test/Bitcode/ssse3_palignr.ll Wed Jul 30 12:51:09 2014
> @@ -1,4 +1,5 @@
> ; RUN: opt < %s -S | FileCheck %s
> +; RUN: verify-uselistorder < %s -preserve-bc-use-list-order -num-shuffles=5
> ; CHECK-NOT: {@llvm\\.palign}
> 
> define <4 x i32> @align1(<4 x i32> %a, <4 x i32> %b) nounwind readnone ssp {
> 
> Modified: llvm/trunk/test/Bitcode/use-list-order.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/use-list-order.ll?rev=214321&r1=214320&r2=214321&view=diff
> ==============================================================================
> --- llvm/trunk/test/Bitcode/use-list-order.ll (original)
> +++ llvm/trunk/test/Bitcode/use-list-order.ll Wed Jul 30 12:51:09 2014
> @@ -17,6 +17,11 @@
> @var2 = global i3* @target
> @var3 = global i3* @target
> 
> +; Check use-list order for a global when used both by a global and in a
> +; function.
> + at globalAndFunction = global i4 4
> + at globalAndFunctionGlobalUser = global i4* @globalAndFunction
> +
> define i64 @f(i64 %f) {
> entry:
>   %sum = add i64 %f, 0
> @@ -94,3 +99,9 @@ first:
>   %gotosecond = icmp slt i32 %gh, -9
>   br i1 %gotosecond, label %second, label %exit
> }
> +
> +define i4 @globalAndFunctionFunctionUser() {
> +entry:
> +  %local = load i4* @globalAndFunction
> +  ret i4 %local
> +}
> 
> Modified: llvm/trunk/test/Bitcode/variableArgumentIntrinsic.3.2.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bitcode/variableArgumentIntrinsic.3.2.ll?rev=214321&r1=214320&r2=214321&view=diff
> ==============================================================================
> --- llvm/trunk/test/Bitcode/variableArgumentIntrinsic.3.2.ll (original)
> +++ llvm/trunk/test/Bitcode/variableArgumentIntrinsic.3.2.ll Wed Jul 30 12:51:09 2014
> @@ -1,4 +1,5 @@
> ; RUN: llvm-dis < %s.bc| FileCheck %s
> +; RUN: verify-uselistorder < %s.bc -preserve-bc-use-list-order -num-shuffles=5
> 
> ; vaArgIntrinsic.3.2.ll.bc was generated by passing this file to llvm-as-3.2.
> ; The test checks that LLVM does not misread variable argument intrinsic instructions
> 
> 
> _______________________________________________
> 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