forked from OSchip/llvm-project
I made this example after noting that I was unable to display an unsized
static class array. It turns out that gcc 4.2 will emit DWARF that correctly describes the PointType, but it will incorrectly emit debug info for the "g_points" array where the following things are wrong: - the DW_TAG_array_type won't have a subrange info - the DW_TAG_variable for "g_points" won't have a valid byte size, so even though we know the size of PointType, we can't infer the actual size of the array by dividing the size of the variable by the number of elements. We want to make sure clang and llvm-gcc handle this correctly. llvm-svn: 113730
This commit is contained in:
parent
83ff3898f7
commit
ac32b4ddc0
|
@ -0,0 +1,5 @@
|
|||
LEVEL = ../make
|
||||
|
||||
CXX_SOURCES := main.cpp
|
||||
|
||||
include $(LEVEL)/Makefile.rules
|
|
@ -0,0 +1,44 @@
|
|||
//===-- main.cpp ------------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// I made this example after noting that I was unable to display an unsized
|
||||
// static class array. It turns out that gcc 4.2 will emit DWARF that correctly
|
||||
// describes the PointType, but it will incorrectly emit debug info for the
|
||||
// "g_points" array where the following things are wrong:
|
||||
// - the DW_TAG_array_type won't have a subrange info
|
||||
// - the DW_TAG_variable for "g_points" won't have a valid byte size, so even
|
||||
// though we know the size of PointType, we can't infer the actual size
|
||||
// of the array by dividing the size of the variable by the number of
|
||||
// elements.
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct PointType
|
||||
{
|
||||
int x, y;
|
||||
} PointType;
|
||||
|
||||
class A
|
||||
{
|
||||
public:
|
||||
static PointType g_points[];
|
||||
};
|
||||
|
||||
PointType A::g_points[] =
|
||||
{
|
||||
{ 1, 2 },
|
||||
{ 11, 22 }
|
||||
};
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
printf ("A::g_points[2].x = %i\n", A::g_points[2].x);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue