[LLVMbugs] [Bug 12448] New: Tags for variable length array not getting generated in the Assembly file.

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Apr 3 06:16:51 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=12448

             Bug #: 12448
           Summary: Tags for variable length array not getting generated
                    in the Assembly file.
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: LLVM Codegen
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: mayurthebond at gmail.com
                CC: jyoti.yalamanchili at gmail.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified


// PR debug/42800

// { dg-options "-gdwarf-2 -dA" }

// { dg-final { scan-assembler "DW_AT_upper_bound" } }

int
f (int i)
{

  char a[i];
 return a[0];
}


Compiler options used for compiling: -gdwarf-2 -dA -S

This TC verifies generation of DW_AT_upper_bound for the VLA 'a' in the
resulting assembler .
The assember file does not contain DW_TAG_array_type and DW_TAG_subrange type.

Please confirm if this is due to a missing implementation.This seems to be a
bug. Is there a patch available for this already ?


On further analysis it was found that there is a failure condition for creation
of DwarfDebug::constructVariableDIE for VLA 'a'
which is because DwarfDebug::  DenseMap<LexicalScope *, SmallVector<DbgVariable
*, 8> > ScopeVariables;
is empty and not 1.

On further analysis it was found out that 
the loop in the function collectVariableInfoFromMMITable(MF, Processed) is not
getting executed for the variable array 'a' 
It gets executed for all other variables. the conditions of loop are:
for (MachineModuleInfo::VariableDbgInfoMapTy::iterator VI = VMap.begin(),
         VE = VMap.end(); VI != VE; ++VI)

and the VMap is formed as:         
MachineModuleInfo::VariableDbgInfoMapTy &VMap = MMI->getVariableDbgInfo();


Note : 
DW_AT_array-type and DW_subrange type are generated when there are more than
one VLAs. These tags get generated for all VLAs except one 

VLA.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list