That does turn ArgType into a PointerType int*. However, line 301 (GenerateOpenMPCapturedStmtFunction) attempts to cast it to a reference type a bit later, resulting in a SIGABRT there. Do I need to re-add the reference there? Is removing the array type REALLY what we wish to do?
-----Original Message----- From: Alexey Bataev [mailto:a.bat...@hotmail.com] Sent: Monday, October 10, 2016 10:09 AM To: Keane, Erich <erich.ke...@intel.com>; reviews+d25373+public+d8ec2a4bb41b1...@reviews.llvm.org; cfe-commits@lists.llvm.org; dblai...@gmail.com; david.majne...@gmail.com; guy.ben...@intel.com Subject: Re: [PATCH] D25373: Fix for Bug 30639: CGDebugInfo Null dereference with OpenMP array access Aaaahhh, Now I see. We have a parameter with the type that is a reference to VLA. I think in this case we should rework this code to something like this: if (ArgType->isVariablyModifiedType()) ArgType = getContext().getCanonicalParamType(ArgType.getNonReferenceType()); Try this solution. Best regards, Alexey Bataev On 10/10/2016 07:51 PM, Keane, Erich wrote: > I did. I changed line 236 to "ArgType = > getContext().getCanonicalParamType(ArgType);" (as I believe you were > suggesting), and the output was identical when doing dump on ArgType: > > This: > > LValueReferenceType 0xa451620 'int (&)[*]' variably_modified > `-VariableArrayType 0xa4515e0 'int [*]' variably_modified * > |-BuiltinType 0xa3f4090 'int' > `-<<<NULL>>> > Vs: > LValueReferenceType 0xa451690 'int (&)[*]' variably_modified > `-VariableArrayType 0xa451650 'int [*]' variably_modified * > |-BuiltinType 0xa3f4090 'int' > `-<<<NULL>>> > > -----Original Message----- > From: Alexey Bataev [mailto:a.bat...@hotmail.com] > Sent: Monday, October 10, 2016 9:47 AM > To: reviews+d25373+public+d8ec2a4bb41b1...@reviews.llvm.org; Keane, Erich > <erich.ke...@intel.com>; cfe-commits@lists.llvm.org; dblai...@gmail.com; > david.majne...@gmail.com; guy.ben...@intel.com > Subject: Re: [PATCH] D25373: Fix for Bug 30639: CGDebugInfo Null dereference > with OpenMP array access > > Hmm, > > I thought it must return a pointer to the element type rather than [*] kind > type. Did you checked it? > > Best regards, > Alexey Bataev > > On 10/10/2016 07:09 PM, Erich Keane wrote: >> erichkeane added a comment. >> >> Andrey- >> It seems that getVariableArrayDecayedType and getCanonicalParamType return >> the same type in this case (at least in the reproduction). I could >> definitely change the call, though the changes to CGDebugInfo.cpp are >> apparently also necessary even in that case. >> >> Is there additional logic that should happen in CGStmtOpenMP that I'm >> missing? >> >> >> Repository: >> rL LLVM >> >> https://reviews.llvm.org/D25373 >> >> >> _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits