search for: _z1fpds_s_

Displaying 8 results from an estimated 8 matches for "_z1fpds_s_".

2012 Jan 24
2
[LLVMdev] Pointer aliasing
...the __restrict__ keyword was not used at all. Even more strange is the fact that for this function: double f(double *__restrict__ x, double *__restrict__ y, double *__restrict__ z) { *x = 1.0; *y = *x + 2; *z = *x + 3; return *x + *y + *z; } everything works as expected: define double @_Z1fPdS_S_(double* noalias nocapture %x, double* noalias nocapture %y, double* noalias nocapture %z) nounwind uwtable { store double 1.000000e+00, double* %x, align 8, !tbaa !0 store double 3.000000e+00, double* %y, align 8, !tbaa !0 store double 4.000000e+00, double* %z, align 8, !tbaa !0 ret double...
2012 Jan 24
0
[LLVMdev] Pointer aliasing
...e fact that for > this function: > > double f(double *__restrict__ x, double *__restrict__ y, double *__restrict__ z) > { > *x = 1.0; > *y = *x + 2; > *z = *x + 3; > > return *x + *y + *z; > } > > everything works as expected: > > define double @_Z1fPdS_S_(double* noalias nocapture %x, double* > noalias nocapture %y, double* noalias nocapture %z) nounwind uwtable { > store double 1.000000e+00, double* %x, align 8, !tbaa !0 > store double 3.000000e+00, double* %y, align 8, !tbaa !0 > store double 4.000000e+00, double* %z, align 8,...
2012 Jan 24
2
[LLVMdev] Pointer aliasing
...>>> { >>>> *x = 1.0; >>>> *y = *x + 2; >>>> *z = *x + 3; >>>> >>>> return *x + *y + *z; >>>> } >>>> >>>> everything works as expected: >>>> >>>> define double @_Z1fPdS_S_(double* noalias nocapture %x, double* >>>> noalias nocapture %y, double* noalias nocapture %z) nounwind uwtable { >>>> store double 1.000000e+00, double* %x, align 8, !tbaa !0 >>>> store double 3.000000e+00, double* %y, align 8, !tbaa !0 >>>> st...
2012 Jan 24
0
[LLVMdev] Pointer aliasing
..., double >>> *__restrict__ z) >>> { >>> *x = 1.0; >>> *y = *x + 2; >>> *z = *x + 3; >>> >>> return *x + *y + *z; >>> } >>> >>> everything works as expected: >>> >>> define double @_Z1fPdS_S_(double* noalias nocapture %x, double* >>> noalias nocapture %y, double* noalias nocapture %z) nounwind uwtable { >>> store double 1.000000e+00, double* %x, align 8, !tbaa !0 >>> store double 3.000000e+00, double* %y, align 8, !tbaa !0 >>> store double 4....
2012 Jan 24
4
[LLVMdev] Pointer aliasing
...ble f(double *__restrict__ x, double *__restrict__ y, double >> *__restrict__ z) >> { >>   *x = 1.0; >>   *y = *x + 2; >>   *z = *x + 3; >> >>   return *x + *y + *z; >> } >> >> everything works as expected: >> >> define double @_Z1fPdS_S_(double* noalias nocapture %x, double* >> noalias nocapture %y, double* noalias nocapture %z) nounwind uwtable { >>   store double 1.000000e+00, double* %x, align 8, !tbaa !0 >>   store double 3.000000e+00, double* %y, align 8, !tbaa !0 >>   store double 4.000000e+00, double*...
2012 Jan 24
0
[LLVMdev] Pointer aliasing
...= 1.0; >>>>> *y = *x + 2; >>>>> *z = *x + 3; >>>>> >>>>> return *x + *y + *z; >>>>> } >>>>> >>>>> everything works as expected: >>>>> >>>>> define double @_Z1fPdS_S_(double* noalias nocapture %x, double* >>>>> noalias nocapture %y, double* noalias nocapture %z) nounwind uwtable { >>>>> store double 1.000000e+00, double* %x, align 8, !tbaa !0 >>>>> store double 3.000000e+00, double* %y, align 8, !tbaa !0 >&gt...
2012 Jan 24
0
[LLVMdev] Pointer aliasing
Hi Brent, Looking at your code I can see at least one reason why some of the store operations remain in the output since you are (through x, y, and z) writing in memory which exists outside of your function (p). Constant propagation also seems to work in the first few lines, *y = *x +1 (%3) is stored directly. The strange thing to me is that the same doesn't happen for *z = *x + 2. Here
2012 Jan 23
2
[LLVMdev] Pointer aliasing
Hi LLVMers, I would like to ask a question regarding aliasing. Suppose I have the following program: double f(double** p ) { double a,b,c; double * x = &a; double * y = &b; double * z = &c; *x = 1; *y = *x + 2; *z = *x + 3; return *x+*y+*z; } LLVM can tell that the three pointers do not alias each other so can perform the constant folding at compile time.