diff options
Diffstat (limited to 'gcc/testsuite/gdc.dg/torture/pr117002.d')
-rw-r--r-- | gcc/testsuite/gdc.dg/torture/pr117002.d | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.dg/torture/pr117002.d b/gcc/testsuite/gdc.dg/torture/pr117002.d new file mode 100644 index 0000000..5b8c19e --- /dev/null +++ b/gcc/testsuite/gdc.dg/torture/pr117002.d @@ -0,0 +1,28 @@ +// { dg-do compile } +// { dg-additional-options "-Warray-bounds" } +extern(C++) class C117002 +{ + ubyte[4] not_multiple_of_8; +} + +int pr117002a(void *p) +{ + auto init = __traits(initSymbol, C117002); + if (init.ptr + init.length <= p) + return 1; + return 0; +} + +void pr117002b(void *p) +{ + auto init = __traits(initSymbol, C117002); + p[0 .. init.length] = init[]; +} + +void pr117002c() +{ + scope var = new C117002; + void *p = cast(void*)var; + auto init = __traits(initSymbol, C117002); + p[0 .. __traits(classInstanceSize, C117002)] = init[]; +} |