aboutsummaryrefslogtreecommitdiff
path: root/clang/test/ParserOpenACC/parse-wait-construct.c
diff options
context:
space:
mode:
authorjyu2-git <jennifer.yu@intel.com>2023-12-07 09:38:56 -0800
committerGitHub <noreply@github.com>2023-12-07 09:38:56 -0800
commit0113722d82200c39e59dcfbd2f396dbd84ed022b (patch)
tree512e47123c54534cdcad9074b8fff659cf10f734 /clang/test/ParserOpenACC/parse-wait-construct.c
parent789a5bbb7d5befac6c29a774d3db487abe881331 (diff)
downloadllvm-0113722d82200c39e59dcfbd2f396dbd84ed022b.zip
llvm-0113722d82200c39e59dcfbd2f396dbd84ed022b.tar.gz
llvm-0113722d82200c39e59dcfbd2f396dbd84ed022b.tar.bz2
[OpenMP] Fix runtime problem due to wrong map size. (#74692)
Currently we are missing set up-boundary address for FinalArraySection as highests elements in partial struct data. Currently for: \#pragma omp target map(D.a) map(D.b[:2]) The size is: %a = getelementptr inbounds %struct.DataTy, ptr %D, i32 0, i32 0 %b = getelementptr inbounds %struct.DataTy, ptr %D, i32 0, i32 1 %arrayidx = getelementptr inbounds [2 x float], ptr %b, i64 0, i64 0 %2 = getelementptr float, ptr %arrayidx, i32 1 %3 = ptrtoint ptr %2 to i64 %4 = ptrtoint ptr %a to i64 %5 = sub i64 %3, %4 %6 = sdiv exact i64 %5, ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64) Where %2 is wrong for (D.b[:2]) is pointer to first element of array section. It should pointe to last element of array section. The fix is to emit the pointer to the last element of array section and use this pointer as the highest element in partial struct data. After change IR: %a = getelementptr inbounds %struct.DataTy, ptr %D, i32 0, i32 0 %b = getelementptr inbounds %struct.DataTy, ptr %D, i32 0, i32 1 %arrayidx = getelementptr inbounds [2 x float], ptr %b, i64 0, i64 0 %b1 = getelementptr inbounds %struct.DataTy, ptr %D, i32 0, i32 1 %arrayidx2 = getelementptr inbounds [2 x float], ptr %b1, i64 0, i64 1 %1 = getelementptr float, ptr %arrayidx2, i32 1 %2 = ptrtoint ptr %1 to i64 %3 = ptrtoint ptr %a to i64 %4 = sub i64 %2, %3 %5 = sdiv exact i64 %4, ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)
Diffstat (limited to 'clang/test/ParserOpenACC/parse-wait-construct.c')
0 files changed, 0 insertions, 0 deletions