r190960 - Debug info: Explicitly set the DIVariable::isIndirect() flag for VLAs.

Eric Christopher echristo at gmail.com
Wed Sep 18 15:18:20 PDT 2013


On Wed, Sep 18, 2013 at 3:08 PM, Adrian Prantl <aprantl at apple.com> wrote:
> Author: adrian
> Date: Wed Sep 18 17:08:57 2013
> New Revision: 190960
>
> URL: http://llvm.org/viewvc/llvm-project?rev=190960&view=rev
> Log:
> Debug info: Explicitly set the DIVariable::isIndirect() flag for VLAs.
> This allows us to get rid of an ugly hack in the backend.
> Paired commit with LLVM.
>
> Modified:
>     cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
>     cfe/trunk/test/CodeGen/debug-info-vla.c
>
> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=190960&r1=190959&r2=190960&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Wed Sep 18 17:08:57 2013
> @@ -2747,6 +2747,8 @@ void CGDebugInfo::EmitDeclare(const VarD
>          DBuilder.insertDeclare(Storage, D, Builder.GetInsertBlock());
>        Call->setDebugLoc(llvm::DebugLoc::get(Line, Column, Scope));
>        return;
> +    } else if (isa<VariableArrayType>(VD->getType())) {
> +      Flags |= llvm::DIDescriptor::FlagIndirectVariable;
>      }

Extra parens.

-eric

>    } else if (const RecordType *RT = dyn_cast<RecordType>(VD->getType())) {
>      // If VD is an anonymous union then Storage represents value for
>
> Modified: cfe/trunk/test/CodeGen/debug-info-vla.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-info-vla.c?rev=190960&r1=190959&r2=190960&view=diff
> ==============================================================================
> --- cfe/trunk/test/CodeGen/debug-info-vla.c (original)
> +++ cfe/trunk/test/CodeGen/debug-info-vla.c Wed Sep 18 17:08:57 2013
> @@ -2,7 +2,7 @@
>
>  void testVLAwithSize(int s)
>  {
> -// CHECK: metadata !{i32 {{.*}}, metadata {{.*}}, metadata !"vla", metadata {{.*}}, i32 [[@LINE+1]], metadata {{.*}}, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [vla] [line [[@LINE+1]]]
> +// CHECK: metadata !{i32 {{.*}}, metadata {{.*}}, metadata !"vla", metadata {{.*}}, i32 [[@LINE+1]], metadata {{.*}}, i32 8192, i32 0} ; [ DW_TAG_auto_variable ] [vla] [line [[@LINE+1]]]
>    int vla[s];
>    int i;
>    for (i = 0; i < s; i++) {
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list