[LLVMdev] Eliminating redundant loads

Dibyendu Majumdar mobile at majumdar.org.uk
Mon Feb 23 12:17:21 PST 2015


On 23 February 2015 at 11:22, David Jones <djones at xtreme-eda.com> wrote:
> You have not installed the DataLayout in the Module, as I had pointed out
> earlier.
>

Hi David,

I reported earlier that I tried this but there was no improvement.
Well I ran another test to be sure. The results are below. As you can
see the loads are still present.

; ModuleID = 'ravi_module_ravif1'
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc-elf"

%0 = type { %ravi.TValue*, i32*, i64 }

....

  %6 = load %ravi.TValue** %base
  %srcvalue = getelementptr inbounds %ravi.TValue* %5, i32 0, i32 0, i32 0
  %destvalue = getelementptr inbounds %ravi.TValue* %6, i32 0, i32 0, i32 0
  %7 = load double* %srcvalue
  store double %7, double* %destvalue
  %srctype = getelementptr inbounds %ravi.TValue* %5, i32 0, i32 1
  %desttype = getelementptr inbounds %ravi.TValue* %6, i32 0, i32 1
  %8 = load i32* %srctype
  store i32 %8, i32* %desttype
  %9 = load %ravi.TValue** %base
  %10 = getelementptr inbounds %ravi.TValue* %9, i32 1
  %11 = getelementptr inbounds %ravi.TValue* %5, i32 1
  %srcvalue1 = getelementptr inbounds %ravi.TValue* %11, i32 0, i32 0, i32 0
  %destvalue2 = getelementptr inbounds %ravi.TValue* %10, i32 0, i32 0, i32 0
  %12 = load double* %srcvalue1
  store double %12, double* %destvalue2
  %srctype3 = getelementptr inbounds %ravi.TValue* %11, i32 0, i32 1
  %desttype4 = getelementptr inbounds %ravi.TValue* %10, i32 0, i32 1
  %13 = load i32* %srctype3
  store i32 %13, i32* %desttype4
  %14 = load %ravi.TValue** %base
  %15 = getelementptr inbounds %ravi.TValue* %14, i32 2
  %16 = getelementptr inbounds %ravi.TValue* %5, i32 2
  %srcvalue5 = getelementptr inbounds %ravi.TValue* %16, i32 0, i32 0, i32 0
  %destvalue6 = getelementptr inbounds %ravi.TValue* %15, i32 0, i32 0, i32 0
  %17 = load double* %srcvalue5
  store double %17, double* %destvalue6
  %srctype7 = getelementptr inbounds %ravi.TValue* %16, i32 0, i32 1
  %desttype8 = getelementptr inbounds %ravi.TValue* %15, i32 0, i32 1
  %18 = load i32* %srctype7
  store i32 %18, i32* %desttype8
  %19 = load %ravi.TValue** %base



More information about the llvm-dev mailing list