From: Eric Botcazou Date: Wed, 5 Apr 2023 21:53:18 +0000 (+0200) Subject: ada: Fix small fallout of previous change X-Git-Tag: basepoints/gcc-15~8799 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6fe8909606f79db1fb2107336544b058eaeb6381;p=thirdparty%2Fgcc.git ada: Fix small fallout of previous change It may lead to an infinite recursion if no interpretation exists. gcc/ada/ * sem_res.adb (Try_User_Defined_Literal): Restrict previous change to non-leaf nodes. --- diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index 17b74ea65d54..1d4b9acb8ea2 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -13333,15 +13333,17 @@ package body Sem_Res is -- Both operands must have the same type as the context -- (ignoring for now fixed-point and exponentiation ops). - if Covers (Typ, Etype (Right_Opnd (N))) - or else Has_Applicable_User_Defined_Literal (Right_Opnd (N), Typ) + if Has_Applicable_User_Defined_Literal (Right_Opnd (N), Typ) + or else (Nkind (Left_Opnd (N)) in N_Op + and then Covers (Typ, Etype (Right_Opnd (N)))) then Resolve (Left_Opnd (N), Typ); Analyze_And_Resolve (N, Typ); return True; - elsif Covers (Typ, Etype (Left_Opnd (N))) - or else Has_Applicable_User_Defined_Literal (Left_Opnd (N), Typ) + elsif Has_Applicable_User_Defined_Literal (Left_Opnd (N), Typ) + or else (Nkind (Right_Opnd (N)) in N_Op + and then Covers (Typ, Etype (Left_Opnd (N)))) then Resolve (Right_Opnd (N), Typ); Analyze_And_Resolve (N, Typ);