I have a fix for this in progress, though I've been delayed by a number
of real-life issues that have cropped up.

I did have this patch I'd been playing with to submit for 15.1 but I'd
run out of time to submit for at least give a 'sorry' message instead,
because I note that the only places these trees can exist are on the
'function_specific_{optimization,target}' members:


commit a7732d9a119f8d8b442b57c25ad8e493a89e5095 (pr108080_sorry)
Author: Nathaniel Shead <[email protected]>
Date:   Thu Jan 16 22:49:10 2025 +1100

    Say 'sorry' for unimplemented features

diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index 61116fe7669..c96fb2cdd41 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -6366,8 +6366,16 @@ trees_out::core_vals (tree t)
         }

       WT (t->function_decl.personality);
-      WT (t->function_decl.function_specific_target);
-      WT (t->function_decl.function_specific_optimization);
+      //WT (t->function_decl.function_specific_target);
+      if (streaming_p () && t->function_decl.function_specific_target)
+        sorry_at (DECL_SOURCE_LOCATION (t),
+                  "%<target%> attribute not supported in modules");
+      WT (NULL_TREE);
+      //WT (t->function_decl.function_specific_optimization);
+      if (streaming_p () && t->function_decl.function_specific_optimization)
+        sorry_at (DECL_SOURCE_LOCATION (t),
+                  "%<optimize%> attribute not supported in modules");
+      WT (NULL_TREE);
       WT (t->function_decl.vindex);

       if (DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P (t))
diff --git a/gcc/testsuite/g++.dg/modules/pr108080.H 
b/gcc/testsuite/g++.dg/modules/pr108080.H
new file mode 100644
index 00000000000..7f765126b20
--- /dev/null
+++ b/gcc/testsuite/g++.dg/modules/pr108080.H
@@ -0,0 +1,5 @@
+// PR c++/108080
+// { dg-additional-options "-fmodules" }
+// Give a diagnostic message rather than a crash for unsupported features.
+
+[[gnu::optimize("-O3")]] void foo();  // { dg-message "sorry, unimplemented: 
.optimize." }

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1945364

Title:
  C++-20 module: internal compiler error

To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc/+bug/1945364/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to