diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2019-06-16 07:49:06 +0000 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gcc.gnu.org> | 2019-06-16 07:49:06 +0000 |
commit | 88ad43b1f91f7cd2ba9c342c6c1a6da82e6088bf (patch) | |
tree | 57131c9c2449ea596790736ae8ad297416d7e1b9 /gcc/testsuite/gdc.test | |
parent | a1543fb19ba17a455b0e9df5e373a1643082f5d2 (diff) | |
download | gcc-88ad43b1f91f7cd2ba9c342c6c1a6da82e6088bf.zip gcc-88ad43b1f91f7cd2ba9c342c6c1a6da82e6088bf.tar.gz gcc-88ad43b1f91f7cd2ba9c342c6c1a6da82e6088bf.tar.bz2 |
re PR d/90651 (ICE in FuncDeclaration::semantic3, at d/dmd/func.c:1524)
PR d/90651
d/dmd: Merge upstream dmd 0f6cbbcad
Fixes segmentation fault in FuncDeclaration::semantic3.
Reviewed-on: https://github.com/dlang/dmd/pull/10003
gcc/d/ChangeLog:
2019-06-16 Iain Buclaw <ibuclaw@gdcproject.org>
* typeinfo.cc (object_module): New variable.
(make_frontend_typeinfo): Update signature. Set temporary on
generated TypeInfo classes.
(create_tinfo_types): Set object_module. Move generation of front-end
typeinfo into ...
(create_frontend_tinfo_types): ... New function.
(layout_typeinfo): Call create_frontend_tinfo_types.
(layout_classinfo): Likewise.
(layout_cpp_typeinfo): Likewise.
(create_typeinfo): Likewise.
From-SVN: r272345
Diffstat (limited to 'gcc/testsuite/gdc.test')
6 files changed, 80 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.test/fail_compilation/extra-files/minimal/object.d b/gcc/testsuite/gdc.test/fail_compilation/extra-files/minimal/object.d new file mode 100644 index 0000000..c7060b0 --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/extra-files/minimal/object.d @@ -0,0 +1 @@ +module object; diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19911a.d b/gcc/testsuite/gdc.test/fail_compilation/fail19911a.d new file mode 100644 index 0000000..672db30 --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/fail19911a.d @@ -0,0 +1,11 @@ +/* +REQUIRED_ARGS: -betterC +TEST_OUTPUT: +--- +fail_compilation/fail19911a.d(9): Error: function `fail19911a.fun` D-style variadic functions cannot be used with -betterC +--- +*/ + +void fun(...) +{ +} diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19911b.d b/gcc/testsuite/gdc.test/fail_compilation/fail19911b.d new file mode 100644 index 0000000..b4ad22b --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/fail19911b.d @@ -0,0 +1,13 @@ +/* +DFLAGS: +REQUIRED_ARGS: +EXTRA_SOURCES: extra-files/minimal/object.d +TEST_OUTPUT: +--- +fail_compilation/fail19911b.d(10): Error: function `fail19911b.fun` `object.TypeInfo_Tuple` could not be found, but is implicitly used in D-style variadic functions +--- +*/ + +void fun(...) +{ +} diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19911c.d b/gcc/testsuite/gdc.test/fail_compilation/fail19911c.d new file mode 100644 index 0000000..d1e954e --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/fail19911c.d @@ -0,0 +1,17 @@ +/* +DFLAGS: +REQUIRED_ARGS: +TEST_OUTPUT: +--- +fail_compilation/fail19911c.d(15): Error: function `object.fun` `object.TypeInfo` could not be found, but is implicitly used in D-style variadic functions +--- +*/ + +module object; + +class Object { } +class TypeInfo_Tuple { } + +void fun(...) +{ +} diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19922.d b/gcc/testsuite/gdc.test/fail_compilation/fail19922.d new file mode 100644 index 0000000..5c9e2bb --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/fail19922.d @@ -0,0 +1,19 @@ +/* +DFLAGS: +REQUIRED_ARGS: +TEST_OUTPUT: +--- +fail_compilation/fail19922.d(17): Error: `object.TypeInfo_Class` could not be found, but is implicitly used +--- +*/ + +module object; + +class Object {} + +void test() +{ + Object o; + auto ti = typeid(o); +} + diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19923.d b/gcc/testsuite/gdc.test/fail_compilation/fail19923.d new file mode 100644 index 0000000..042cf8a --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/fail19923.d @@ -0,0 +1,19 @@ +/* +DFLAGS: +REQUIRED_ARGS: +TEST_OUTPUT: +--- +fail_compilation/fail19923.d(17): Error: `object.TypeInfo_Class` could not be found, but is implicitly used +--- +*/ + +module object; + +class Object {} + +void test() +{ + Object o; + auto ti = o.classinfo; +} + |