Use of Default in generic record with specialization for itself generates unresolved symbol reference with debug symbols enabled
## Summary
A generic record `TFoo<T>` that contains code that calls Default with a specialization for itself (e.g. `Default(specialize TFoo<T>)`) generates unresolved symbol reference when compiling with debug symbols enabled.
## System Information
<!-- The more information are provided the easier it is to replicate the bug -->
- **Operating system:** Linux
- **Processor architecture:** x86-64
- **Compiler version:** trunk c09e8778bdfc30e9dd669a6ba6d18de952befcaf
- **Device:** Computer
## Steps to reproduce
Try to compile the program below
## Example Project
````pascal
program Test;
{$mode objfpc}{$H+}{$modeswitch advancedrecords}
type
generic TFoo<T> = record
public
// Note: the issue exists even with "procedure ..."
class operator Initialize(var AFoo: specialize TFoo<T>);
end;
class operator TFoo.Initialize(var AFoo: specialize TFoo<T>);
begin
AFoo:=Default(specialize TFoo<T>);
end;
begin
end.
````
Compile with `fpc -g test.pas`.
## What is the current bug behavior?
Trying to compile the code above results with the error ``/usr/bin/ld.bfd: test.o:(.debug_info+0x74): undefined reference to `_$TEST$_Ld1'``.
## What is the expected (correct) behavior?
Compile and link should work properly.
Note that this is a recent regression as FPC trunk from a few of months ago worked fine. FPC 3.2.2 also compiles this code fine when debug symbols are enabled.
issue