aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/decl.cc
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2019-04-23 20:08:46 +0000
committerIain Buclaw <ibuclaw@gcc.gnu.org>2019-04-23 20:08:46 +0000
commitc0aebc60b2ac19816f0431241d8f7203e60afb01 (patch)
tree4eec38d1f02e2a59de0dc908c56593c54d0d3960 /gcc/d/decl.cc
parent32efff9f947137bb6f6bf47a846e3bf8a162170a (diff)
downloadgcc-c0aebc60b2ac19816f0431241d8f7203e60afb01.zip
gcc-c0aebc60b2ac19816f0431241d8f7203e60afb01.tar.gz
gcc-c0aebc60b2ac19816f0431241d8f7203e60afb01.tar.bz2
d: Add support for compiling without libphobos library.
Merges upstream dmd 3b3dca8be Reviewed-on: https://github.com/dlang/dmd/pull/9678 gcc/d/ChangeLog: 2019-04-23 Iain Buclaw <ibuclaw@gdcproject.org> * d-builtins.cc (d_init_versions): Add D_BetterC, D_ModuleInfo, D_Exceptions, D_TypeInfo as predefined version conditions. * d-codegen.cc (build_bounds_condition): Generate trap if D asserts are turned off. * d-frontend.cc (getTypeInfoType): Add error when -fno-rtti is set. * d-lang.cc (d_init_options): Initialize new front-end options. (d_handle_option): Handle -fdruntime, -fexceptions, and -frtti. (d_post_options): Turn off D runtime features if -fno-druntime is set. * d-spec.cc (lang_specific_driver): Handle -fdruntime. * d-tree.h (have_typeinfo_p): Add prototype. (build_typeinfo): Update prototype. * decl.cc (DeclVisitor::visit(StructDeclaration)): Create typeinfo only if TypeInfo exists. (DeclVisitor::visit(ClassDeclaration)): Likewise. (DeclVisitor::visit(InterfaceDeclaration)): Likewise. (DeclVisitor::visit(EnumDeclaration)): Likewise. * expr.cc: Update all calls to build_typeinfo. * gdc.texi (Runtime Options): Document -fdruntime and -frtti. * lang.opt: Add -fdruntime and -frtti. * modules.cc (build_module_tree): Create module info only if ModuleInfo exists. * toir.cc (IRVisitor::visit(ThrowStatement)): Update test for -fno-exceptions. * typeinfo.cc (create_tinfo_types): Build internal typeinfo classes only if Object exists. (have_typeinfo_p): New function. (class TypeInfoVisitor): Update all calls to build_typeinfo. (build_typeinfo): Add error when -fno-rtti is set. gcc/testsuite/ChangeLog: 2019-04-23 Iain Buclaw <ibuclaw@gdcproject.org> * gdc.test/fail_compilation/fail2456.d: New test. * gdc.test/fail_compilation/test18312.d: New test. * gdc.test/gdc-test.exp (gdc-convert-args): Handle -betterC. From-SVN: r270518
Diffstat (limited to 'gcc/d/decl.cc')
-rw-r--r--gcc/d/decl.cc17
1 files changed, 12 insertions, 5 deletions
diff --git a/gcc/d/decl.cc b/gcc/d/decl.cc
index 26de272..4972364 100644
--- a/gcc/d/decl.cc
+++ b/gcc/d/decl.cc
@@ -379,7 +379,8 @@ public:
return;
/* Generate TypeInfo. */
- create_typeinfo (d->type, NULL);
+ if (have_typeinfo_p (Type::dtypeinfo))
+ create_typeinfo (d->type, NULL);
/* Generate static initializer. */
d->sinit = aggregate_initializer_decl (d);
@@ -523,7 +524,9 @@ public:
d_finish_decl (d->sinit);
/* Put out the TypeInfo. */
- create_typeinfo (d->type, NULL);
+ if (have_typeinfo_p (Type::dtypeinfo))
+ create_typeinfo (d->type, NULL);
+
DECL_INITIAL (d->csym) = layout_classinfo (d);
d_linkonce_linkage (d->csym);
d_finish_decl (d->csym);
@@ -588,8 +591,11 @@ public:
d->csym = get_classinfo_decl (d);
/* Put out the TypeInfo. */
- create_typeinfo (d->type, NULL);
- d->type->vtinfo->accept (this);
+ if (have_typeinfo_p (Type::dtypeinfo))
+ {
+ create_typeinfo (d->type, NULL);
+ d->type->vtinfo->accept (this);
+ }
DECL_INITIAL (d->csym) = layout_classinfo (d);
d_linkonce_linkage (d->csym);
@@ -622,7 +628,8 @@ public:
return;
/* Generate TypeInfo. */
- create_typeinfo (d->type, NULL);
+ if (have_typeinfo_p (Type::dtypeinfo))
+ create_typeinfo (d->type, NULL);
TypeEnum *tc = (TypeEnum *) d->type;
if (tc->sym->members && !d->type->isZeroInit ())