Could you explain how/why there's a null size expr? I would've thought it must have /some/ size for code generation purposes...
On Fri, Oct 7, 2016 at 11:33 AM Erich Keane <erich.ke...@intel.com> wrote: > erichkeane created this revision. > erichkeane added reviewers: cfe-commits, dblaikie, majnemer, gbenyei. > erichkeane set the repository for this revision to rL LLVM. > > OpenMP creates a variable array type with a a null size-expr. The Debug > generation failed to properly consider this case. This patch adds a null > check to prevent a null dereference seg-fault in this case, plus adds a > test. > > > Repository: > rL LLVM > > https://reviews.llvm.org/D25373 > > Files: > lib/CodeGen/CGDebugInfo.cpp > test/CodeGenCXX/debug-info-openmp-array.cpp > > > Index: lib/CodeGen/CGDebugInfo.cpp > =================================================================== > --- lib/CodeGen/CGDebugInfo.cpp > +++ lib/CodeGen/CGDebugInfo.cpp > @@ -2181,7 +2181,8 @@ > Count = CAT->getSize().getZExtValue(); > else if (const auto *VAT = dyn_cast<VariableArrayType>(Ty)) { > llvm::APSInt V; > - if (VAT->getSizeExpr()->EvaluateAsInt(V, CGM.getContext())) > + if (VAT->getSizeExpr() && > + VAT->getSizeExpr()->EvaluateAsInt(V, CGM.getContext())) > Count = V.getExtValue(); > } > > Index: test/CodeGenCXX/debug-info-openmp-array.cpp > =================================================================== > --- test/CodeGenCXX/debug-info-openmp-array.cpp > +++ test/CodeGenCXX/debug-info-openmp-array.cpp > @@ -0,0 +1,17 @@ > +// RUN: %clang -target x86_64-unknown-unknown -fverbose-asm -fopenmp -g > -O0 -S -emit-llvm %s -o - | FileCheck %s > + > + > +void f(int m) { > + int i; > + int cen[m]; > +#pragma omp parallel for > + for (i = 0; i < m; ++i) { > + cen[i] = i; > + } > +} > + > +// CHECK: !DICompositeType(tag: DW_TAG_array_type, > +// CHECK-NOT: size: > +// CHECK-SAME: align: 32 > +// CHECK-SAME: elements: > [[ELEM_TYPE:![0-9]+]] > +// CHECK: !DISubrange(count: -1) > > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits