aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.test
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gcc.gnu.org>2019-03-15 13:37:07 +0000
committerIain Buclaw <ibuclaw@gcc.gnu.org>2019-03-15 13:37:07 +0000
commitd2025512b3fb357768d85ccde8e21f571481d00f (patch)
treea04703639df3705833fbef5bae764e713747decf /gcc/testsuite/gdc.test
parentec15654627d34bf9fb4f7624c7659ac4912bef17 (diff)
downloadgcc-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.d38
-rw-r--r--gcc/testsuite/gdc.test/runnable/test19735.d22
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));
+}
+