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/d/dmd | |
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/d/dmd')
-rw-r--r-- | gcc/d/dmd/MERGE | 2 | ||||
-rw-r--r-- | gcc/d/dmd/declaration.c | 1 | ||||
-rw-r--r-- | gcc/d/dmd/func.c | 2 |
3 files changed, 3 insertions, 2 deletions
diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE index 5e4abe6..230fd12 100644 --- a/gcc/d/dmd/MERGE +++ b/gcc/d/dmd/MERGE @@ -1,4 +1,4 @@ -19b1454b5ca7b1036ea5fde197d91d4a7d05c0a5 +8d4c876c658608e8f6e653803c534a9e15618f57 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/declaration.c b/gcc/d/dmd/declaration.c index 6372e39..835c6ae 100644 --- a/gcc/d/dmd/declaration.c +++ b/gcc/d/dmd/declaration.c @@ -2008,6 +2008,7 @@ bool VarDeclaration::isDataseg() else if (storage_class & (STCstatic | STCextern | STCtls | STCgshared) || parent->isModule() || parent->isTemplateInstance() || parent->isNspace()) { + assert(!isParameter() && !isResult()); isdataseg = 1; // It is in the DataSegment } } diff --git a/gcc/d/dmd/func.c b/gcc/d/dmd/func.c index 4b7c223..afba82a 100644 --- a/gcc/d/dmd/func.c +++ b/gcc/d/dmd/func.c @@ -1437,7 +1437,7 @@ void FuncDeclaration::semantic3(Scope *sc) sc2->sw = NULL; sc2->fes = fes; sc2->linkage = LINKd; - sc2->stc &= ~(STCauto | STCscope | STCstatic | STCabstract | + sc2->stc &= ~(STCauto | STCscope | STCstatic | STCextern | STCabstract | STCdeprecated | STCoverride | STC_TYPECTOR | STCfinal | STCtls | STCgshared | STCref | STCreturn | STCproperty | STCnothrow | STCpure | STCsafe | STCtrusted | STCsystem); |