27
27
#include " llvm/Support/Format.h"
28
28
#include " llvm/Support/raw_ostream.h"
29
29
30
- #include " TargetCode.h"
31
30
#include " Debug.h"
31
+ #include " TargetCode.h"
32
32
33
33
bool TargetCode::addCodeFragment (std::shared_ptr<TargetCodeFragment> Frag,
34
34
bool PushFront) {
35
35
for (auto &F : CodeFragments) {
36
36
// Reject Fragments which are inside Fragments which we already have
37
- if (SM.isPointWithin (Frag->getRealRange ().getBegin (),
38
- F->getRealRange ().getBegin (),
39
- F->getRealRange ().getEnd ()) ||
37
+ if ((SM.isPointWithin (Frag->getRealRange ().getBegin (),
38
+ F->getRealRange ().getBegin (),
39
+ F->getRealRange ().getEnd ()) &&
40
+ Frag->getRealRange ().getBegin () != F->getRealRange ().getBegin ()) ||
40
41
SM.isPointWithin (Frag->getRealRange ().getEnd (),
41
42
F->getRealRange ().getBegin (),
42
43
F->getRealRange ().getEnd ())) {
@@ -113,7 +114,7 @@ void TargetCode::generateFunctionPrologue(TargetCodeRegion *TCR) {
113
114
}
114
115
first = false ;
115
116
116
- // check for constant or variable length arrays, because of
117
+ // check for constant or variable length arrays, because of
117
118
// AST representation and naive getType
118
119
if (auto t = clang::dyn_cast_or_null<clang::ArrayType>(
119
120
(*i)->getType ().getTypePtr ())) {
@@ -157,8 +158,7 @@ void TargetCode::generateFunctionPrologue(TargetCodeRegion *TCR) {
157
158
t->getElementType ().getTypePtr ());
158
159
} while (t != NULL );
159
160
160
- Out << " " << elemType << " (*" << VarName
161
- << " )" ;
161
+ Out << " " << elemType << " (*" << VarName << " )" ;
162
162
163
163
// Get number of Dimensions(nDim) and write sizes(DimString)
164
164
for (int i = 1 ; i < nDim.front (); i++) {
@@ -210,8 +210,7 @@ void TargetCode::generateFunctionPrologue(TargetCodeRegion *TCR) {
210
210
break ;
211
211
}
212
212
case clang::OpenMPDirectiveKind::OMPD_target_parallel_for_simd: {
213
- Out << " #pragma omp parallel for simd " << TCR->PrintClauses ()
214
- << " \n " ;
213
+ Out << " #pragma omp parallel for simd " << TCR->PrintClauses () << " \n " ;
215
214
break ;
216
215
}
217
216
case clang::OpenMPDirectiveKind::OMPD_target_simd: {
@@ -228,8 +227,7 @@ void TargetCode::generateFunctionPrologue(TargetCodeRegion *TCR) {
228
227
}
229
228
case clang::OpenMPDirectiveKind::
230
229
OMPD_target_teams_distribute_parallel_for_simd: {
231
- Out << " #pragma omp parallel for simd " << TCR->PrintClauses ()
232
- << " \n " ;
230
+ Out << " #pragma omp parallel for simd " << TCR->PrintClauses () << " \n " ;
233
231
break ;
234
232
}
235
233
case clang::OpenMPDirectiveKind::OMPD_target_teams_distribute_simd: {
@@ -252,17 +250,17 @@ void TargetCode::generateFunctionEpilogue(TargetCodeRegion *TCR) {
252
250
// ||
253
251
TCR->TargetCodeKind == clang::OpenMPDirectiveKind::OMPD_target_parallel ||
254
252
// TCR->TargetCodeKind ==
255
- // clang::OpenMPDirectiveKind::OMPD_target_parallel_for ||
253
+ // clang::OpenMPDirectiveKind::OMPD_target_parallel_for ||
256
254
// TCR->TargetCodeKind ==
257
- // clang::OpenMPDirectiveKind::OMPD_target_parallel_for_simd ||
255
+ // clang::OpenMPDirectiveKind::OMPD_target_parallel_for_simd ||
258
256
TCR->TargetCodeKind == clang::OpenMPDirectiveKind::OMPD_target_simd ||
259
257
// TCR->TargetCodeKind ==
260
258
// clang::OpenMPDirectiveKind::OMPD_target_teams_distribute ||
261
259
// TCR->TargetCodeKind == clang::OpenMPDirectiveKind::
262
- // OMPD_target_teams_distribute_parallel_for ||
260
+ // OMPD_target_teams_distribute_parallel_for ||
263
261
// TCR->TargetCodeKind ==
264
- // clang::OpenMPDirectiveKind::
265
- // OMPD_target_teams_distribute_parallel_for_simd ||
262
+ // clang::OpenMPDirectiveKind::
263
+ // OMPD_target_teams_distribute_parallel_for_simd ||
266
264
TCR->TargetCodeKind ==
267
265
clang::OpenMPDirectiveKind::OMPD_target_teams_distribute_simd) {
268
266
Out << " \n }" ;
@@ -318,12 +316,11 @@ std::string TargetCode::generateFunctionName(TargetCodeRegion *TCR) {
318
316
}
319
317
320
318
void TargetCode::handleArrays (const clang::ArrayType **t,
321
- std::list<std::string>& DimString,
322
- int & dim, TargetCodeRegion *TCR,
323
- std::string& elemType) {
319
+ std::list<std::string> &DimString, int &dim,
320
+ TargetCodeRegion *TCR, std::string &elemType) {
324
321
auto OrigT = *t;
325
322
326
- if (!t) {
323
+ if (!t) {
327
324
return ;
328
325
} else {
329
326
// We just remember the last element type
@@ -336,8 +333,8 @@ void TargetCode::handleArrays(const clang::ArrayType **t,
336
333
DimString.push_back (t1->getSize ().toString (10 , false ));
337
334
++dim;
338
335
339
-
340
- } else if ( auto t1 = clang::dyn_cast_or_null<clang::VariableArrayType>(OrigT)) {
336
+ } else if ( auto t1 =
337
+ clang::dyn_cast_or_null<clang::VariableArrayType>(OrigT)) {
341
338
DEBUGP (" ArrayType VAT" );
342
339
std::string PrettyStr = " " ;
343
340
llvm::raw_string_ostream PrettyOS (PrettyStr);
@@ -353,11 +350,10 @@ void TargetCode::handleArrays(const clang::ArrayType **t,
353
350
return ;
354
351
}
355
352
356
-
357
- (*t) = clang::dyn_cast_or_null<clang::ArrayType>( OrigT->getElementType ().getTypePtr ());
358
- if (*t) {
353
+ (*t) = clang::dyn_cast_or_null<clang::ArrayType>(
354
+ OrigT->getElementType ().getTypePtr ());
355
+ if (*t) {
359
356
// Recursively handle all dimensions
360
357
handleArrays (t, DimString, dim, TCR, elemType);
361
358
}
362
-
363
359
}
0 commit comments