public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-10080] PR modula2/114811 string set incl ICE bugfix
@ 2024-04-22 19:34 Gaius Mulley
  0 siblings, 0 replies; only message in thread
From: Gaius Mulley @ 2024-04-22 19:34 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:b909daa5b67317e46543a7b2ed76e82298645cf6

commit r14-10080-gb909daa5b67317e46543a7b2ed76e82298645cf6
Author: Gaius Mulley <gaiusmod2@gmail.com>
Date:   Mon Apr 22 20:34:11 2024 +0100

    PR modula2/114811 string set incl ICE bugfix
    
    This patch corrects gm2-torture.exp to recognize an ICE
    in the fail case as a negative result.  The patch also fixes
    FoldBinarySet so that the types are only checked once the operands
    have been resolved.  Without this patch
    gcc/testsuite/gm2/iso/fail/badexpression2.mod would cause an ICE.
    
    gcc/m2/ChangeLog:
    
            PR modula2/114811
            * gm2-compiler/M2GenGCC.mod (FoldBinarySet): Add condition
            checking to ensure op2 and op3 are fully resolved before
            type checking is performed.
    
    gcc/testsuite/ChangeLog:
    
            PR modula2/114811
            * lib/gm2-torture.exp: Correct regexp checking for internal
            compiler error strings in compiler output.
    
    Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>

Diff:
---
 gcc/m2/gm2-compiler/M2GenGCC.mod  | 43 +++++++++++++++++++++------------------
 gcc/testsuite/lib/gm2-torture.exp |  7 ++++---
 2 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/gcc/m2/gm2-compiler/M2GenGCC.mod b/gcc/m2/gm2-compiler/M2GenGCC.mod
index da52c924974..26ed399b24c 100644
--- a/gcc/m2/gm2-compiler/M2GenGCC.mod
+++ b/gcc/m2/gm2-compiler/M2GenGCC.mod
@@ -5000,29 +5000,32 @@ BEGIN
    TryDeclareConstant(tokenno, op3) ;
    location := TokenToLocation(tokenno) ;
 
-   IF CheckBinaryExpressionTypes (quad, p)
+   IF GccKnowsAbout(op2) AND GccKnowsAbout(op3)
    THEN
-      IF IsConst(op2) AND IsConstSet(op2) AND
-         IsConst(op3) AND IsConstSet(op3) AND
-         IsConst(op1)
+      IF CheckBinaryExpressionTypes (quad, p)
       THEN
-         IF IsValueSolved(op2) AND IsValueSolved(op3)
+         IF IsConst(op2) AND IsConstSet(op2) AND
+            IsConst(op3) AND IsConstSet(op3) AND
+            IsConst(op1)
          THEN
-            Assert(MixTypes(FindType(op3), FindType(op2), tokenno)#NulSym) ;
-            PutConst(op1, MixTypes(FindType(op3), FindType(op2), tokenno)) ;
-            PushValue(op2) ;
-            PushValue(op3) ;
-            op(tokenno) ;
-            PopValue(op1) ;
-            PushValue(op1) ;
-            PutConstSet(op1) ;
-            AddModGcc(op1,
-                      DeclareKnownConstant(location,
-                                           Mod2Gcc(GetType(op3)),
-                                           PopSetTree(tokenno))) ;
-            p(op1) ;
-            NoChange := FALSE ;
-            SubQuad(quad)
+            IF IsValueSolved(op2) AND IsValueSolved(op3)
+            THEN
+               Assert(MixTypes(FindType(op3), FindType(op2), tokenno)#NulSym) ;
+               PutConst(op1, MixTypes(FindType(op3), FindType(op2), tokenno)) ;
+               PushValue(op2) ;
+               PushValue(op3) ;
+               op(tokenno) ;
+               PopValue(op1) ;
+               PushValue(op1) ;
+               PutConstSet(op1) ;
+               AddModGcc(op1,
+                         DeclareKnownConstant(location,
+                                              Mod2Gcc(GetType(op3)),
+                                              PopSetTree(tokenno))) ;
+               p(op1) ;
+               NoChange := FALSE ;
+               SubQuad(quad)
+            END
          END
       END
    END
diff --git a/gcc/testsuite/lib/gm2-torture.exp b/gcc/testsuite/lib/gm2-torture.exp
index 090929954ca..c29b0b4d1a0 100644
--- a/gcc/testsuite/lib/gm2-torture.exp
+++ b/gcc/testsuite/lib/gm2-torture.exp
@@ -138,7 +138,7 @@ proc gm2-torture-compile { src option } {
 
 proc gm2_check_compile_fail {testcase option objname gcc_output} {
     global tool;
-    set fatal_signal "*cc: Internal compiler error: program*got fatal signal"
+    set fatal_signal "*nternal compiler error: program*got fatal signal"
 
     if [string match "$fatal_signal 6" $gcc_output] then {
 	${tool}_fail $testcase "Got Signal 6, $option"
@@ -170,8 +170,9 @@ proc gm2_check_compile_fail {testcase option objname gcc_output} {
     regsub -all -- "\[\r\n\]*" $gcc_output "" gcc_output
 
     # check for any internal error
-    if { [string match "internal error" $gcc_output] ||
-	 [string match "internal compiler error" $gcc_output] } then {
+    if { [string match "*internal error*" $gcc_output] ||
+	 [string match "*internal compiler error*" $gcc_output] } then {
+	puts stderr "ICE: "
 	${tool}_fail $testcase $option
 	return 0
     }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-04-22 19:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-22 19:34 [gcc r14-10080] PR modula2/114811 string set incl ICE bugfix Gaius Mulley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).