@@ -77,7 +77,7 @@ void TargetCode::generateCode(llvm::raw_ostream &Out) {
77
77
if (TCR) {
78
78
generateFunctionPrologue (TCR, Out);
79
79
}
80
-
80
+
81
81
Out << Frag->PrintPretty ();
82
82
83
83
if (TCR) {
@@ -116,13 +116,11 @@ void TargetCode::generateFunctionPrologue(TargetCodeRegion *TCR,
116
116
DEBUGP (" Generating code for array type" );
117
117
int dim = 0 ;
118
118
119
- auto *type_for_dim = t ;
120
- handleArrays (&type_for_dim , DimString, dim, TCR, elemType);
119
+ std::vector< int > VariableDimensions ;
120
+ handleArrays (&t , DimString, dim, VariableDimensions , TCR, elemType);
121
121
122
- if (llvm::dyn_cast<clang::VariableArrayType>(t)) {
123
- for (int d = 0 ; d < dim; ++d) {
124
- Out << " unsigned long long __sotoc_vla_dim" << d << " _" << (*i)->getDeclName ().getAsString () << " , " ;
125
- }
122
+ for (int d : VariableDimensions) {
123
+ Out << " unsigned long long __sotoc_vla_dim" << d << " _" << (*i)->getDeclName ().getAsString () << " , " ;
126
124
}
127
125
128
126
// set type to void* to avoid warnings from the compiler
@@ -260,7 +258,9 @@ std::string TargetCode::generateFunctionName(TargetCodeRegion *TCR) {
260
258
261
259
void TargetCode::handleArrays (const clang::ArrayType **t,
262
260
std::list<std::string> &DimString, int &dim,
263
- TargetCodeRegion *TCR, std::string &elemType) {
261
+ std::vector<int > &VariableDims,
262
+ TargetCodeRegion *TCR,
263
+ std::string &elemType) {
264
264
auto OrigT = *t;
265
265
266
266
if (!t) {
@@ -284,6 +284,7 @@ void TargetCode::handleArrays(const clang::ArrayType **t,
284
284
clang::PrintingPolicy PP (TCR->GetLangOpts ());
285
285
t1->getSizeExpr ()->printPretty (PrettyOS, NULL , PP);
286
286
DimString.push_back (PrettyOS.str ());
287
+ VariableDims.push_back (dim);
287
288
++dim;
288
289
289
290
} else {
@@ -297,6 +298,6 @@ void TargetCode::handleArrays(const clang::ArrayType **t,
297
298
OrigT->getElementType ().getTypePtr ());
298
299
if (*t) {
299
300
// Recursively handle all dimensions
300
- handleArrays (t, DimString, dim, TCR, elemType);
301
+ handleArrays (t, DimString, dim, VariableDims, TCR, elemType);
301
302
}
302
303
}
0 commit comments