aboutsummaryrefslogtreecommitdiff
path: root/gcc/d
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gcc.gnu.org>2019-06-16 07:48:42 +0000
committerIain Buclaw <ibuclaw@gcc.gnu.org>2019-06-16 07:48:42 +0000
commit70106db92654b83cd0ea62a078805e84ef2d8ee8 (patch)
tree2e03c2d660192915711756cca92458e004d5c1ee /gcc/d
parente7c6715ec82458cf0b9a362bf9b068d0574607f9 (diff)
downloadgcc-70106db92654b83cd0ea62a078805e84ef2d8ee8.zip
gcc-70106db92654b83cd0ea62a078805e84ef2d8ee8.tar.gz
gcc-70106db92654b83cd0ea62a078805e84ef2d8ee8.tar.bz2
re PR d/90604 (ICE in sizemask, at d/dmd/mtype.c:2542)
PR d/90604 d/dmd: Merge upstream dmd f30c5dc79 Fixes internal compiler error in Type::sizemask. Reviewed-on: https://github.com/dlang/dmd/pull/9998 From-SVN: r272343
Diffstat (limited to 'gcc/d')
-rw-r--r--gcc/d/dmd/MERGE2
-rw-r--r--gcc/d/dmd/intrange.c6
2 files changed, 4 insertions, 4 deletions
diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE
index 7456d60..4cb2bba 100644
--- a/gcc/d/dmd/MERGE
+++ b/gcc/d/dmd/MERGE
@@ -1,4 +1,4 @@
-420cce2a654f14b8de4a75cbb5d4203fce8d4e0f
+f30c5dc790c17914463879157447acc671518735
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/intrange.c b/gcc/d/dmd/intrange.c
index 940385c..e0e2472 100644
--- a/gcc/d/dmd/intrange.c
+++ b/gcc/d/dmd/intrange.c
@@ -278,7 +278,7 @@ IntRange IntRange::fromType(Type *type)
IntRange IntRange::fromType(Type *type, bool isUnsigned)
{
- if (!type->isintegral())
+ if (!type->isintegral() || type->toBasetype()->ty == Tvector)
return widest();
uinteger_t mask = type->sizemask();
@@ -404,7 +404,7 @@ IntRange& IntRange::castDchar()
IntRange& IntRange::cast(Type *type)
{
- if (!type->isintegral())
+ if (!type->isintegral() || type->toBasetype()->ty == Tvector)
return *this;
else if (!type->isunsigned())
return castSigned(type->sizemask());
@@ -416,7 +416,7 @@ IntRange& IntRange::cast(Type *type)
IntRange& IntRange::castUnsigned(Type *type)
{
- if (!type->isintegral())
+ if (!type->isintegral() || type->toBasetype()->ty == Tvector)
return castUnsigned(UINT64_MAX);
else if (type->toBasetype()->ty == Tdchar)
return castDchar();