GCC GSoC 2022: Call for project ideas and mentors

2022-01-06 Thread Martin Jambor
Hello,

another year is upon us and Google has announced there will be again
Google Summer of Code 2022 (though AFAIK there is no specific timeline
yet).  I'd like to volunteer to be the main Org Admin for GCC again so
let me know if you think I shouldn't or that someone else should, but
otherwise I'll assume that I will.

There will be a few important changes to the GSoC this year.  The most
important for us is that there will be two project sizes: medium-sized
projects which are expected to take about 175 hours to complete and
large projects expected to take approximately 350 hours (the size from
2020 and earlier).  I expect that most of our projects will be large but
I think we can offer one or two medium-sized ideas too.

Google will also increase timing flexibility, so the projects can run
for longer (up to 22 weeks) allowing mentors to go on vacation and
students to pause and focus on exams.  Talking about students, Google is
going to open the program to all adults, so from now on, the
participants working on the projects will be called GSoC contributors.

Slightly more information about these changes can be found at
https://opensource.googleblog.com/2021/11/expanding-google-summer-of-code-in-2022.html
I am sure we will learn more when the actual timeline is announced too.

 The most important bit: 

Even before that happens, I would like to ask all (moderately) seasoned
GCC contributors to consider mentoring a student this year and ideally
also come up with a project that they would like to lead.  I'm
collecting proposal on our wiki page
https://gcc.gnu.org/wiki/SummerOfCode - feel free to add yours to the
top list there.  Or, if you are unsure, post your offer and project idea
as a reply here to the mailing list.

=

Eventually, each listed project idea should have a) a project
title/description, b) more detailed description of the project (2-5
sentences), c) expected outcomes, d) skills required/preferred, e)
project size and difficulty and f) expected mentors.

Project ideas that come without an offer to also mentor them are always
fun to discuss, by all means feel free to reply to this email with yours
and I will attempt to find a mentor, but please be aware that we can
only use the suggestion it if we actually find one.

Everybody in the GCC community is invited to go over
https://gcc.gnu.org/wiki/SummerOfCode and remove any outdated or
otherwise bad project suggestions and help improve viable ones.

Finally, please continue helping (prospective) students figure stuff out
about GCC like you always do.  So far I think all of them enjoyed
working with us, even if many sometimes struggled with GCC's complexity.

I will update you as more details about GSoC 2022 become available.

Thank you, let's hope we attract some new talent again this year.

Martin



Re: [PATCH] Fortran: Fix ICE in argument_rank_mismatch [PR103287]

2022-01-06 Thread Harald Anlauf via Fortran

Am 05.01.22 um 22:34 schrieb Sandra Loosemore:
One of my previous TS29113-related patches from last fall introduced an 
ICE due to a bogus assertion.  This is the fix Steve suggested in the 
issue, bundled with the test cases, regression-tested, etc.  OK to check 
in?


OK.


-Sandra


Thanks,
Harald



Re: [PATCH] PR fortran/103777 - ICE in gfc_simplify_maskl, at fortran/simplify.c:4918

2022-01-06 Thread Harald Anlauf via Fortran

Hi Mikael,

Am 21.12.21 um 13:38 schrieb Mikael Morin:

Le 20/12/2021 à 23:05, Harald Anlauf via Fortran a écrit :

Dear all,

we need to check the arguments of the elemental MASKL and MASKR
intrinsics also before simplifying.

Testcase by Gerhard.  The fix is almost obvious, but I'm happy to
get feedback in case there is something I overlooked.  (There is
already a check on scalar arguments to MASKL/MASKR, which however
misses the case of array arguments.)

Regtested on x86_64-pc-linux-gnu.  OK for mainline?


Your patch looks reasonable and safe.
However, I find it surprising that it’s actually needed, as gfc_check
mask is already the check function associated to maskl and maskr in the
definition of the symbols.  The simplification function should be called
only when the associated check function has returned successfully, so it
shouldn’t be necessary to call it again at simplification time.
Looking at the backtrace, it is the do_simplify call at the beginning of
  gfc_intrinsic_func_interface that seems dubious to me, as it comes
before all the check further down in the function and it looks redundant
with the other simplification code after the checks.

So I’m inclined to test whether by any chance removing that call works,
and if it doesn’t, let’s go with this patch.


Did you find the time to try your version?


Mikael



Thanks,
Harald


Re: [power-ieee128] RFH: LTO broken

2022-01-06 Thread Thomas Koenig via Fortran



On 06.01.22 06:00, Michael Meissner via Fortran wrote:

I pushed the patch to the branch.


Test results are looking quite good right now.

What is still missing is the conversion for unformatted I/O, both
ways.  I'll start doing some stuff on it. Just one question:
What are functions that I can use to convert from IBM long double
to IEEE and long double and vice versa?  It was in an e-mail somewhere,
but I cannot find it at the moment.

Best regards

Thomas


Re: [power-ieee128] RFH: LTO broken

2022-01-06 Thread Jakub Jelinek via Fortran
On Thu, Jan 06, 2022 at 09:01:54PM +0100, Thomas Koenig wrote:
> On 06.01.22 06:00, Michael Meissner via Fortran wrote:
> > I pushed the patch to the branch.
> 
> Test results are looking quite good right now.
> 
> What is still missing is the conversion for unformatted I/O, both
> ways.  I'll start doing some stuff on it. Just one question:
> What are functions that I can use to convert from IBM long double
> to IEEE and long double and vice versa?  It was in an e-mail somewhere,
> but I cannot find it at the moment.

Under the hood __extendkftf2 and __trunctfkf2, as can be seen on:
__ibm128 foo (__float128 x) { return x; }
__float128 bar (__ibm128 x) { return x; }

But, I really don't think libgfortran should call those by hand, just
use C casts, (GFC_REAL_17) var_with_GFC_REAL_16_type or
(GFC_REAL_16) var_with_GFC_REAL_17_type.

Jakub



[PATCH] Fortran: Fix handling of optional argument to SIZE intrinsic [PR103898]

2022-01-06 Thread Sandra Loosemore
This patch fixes an ICE introduced with the recent-ish rewrite to inline 
the SIZE intrinsic, using a helper function to do the bulk of the work 
in producing the expansion.  It turns out to be a simple think-o type 
mistake in the wrapper around the helper rather than anything deeply 
wrong with the logic.


OK to check in?

-Sandra
commit 0e5b74440572f988dd96a6e9c33c11b59323d6cf
Author: Sandra Loosemore 
Date:   Thu Jan 6 11:23:18 2022 -0800

Fortran: Fix handling of optional argument to SIZE intrinsic [PR103898]

This patch fixes a think-o in the code that triggered an ICE
in the test case.

2021-01-06  Sandra Loosemore  

	gcc/fortran/
	* trans-intrinsic.c (gfc_conv_intrinsic_size): Make size_var
	actually be a variable and fix surrounding code.

	gcc/testsuite/
	* gfortran.dg/pr103898.f90: New test.

diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index 41252c9..aae34b0 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -8006,10 +8006,14 @@ gfc_conv_intrinsic_size (gfc_se * se, gfc_expr * expr)
 	  cond = gfc_evaluate_now (cond, &se->pre);
 	  /* 'block2' contains the arg2 absent case, 'block' the arg2 present
 	  case; size_var can be used in both blocks. */
-	  tree size_var = gfc_tree_array_size (&block2, arg1, e, NULL_TREE);
+	  tree size_var = gfc_create_var (TREE_TYPE (size), "size");
 	  tmp = fold_build2_loc (input_location, MODIFY_EXPR,
  TREE_TYPE (size_var), size_var, size);
 	  gfc_add_expr_to_block (&block, tmp);
+	  size = gfc_tree_array_size (&block2, arg1, e, NULL_TREE);
+	  tmp = fold_build2_loc (input_location, MODIFY_EXPR,
+ TREE_TYPE (size_var), size_var, size);
+	  gfc_add_expr_to_block (&block2, tmp);
 	  tmp = build3_v (COND_EXPR, cond, gfc_finish_block (&block),
 			  gfc_finish_block (&block2));
 	  gfc_add_expr_to_block (&se->pre, tmp);
diff --git a/gcc/testsuite/gfortran.dg/pr103898.f90 b/gcc/testsuite/gfortran.dg/pr103898.f90
new file mode 100644
index 000..6b4bb30
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr103898.f90
@@ -0,0 +1,15 @@
+! { dg-do compile }
+
+! This test used to ICE during gimplification (PR103898).
+
+Module g
+contains
+  function mysize(array, dim)
+integer :: mysize
+integer, dimension(:), intent(in)   :: array
+integer, optional, intent(in)   :: dim
+if (present(dim)) then
+   mysize = size(array, dim=dim)
+endif
+  end function mysize
+end module


Re: [PATCH] Fortran: Fix handling of optional argument to SIZE intrinsic [PR103898]

2022-01-06 Thread Harald Anlauf via Fortran

Hi Sandra,

Am 06.01.22 um 21:11 schrieb Sandra Loosemore:
This patch fixes an ICE introduced with the recent-ish rewrite to inline 
the SIZE intrinsic, using a helper function to do the bulk of the work 
in producing the expansion.  It turns out to be a simple think-o type 
mistake in the wrapper around the helper rather than anything deeply 
wrong with the logic.


OK to check in?


LGTM.


-Sandra


Thanks for addressing this swiftly!



Re: [PATCH] PR fortran/103777 - ICE in gfc_simplify_maskl, at fortran/simplify.c:4918

2022-01-06 Thread Mikael Morin

Le 06/01/2022 à 20:50, Harald Anlauf a écrit :


Did you find the time to try your version?


Not yet. But I have not (yet) forgotten about this.