Compiler intrinsic default() function: failing inside function and procedure parameters with: Error: Compilation raised exception internally
## Summary
When compiling code that has default values to function parameters set via the compiler intrinsic **default()** function, the compiler raises an exception internally.
## System Information
- **Operating system:** Linux, AlmaLinux 9.2, x86_64
- **Processor architecture:** x86-64
- **Compiler version:** 3.3.1-13810-g1bcf4a5a8c
- **Device:** Computer
## Steps to reproduce
Given the following source code file named **defaulting.pas**:
```pascal
{$mode objfpc}
{$h+}
{$codepage utf8}
program defaulting;
var
a: integer = 0;
b: integer = default(integer);
function c (d: integer = 0): integer;
begin
result := d;
end;
procedure g (h: integer = 0);
var
i: integer = default(integer);
begin
writeln(h, i);
end;
procedure j (k: integer = default(integer));
var
l: integer = default(integer);
begin
writeln(k, l);
end;
function e (f: integer = default(integer)): integer;
begin
result := f;
end;
function m (n: string = default(string)): string;
var
o: string = '1';
p: string = default(string);
q: string = '';
r: string = '2';
begin
result := n + o + p + q + r;
end;
begin
writeln(a, b, c);
g;
j;
writeln(m);
end.
```
When compiled, the following occurs:
```shell
$ fpc defaulting.pas
Free Pascal Compiler version 3.3.1 [2023/08/24] for x86_64
Copyright (c) 1993-2023 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling defaulting.pas
defaulting.pas(23,27) Error: Compilation raised exception internally
Fatal: Compilation aborted
An unhandled exception occurred at $00000000005541DF:
EAccessViolation: Access violation
$00000000005541DF
```
The code in question the compiler is failing at is:
```pascal
16 procedure g (h: integer = 0);
17 var
18 i: integer = default(integer);
19 begin |
20 writeln(h, i); |
21 end; \|/
22 V
--->23 procedure j (k: integer = default(integer));
24 var
25 l: integer = default(integer);
26 begin
27 writeln(k, l);
28 end;
29
30 function e (f: integer = default(integer)): integer;
31 begin
32 result := f;
```
## Example Project
See steps to reproduce.
## What is the current bug behavior?
See steps to reproduce.
## What is the expected (correct) behavior?
When compiled with the released FPC, the code compiles and runs as expected.
```shell
$ fpc defaulting
Free Pascal Compiler version 3.2.2 [2022/08/17] for x86_64
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling defaulting.pas
Linking defaulting
51 lines compiled, 0.1 sec
$ ./defaulting
000
00
00
12
```
## Relevant logs and/or screenshots
See steps to reproduce.
## Possible fixes
None known.
issue