diff mbox series

[committed] d: Merge upstream dmd 90450f3ef.

Message ID 20200625154102.2308106-1-ibuclaw@gdcproject.org
State New
Headers show
Series [committed] d: Merge upstream dmd 90450f3ef. | expand

Commit Message

Iain Buclaw June 25, 2020, 3:41 p.m. UTC
Hi,

This patch merges the D front-end implementation with upstream dmd
90450f3ef.  Fixes a regression caused by an incomplete backport of
converting the Expression semantic pass to a Visitor.

Bootstrapped and regression tested on x86_64-linux-gnu, and committed to
mainline.

Regards
Iain.

---
gcc/d/ChangeLog:

	PR d/95250
	* dmd/MERGE: Merge upstream dmd 90450f3ef.

gcc/testsuite/ChangeLog:

	PR d/95250
	* gdc.dg/pr95250.d: New test.
---
 gcc/d/dmd/MERGE                |  2 +-
 gcc/d/dmd/expressionsem.c      |  1 +
 gcc/testsuite/gdc.dg/pr95250.d | 18 ++++++++++++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gdc.dg/pr95250.d

Comments

Iain Buclaw June 26, 2020, 1:55 p.m. UTC | #1
Hi,

This patch has been backported, bootstrapped and regression tested on the
releases/gcc-9 and releases/gcc-10 branches.

Regards
Iain.

On 25/06/2020 17:41, Iain Buclaw wrote:
> Hi,
> 
> This patch merges the D front-end implementation with upstream dmd
> 90450f3ef.  Fixes a regression caused by an incomplete backport of
> converting the Expression semantic pass to a Visitor.
> 
> Bootstrapped and regression tested on x86_64-linux-gnu, and committed to
> mainline.
> 
> Regards
> Iain.
> 
> ---
> gcc/d/ChangeLog:
> 
> 	PR d/95250
> 	* dmd/MERGE: Merge upstream dmd 90450f3ef.
> 
> gcc/testsuite/ChangeLog:
> 
> 	PR d/95250
> 	* gdc.dg/pr95250.d: New test.
> ---
>  gcc/d/dmd/MERGE                |  2 +-
>  gcc/d/dmd/expressionsem.c      |  1 +
>  gcc/testsuite/gdc.dg/pr95250.d | 18 ++++++++++++++++++
>  3 files changed, 20 insertions(+), 1 deletion(-)
>  create mode 100644 gcc/testsuite/gdc.dg/pr95250.d
> 
> diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE
> index 0e48f42a0e2..0d50149a750 100644
> --- a/gcc/d/dmd/MERGE
> +++ b/gcc/d/dmd/MERGE
> @@ -1,4 +1,4 @@
> -5fc1806cd7dd281e944022df2e11ef6b04ee4339
> +90450f3ef6ab8551b5f383d8c6190f80034dbf93
>  
>  The first line of this file holds the git revision number of the last
>  merge done from the dlang/dmd repository.
> diff --git a/gcc/d/dmd/expressionsem.c b/gcc/d/dmd/expressionsem.c
> index e3a5cb36a82..ac6b5bc81f3 100644
> --- a/gcc/d/dmd/expressionsem.c
> +++ b/gcc/d/dmd/expressionsem.c
> @@ -6883,6 +6883,7 @@ public:
>          if (Expression *ex = binSemanticProp(exp, sc))
>          {
>              result = ex;
> +            return;
>          }
>          Expression *e = exp->op_overload(sc);
>          if (e)
> diff --git a/gcc/testsuite/gdc.dg/pr95250.d b/gcc/testsuite/gdc.dg/pr95250.d
> new file mode 100644
> index 00000000000..c8810c41968
> --- /dev/null
> +++ b/gcc/testsuite/gdc.dg/pr95250.d
> @@ -0,0 +1,18 @@
> +// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95250
> +// { dg-do compile }
> +
> +template Unsigned(T)
> +{
> +    static assert(false, "Type " ~ T.stringof ~
> +                  " does not have an Unsigned counterpart");
> +}
> +
> +
> +void* f95250(T)(T a, T b)
> +{
> +        alias UnsignedVoid = Unsigned!(T);
> +        return cast(T)(cast(T)(cast(UnsignedVoid)(a-b) / 2));
> +}
> +
> +static assert(is(typeof(f!(void*)(null, null)) == void*));
> +// { dg-error "static assert  \(.*\) is false" "" { target *-*-* } .-1 }
>
diff mbox series

Patch

diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE
index 0e48f42a0e2..0d50149a750 100644
--- a/gcc/d/dmd/MERGE
+++ b/gcc/d/dmd/MERGE
@@ -1,4 +1,4 @@ 
-5fc1806cd7dd281e944022df2e11ef6b04ee4339
+90450f3ef6ab8551b5f383d8c6190f80034dbf93
 
 The first line of this file holds the git revision number of the last
 merge done from the dlang/dmd repository.
diff --git a/gcc/d/dmd/expressionsem.c b/gcc/d/dmd/expressionsem.c
index e3a5cb36a82..ac6b5bc81f3 100644
--- a/gcc/d/dmd/expressionsem.c
+++ b/gcc/d/dmd/expressionsem.c
@@ -6883,6 +6883,7 @@  public:
         if (Expression *ex = binSemanticProp(exp, sc))
         {
             result = ex;
+            return;
         }
         Expression *e = exp->op_overload(sc);
         if (e)
diff --git a/gcc/testsuite/gdc.dg/pr95250.d b/gcc/testsuite/gdc.dg/pr95250.d
new file mode 100644
index 00000000000..c8810c41968
--- /dev/null
+++ b/gcc/testsuite/gdc.dg/pr95250.d
@@ -0,0 +1,18 @@ 
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95250
+// { dg-do compile }
+
+template Unsigned(T)
+{
+    static assert(false, "Type " ~ T.stringof ~
+                  " does not have an Unsigned counterpart");
+}
+
+
+void* f95250(T)(T a, T b)
+{
+        alias UnsignedVoid = Unsigned!(T);
+        return cast(T)(cast(T)(cast(UnsignedVoid)(a-b) / 2));
+}
+
+static assert(is(typeof(f!(void*)(null, null)) == void*));
+// { dg-error "static assert  \(.*\) is false" "" { target *-*-* } .-1 }