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