diff options
author | Iain Buclaw <ibuclaw@gcc.gnu.org> | 2019-03-15 13:37:07 +0000 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gcc.gnu.org> | 2019-03-15 13:37:07 +0000 |
commit | d2025512b3fb357768d85ccde8e21f571481d00f (patch) | |
tree | a04703639df3705833fbef5bae764e713747decf /gcc/testsuite/gdc.test | |
parent | ec15654627d34bf9fb4f7624c7659ac4912bef17 (diff) | |
download | gcc-d2025512b3fb357768d85ccde8e21f571481d00f.zip gcc-d2025512b3fb357768d85ccde8e21f571481d00f.tar.gz gcc-d2025512b3fb357768d85ccde8e21f571481d00f.tar.bz2 |
re PR d/88990 (ICE in get_symbol_decl, at d/decl.cc:1097)
PR d/88990
d/dmd: Merge upstream dmd 8d4c876c6
The extern storage class flag was wrongly propagated to function scope
when starting the semantic pass on the body.
Fixes https://gcc.gnu.org/PR88990
Reviewed-on: https://github.com/dlang/dmd/pull/9452
From-SVN: r269708
Diffstat (limited to 'gcc/testsuite/gdc.test')
-rw-r--r-- | gcc/testsuite/gdc.test/runnable/test19734.d | 38 | ||||
-rw-r--r-- | gcc/testsuite/gdc.test/runnable/test19735.d | 22 |
2 files changed, 60 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.test/runnable/test19734.d b/gcc/testsuite/gdc.test/runnable/test19734.d new file mode 100644 index 0000000..efa7da3 --- /dev/null +++ b/gcc/testsuite/gdc.test/runnable/test19734.d @@ -0,0 +1,38 @@ +// https://issues.dlang.org/show_bug.cgi?id=19734 +// REQUIRED_ARGS: -main + +class C19734 +{ + import core.stdc.stdarg; + + extern + { + // Invalid 'this' parameter because of applied 'extern' storage class. + void testin(typeof(this) p) + in { assert(this is p); } + body + { + } + + // Undefined reference to __result. + int testout() + out { assert(__result == 2); } + body + { + return 2; + } + + // Undefined reference to var. + int testlocal() + { + int var; + return var + 2; + } + + // Variable _argptr cannot have initializer. + int testvarargs(...) + { + return 0; + } + } +} diff --git a/gcc/testsuite/gdc.test/runnable/test19735.d b/gcc/testsuite/gdc.test/runnable/test19735.d new file mode 100644 index 0000000..8a1a5e7 --- /dev/null +++ b/gcc/testsuite/gdc.test/runnable/test19735.d @@ -0,0 +1,22 @@ +// https://issues.dlang.org/show_bug.cgi?id=19735 + +extern int test1(int par) +{ + int var = 42; + return var + par; +} + +extern +{ + int test2(int par) + { + int var = 42; + return var + par; + } +} + +void main() +{ + assert(test1(1) == test2(1)); +} + |