Bug creation and email sending has been disabled, file new bugs at gcc.gnu.org/bugzilla
View | Details | Raw Unified | Return to bug 36
Collapse All | Expand All

(-)a/gcc/d/d-glue.cc (-1 / +25 lines)
Lines 2674-2679 FuncDeclaration::toObjFile (int) Link Here
2674
    irs->emitLocalVar (v_arguments_var, true);
2674
    irs->emitLocalVar (v_arguments_var, true);
2675
2675
2676
  fbody->toIR (irs);
2676
  fbody->toIR (irs);
2677
  
2678
  // Find all template instances that are nested in this scope and emit
2679
  Module * module = getModule();
2680
  if (module->members)
2681
    {
2682
      for (size_t i = 0; i < module->members->dim; i++)
2683
        {
2684
          Dsymbol *dsym = (*module->members)[i];
2685
          if(dsym->isTemplateInstance() && dsym->parent == this)
2686
          {
2687
            dsym->toObjFile (false);
2688
          }
2689
        }
2690
    }
2677
2691
2678
  // Process all deferred nested functions.
2692
  // Process all deferred nested functions.
2679
  for (size_t i = 0; i < this_sym->deferredNestedFuncs.dim; ++i)
2693
  for (size_t i = 0; i < this_sym->deferredNestedFuncs.dim; ++i)
Lines 2820-2826 Module::genobjfile (int multiobj) Link Here
2820
      for (size_t i = 0; i < members->dim; i++)
2834
      for (size_t i = 0; i < members->dim; i++)
2821
	{
2835
	{
2822
	  Dsymbol *dsym = (*members)[i];
2836
	  Dsymbol *dsym = (*members)[i];
2823
	  dsym->toObjFile (multiobj);
2837
	  //TemplateInstances in functions are emitted from that function
2838
	  if(!dsym->isTemplateInstance() || !dsym->parent || !dsym->parent->isFuncDeclaration())
2839
	    dsym->toObjFile (multiobj);
2840
	}
2841
2842
      //It's possible that we didn't catch all TemplateInstances in functions
2843
      for (size_t i = 0; i < members->dim; i++)
2844
	{
2845
	  Dsymbol *dsym = (*members)[i];
2846
	  if(dsym->isTemplateInstance() && dsym->parent && dsym->parent->isFuncDeclaration())
2847
	    dsym->toObjFile (multiobj);
2824
	}
2848
	}
2825
    }
2849
    }
2826
2850

Return to bug 36