[PATCH] sccvn: Handle bitfields in push_partial_def [PR93582]

2020-02-21 Thread Jakub Jelinek
Hi! The following patch adds support for bitfields to push_partial_def. Previously pd.offset and pd.size were counted in bytes and maxsizei in bits, now everything is counted in bits. Not really sure how much of the further code can be outlined and moved, e.g. the full def and partial def code d

Re: [PATCH] Fix bug in recursiveness check for function to be cloned (ipa/pr93707)

2020-02-21 Thread Feng Xue OS
It is a good solution. Thanks, Feng From: Martin Jambor Sent: Saturday, February 22, 2020 2:15 AM To: Feng Xue OS; Tamar Christina; Jan Hubicka; gcc-patches@gcc.gnu.org Cc: nd Subject: Re: [PATCH] Fix bug in recursiveness check for function to be cloned (

Re: [PATCH] issues with configure --enable-checking option

2020-02-21 Thread Sandra Loosemore
On 2/11/20 7:46 AM, Roman Zhuykov wrote: [snip] Since I have to ask again about backports, I've decided to make few more steps and with Alexander's help created new patch which rewords the whole option description and covers items (3), (4) and (8).  CCing Jakub and Richard as release managers, al

Re: [PATCH] avoid user-constructible types in reshape_init_array (PR 90938)

2020-02-21 Thread Martin Sebor
On 2/17/20 10:54 AM, Jason Merrill wrote: On 2/14/20 9:06 PM, Martin Sebor wrote: On 2/13/20 3:59 PM, Jason Merrill wrote: On 2/12/20 9:21 PM, Martin Sebor wrote: On 2/11/20 5:28 PM, Jason Merrill wrote: On 2/11/20 9:00 PM, Martin Sebor wrote: r270155, committed in GCC 9, introduced a transf

[committed] Fix passing of homogeneous SFmode and DFmode on hppa

2020-02-21 Thread John David Anglin
The attached patch fixes a problem noted in the libffi testsuite. This is a particular problem on 32-bit hppa*-hpux*. We pass homogeneous SFmode and DFmode aggregates in the general registers instead of the floating point registers that are used to pass SFmode and DFmode values. ASM_DECLARE_F

Re: [PATCH v2] c++: Fix ICE with ill-formed array list-initialization [PR93712]

2020-02-21 Thread Marek Polacek
On Thu, Feb 20, 2020 at 12:28:42AM +, Jason Merrill wrote: > On 2/19/20 7:30 PM, Marek Polacek wrote: > > On Fri, Feb 14, 2020 at 09:12:58AM +0100, Jason Merrill wrote: > > > On 2/13/20 8:56 PM, Marek Polacek wrote: > > > > My P0388R4 patch changed build_array_conv to create an identity > > > >

RE: [PATCH][AARCH64] Fix for PR86901

2020-02-21 Thread Modi Mo via gcc-patches
> > Sounds good. I'll get those setup and running and will report back on > > findings. What's the preferred way to measure codesize? I'm assuming > > by default the code pages are aligned so smaller differences would need to > > trip > over the boundary to actually show up. > > You can use the s

Re: [PATCH v2] RISC-V: Adjust floating point code gen for LTGT compare

2020-02-21 Thread Jim Wilson
On Fri, Feb 21, 2020 at 1:04 AM Kito Cheng wrote: > * config/riscv/riscv.c (riscv_emit_float_compare): Change the code gen > for LTGT. > (riscv_rtx_costs): Update cost model for LTGT. Thanks. This looks good to me. Jim

Re: [PATCH] libstdc++: P0769R2 Add shift to

2020-02-21 Thread Patrick Palka
On Fri, 21 Feb 2020, Patrick Palka wrote: > This patch adds std::shift_left and std::shift_right. Alhough these are > STL-style algos, they are nonetheless placed in because > they make use of some functions in the ranges namespace that are more easily > reachable from than from , namely > rang

Re: [PATCH] testsuite: Require vect_mutiple_sizes for scan-tree-dump in vect-epilogues.c

2020-02-21 Thread Jeff Law
On Wed, 2020-02-19 at 11:02 +0100, Uros Bizjak wrote: > Default testsuite flags do not enable V8QI (MMX) vector mode for > 32bit x86 targets. Require vect_multiple_sizes effective target in > scan-tree-dump to avoid "LOOP EPILOGUE VECTORIZED" failure. > > Tested on x86_64-linux-gnu {,-m32}. > >

Re: [PATCH] lra: Stop registers being incorrectly marked live v2 [PR92989]

2020-02-21 Thread Jeff Law
On Wed, 2020-02-19 at 12:59 +, Richard Sandiford wrote: > This PR is about a case in which the clobbers at the start of > an EH receiver can lead to registers becoming unnecessarily > live in predecessor blocks. My first attempt at fixing this > made sure that we update the bb liveness info ba

Re: [fixinc] Allow CONFIG_SHELL to override build-time shell in mkheaders

2020-02-21 Thread Jeff Law
On Thu, 2020-02-20 at 22:17 -0300, Alexandre Oliva wrote: > mkheaders.in uses substitutions of @SHELL@ to run fixinc.sh and > mkinstalldirs. Problem is, SHELL comes from CONFIG_SHELL for the > build system, and it needs not match whatever is available at an > unrelated host system after installati

Re: [PATCH] Do not propagate self-dependent value (PR ipa/93763)

2020-02-21 Thread Jeff Law
On Fri, 2020-02-21 at 18:59 +0100, Martin Jambor wrote: > Hi, > > On Tue, Feb 18 2020, Feng Xue OS wrote: > > Currently, for self-recursive call, we never use value originated from > > non-passthrough > > jump function as source to avoid propagation explosion, but self-dependent > > value is > >

Darwin: Fix wrong quoting on an error string (PR93860).

2020-02-21 Thread Iain Sandoe
The quotes should surround all of the literal content from the pragma that has incorrect usage. Fixed as below, tested on x86_64-apple-darwin16, applied to master, thanks Iain 2020-02-21 Iain Sandoe PR target/93860 * config/darwin-c.c (pop_field_alignment): Adjust quoting of

Re: [Patch, fortran] PR fortran/92621 Problems with memory handling with allocatable intent(out) arrays with bind(c)

2020-02-21 Thread José Rui Faustino de Sousa
On 21/02/20 12:38, Tobias Burnus wrote: Hmm, that sounds like papering over a real bug. It is possible, I tried using DECL_INITIAL to nullify cfi.n but it did not made any difference. I tried to play with optimization and up to -O1 it does not seem to crash but it always seems to crash at

[PATCH] libstdc++: P0769R2 Add shift to

2020-02-21 Thread Patrick Palka
This patch adds std::shift_left and std::shift_right. Alhough these are STL-style algos, they are nonetheless placed in because they make use of some functions in the ranges namespace that are more easily reachable from than from , namely ranges::next and ranges::swap_ranges. This implementatio

Re: [PATCH] c++: Implement P1957R2, T* to bool should be considered narrowing.

2020-02-21 Thread Marek Polacek
On Fri, Feb 21, 2020 at 02:14:26PM -0500, Marek Polacek wrote: > This was approved in the Prague 2020 WG21 meeting so let's adjust the > comment. Since it's supposed to be a DR I think we should no longer > limit it to C++20. Which is what clang++ trunk does. Marek

[PATCH] c++: Implement P1957R2, T* to bool should be considered narrowing.

2020-02-21 Thread Marek Polacek
This was approved in the Prague 2020 WG21 meeting so let's adjust the comment. Since it's supposed to be a DR I think we should no longer limit it to C++20. Bootstrapped/regtested on x86_64-linux, ok for trunk? 2020-02-21 Marek Polacek P1957R2 * typeck2.c (check_narrowing): C

Re: [PATCH] Fix bug in recursiveness check for function to be cloned (ipa/pr93707)

2020-02-21 Thread Martin Jambor
Hi, On Thu, Feb 20 2020, Feng Xue OS wrote: > This is a simpel and nice fix, but could suppress some CP opportunities for > self-recursive call. Using the test case as example, the first should be a > for-all-context clone, and the call "recur_fn (i, 1, depth + 1)" is replaced > with > a newly c

[PATCH] c++: Fix ICE with -Wmismatched-tags [PR93869]

2020-02-21 Thread Marek Polacek
This is a crash in cp_parser_check_class_key: tree type_decl = TYPE_MAIN_DECL (type); tree name = DECL_NAME (type_decl); // HERE because TYPE_MAIN_DECL of type was null as it's not a class type. Instead of checking CLASS_TYPE_P we should simply check class_key a bit earlier (in this case it was

Re: [PATCH] Do not propagate self-dependent value (PR ipa/93763)

2020-02-21 Thread Martin Jambor
Hi, On Tue, Feb 18 2020, Feng Xue OS wrote: > Currently, for self-recursive call, we never use value originated from > non-passthrough > jump function as source to avoid propagation explosion, but self-dependent > value is > missed. This patch is made to fix the bug. > > Bootstrapped/regtested o

[committed] cxx-status: Update -std= instructions for C++20.

2020-02-21 Thread Marek Polacek
We merged support for -std=c++20 to trunk, so -std=c++2a is only needed in GCC 9 and earlier. --- htdocs/projects/cxx-status.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/projects/cxx-status.html b/htdocs/projects/cxx-status.html index 1b54ea97..47278613 100644

[committed] cxx-status: Update with Prague 2020 WG21 meeting papers.

2020-02-21 Thread Marek Polacek
I'm assuming the new papers have not been implemented yet. (P1957R1 is implemented though, I'll update the page separately.) Pushed. --- htdocs/projects/cxx-status.html | 161 +--- 1 file changed, 126 insertions(+), 35 deletions(-) diff --git a/htdocs/projects/cxx-sta

[PATCH] libstdc++: Define <=> for tuple, optional and variant

2020-02-21 Thread Jonathan Wakely
Another piece of P1614R2. * include/std/optional (operator<=>(optional, optional)) (operator<=>(optional, nullopt), operator<=>(optional, U)): Define for C++20. * include/std/tuple (__tuple_cmp): New helper function for <=>. (operator<=>(tuple, tuple...)): D

PING [PATCH] drop weakref attribute on function definitions (PR 92799)

2020-02-21 Thread Martin Sebor
Ping: https://gcc.gnu.org/ml/gcc-patches/2020-02/msg00883.html On 2/14/20 3:41 PM, Martin Sebor wrote: Because attribute weakref introduces a kind of a definition, it can only be applied to declarations of symbols that are not defined.  GCC normally issues a warning when the attribute is applied

[PATCH] Avoid collect2 calling signal unsafe functions and/or unlink, with uninitialized memory (for gcc-9 branch)

2020-02-21 Thread Bernd Edlinger
Hi, this fixes the signal handler calling signal unsafe vfprintf and/or passing uninitialized memory to unlink in signal handler. This time it is the patch for the gcc-9 branch. The difference to the gcc-8 branch is in tool_cleanup: The variable that suppress the vfprintf is verbose = false; not

Re: [PATCH] [arm] Implement Armv8.1-M low overhead loops

2020-02-21 Thread Kyrill Tkachov
Hi Roman, On 2/21/20 3:49 PM, Roman Zhuykov wrote: 11.02.2020 14:00, Richard Earnshaw (lists) wrote: +(define_insn "*doloop_end" +  [(parallel [(set (pc) +   (if_then_else +   (ne (reg:SI LR_REGNUM) (const_int 1)) + (label_ref (match_opera

Re: [PATCH] [arm] Implement Armv8.1-M low overhead loops

2020-02-21 Thread Roman Zhuykov
11.02.2020 14:00, Richard Earnshaw (lists) wrote: > +(define_insn "*doloop_end" > +  [(parallel [(set (pc) > +   (if_then_else > +   (ne (reg:SI LR_REGNUM) (const_int 1)) > + (label_ref (match_operand 0 "" "")) > + (pc))) >

Re: [Ping][PATCH][Arm] ACLE 8-bit integer matrix multiply-accumulate intrinsics

2020-02-21 Thread Dennis Zhang
Hi Kyrill, On 21/02/2020 11:47, Kyrill Tkachov wrote: Hi Dennis, On 2/11/20 12:03 PM, Dennis Zhang wrote: Hi all, On 16/12/2019 13:45, Dennis Zhang wrote: > Hi all, > > This patch is part of a series adding support for Armv8.6-A features. > It depends on the Arm Armv8.6-A CLI patch, > https:/

Re: [PATCH] [arm] Implement Armv8.1-M low overhead loops

2020-02-21 Thread Roman Zhuykov
Andrea Corallo writes: > With this patch the first insn of the low loop overhead 'doloop_begin' > is expanded by 'doloop_modify' in loop-doloop.c. The same does not > happen with SMS. That certainly works correct as in your first patch, doloop_begin pattern also have "!flag_modulo_sched" conditi

Re: [PATCH] [arm] Implement Armv8.1-M low overhead loops

2020-02-21 Thread Kyrill Tkachov
Hi Andrea, On 2/19/20 1:01 PM, Andrea Corallo wrote: Hi all, Second version of the patch here addressing comments. This patch enables the Armv8.1-M Mainline LOB (low overhead branch) extension low overhead loops (LOL) feature by using the 'loop-doloop' pass. Given the following function: v

[committed] testsuite: Add -fcommon to gcc.target/i386/pr69052.c

2020-02-21 Thread Uros Bizjak
This testcase is susceptible to memory location details and start to fail with default to -fno-common. Use -fcommon to set expected testing conditions. Tested on x86_64-linux-gnu {,-m32}. 2020-02-21 Uroš Bizjak * gcc.target/i386/pr69052.c: Require target ia32. (dg-options): Add -fcom

Re: ACLE intrinsics: BFloat16 store (vst{q}_bf16) intrinsics for AArch32

2020-02-21 Thread Delia Burduv
Hi Kyrill, The arm_bf16.h is only used for scalar operations. That is how the aarch64 versions are implemented too. Thanks, Delia On 2/21/20 2:06 PM, Kyrill Tkachov wrote: Hi Delia, On 2/19/20 5:25 PM, Delia Burduv wrote: Hi, Here is the latest version of the patch. It just has some minor

[PATCH, committed][OpenACC] Adapt libgomp acc_get_property.f90 test

2020-02-21 Thread Harwath, Frederik
Hi, The commit r10-6721-g8d1a1cb1b816381bf60cb1211c93b8eba1fe1472 has changed the name of the type that is used for the return value of the Fortran acc_get_property function without adapting the test acc_get_property.f90. This obvious patch fixes that problem. Committed as r10-6782-g83d45e1d7155a

[committed] amdgcn: Use correct offset mode for gather/scatter

2020-02-21 Thread Andrew Stubbs
When I forward ported the scatter/gather patterns from my GCC 9 implementation I didn't notice that GCC 10 has a different naming scheme. :-( The patterns were being used because all GCN vector loads end up being scatter/gather, but not by the actual vectorizer. The test fails were there to s

Re: ACLE intrinsics: BFloat16 store (vst{q}_bf16) intrinsics for AArch32

2020-02-21 Thread Kyrill Tkachov
Hi Delia, On 2/19/20 5:25 PM, Delia Burduv wrote: Hi, Here is the latest version of the patch. It just has some minor formatting changes that were brought up by Richard Sandiford in the AArch64 patches Thanks, Delia On 1/22/20 5:29 PM, Delia Burduv wrote: > Ping. > > I will change the tests t

Re: [Patch, fortran] PR fortran/92621 Problems with memory handling with allocatable intent(out) arrays with bind(c)

2020-02-21 Thread Tobias Burnus
On 2/21/20 1:56 PM, José Rui Faustino de Sousa wrote: Since the cfi.n pointer is uninitialized in some infrequent situations (using -static-libgfortran seems to do the trick) the pointer seems to contain garbage and a segmentation fault is generated Hmm, that sounds like papering over a real b

[Patch, fortran] PR fortran/92621 Problems with memory handling with allocatable intent(out) arrays with bind(c)

2020-02-21 Thread José Rui Faustino de Sousa
Hi all! Proposed patch to solve problems with memory handling with allocatable intent(out) arrays with bind(c). The patch also seems to affect PR92189. Patch tested only on x86_64-pc-linux-gnu. The code currently generated tries to deallocate the artificial cfi.n pointer before it is associ

Re: [PATCH] Add c++2a binary_semaphore

2020-02-21 Thread Sebastian Huber
On 18/02/2020 15:30, Jonathan Wakely wrote: On 18/02/20 14:48 +0100, Sebastian Huber wrote: Hello, On 18/02/2020 07:46, Thomas Rodgers wrote: This patch adds the c++2a semaphore header and binary_semaphore type. The implementation is not complete, this patch is just to solicit initial feedbac

Re: [PATCH] sra: Only verify sizes of scalar accesses (PR 93845)

2020-02-21 Thread Richard Biener
On Fri, 21 Feb 2020, Martin Jambor wrote: > Hi, > > the testcase is another example - in addition to recent PR 93516 - where > the SRA access verifier is confused by the fact that get_ref_base_extent > can return different sizes for the same type, depending whether they are > COMPONENT_REF or not

Re: [PATCH, GCC/ARM] Fix MVE scalar shift tests

2020-02-21 Thread Kyrill Tkachov
On 2/21/20 11:51 AM, Kyrill Tkachov wrote: Hi Mihail, On 2/19/20 4:27 PM, Mihail Ionescu wrote: Hi Christophe, On 01/23/2020 09:34 AM, Christophe Lyon wrote: > On Mon, 20 Jan 2020 at 19:01, Mihail Ionescu > wrote: >> >> Hi, >> >> This patch fixes the scalar shifts tests added in: >> https:/

[committed] amdgcn: fix mode in vec_series

2020-02-21 Thread Andrew Stubbs
This patch fixes any obvious typo in the definition of vec_seriesv64di. It's never worked, so the fact it's taken this long for me to notice shows how little the middle-end takes advantage of this pattern. :-( Andrew amdgcn: fix mode in vec_series 2020-02-20 Andrew Stubbs gcc/ * config

[committed] amdgcn: Align VGPR pairs

2020-02-21 Thread Andrew Stubbs
This patch changes the way VGPR register pairs (for 64-bit values) are allocated. There are no hardware restrictions on the alignment of such pairs (unlike for scalar registers), but there's also not a full set of 64-bit instructions, meaning that many operations get decomposed into two or mo

[PATCH] sra: Only verify sizes of scalar accesses (PR 93845)

2020-02-21 Thread Martin Jambor
Hi, the testcase is another example - in addition to recent PR 93516 - where the SRA access verifier is confused by the fact that get_ref_base_extent can return different sizes for the same type, depending whether they are COMPONENT_REF or not. In the previous bug I decided to keep the verifier c

Re: [PATCH, GCC/ARM] Fix MVE scalar shift tests

2020-02-21 Thread Kyrill Tkachov
Hi Mihail, On 2/19/20 4:27 PM, Mihail Ionescu wrote: Hi Christophe, On 01/23/2020 09:34 AM, Christophe Lyon wrote: > On Mon, 20 Jan 2020 at 19:01, Mihail Ionescu > wrote: >> >> Hi, >> >> This patch fixes the scalar shifts tests added in: >> https://gcc.gnu.org/ml/gcc-patches/2019-11/msg01195.h

Re: [Ping][PATCH][Arm] ACLE 8-bit integer matrix multiply-accumulate intrinsics

2020-02-21 Thread Kyrill Tkachov
Hi Dennis, On 2/11/20 12:03 PM, Dennis Zhang wrote: Hi all, On 16/12/2019 13:45, Dennis Zhang wrote: > Hi all, > > This patch is part of a series adding support for Armv8.6-A features. > It depends on the Arm Armv8.6-A CLI patch, > https://gcc.gnu.org/ml/gcc-patches/2019-11/msg02195.html. > It

Re: [GCC][PATCH][AArch32] ACLE intrinsics bfloat16 vmmla and vfma for AArch32 AdvSIMD

2020-02-21 Thread Kyrill Tkachov
Hi Delia, On 2/19/20 5:23 PM, Delia Burduv wrote: Hi, Here is the latest version of the patch. It just has some minor formatting changes that were brought up by Richard Sandiford in the AArch64 patches Thanks, Delia On 1/31/20 3:23 PM, Delia Burduv wrote: Here is the updated patch. The cha

[committed] aarch64: Add SVE support for -mlow-precision-sqrt

2020-02-21 Thread Richard Sandiford
SVE was missing support for -mlow-precision-sqrt, which meant that -march=armv8.2-a+sve -mlow-precision-sqrt could cause a performance regression compared to -march=armv8.2-a -mlow-precision-sqrt. Tested on aarch64-linux-gnu and aarch64_be-elf, pushed. Richard 2020-02-21 Richard Sandiford g

[committed] aarch64: Add SVE support for -mlow-precision-div

2020-02-21 Thread Richard Sandiford
SVE was missing support for -mlow-precision-div, which meant that -march=armv8.2-a+sve -mlow-precision-div could cause a performance regression compared to -march=armv8.2-a -mlow-precision-div. I ended up doing this much later than originally intended, sorry... Tested on aarch64-linux-gnu and aar

[wwwdocs] Document more libstdc++ changes

2020-02-21 Thread Jonathan Wakely
Committed to wwwdocs git. commit 578a32e2f9215ccf96bd580d275fa12c22aa45a5 Author: Jonathan Wakely Date: Fri Feb 21 10:27:39 2020 + Document more libstdc++ changes diff --git a/htdocs/gcc-10/changes.html b/htdocs/gcc-10/changes.html index 5a959a10..2920714a 100644 --- a/htdocs/gcc-10/

[committed] aarch64: Bump AARCH64_APPROX_MODE to 64 bits

2020-02-21 Thread Richard Sandiford
We now have more than 32 scalar and vector float modes, so the 32-bit AARCH64_APPROX_MODE would invoke UB for some of them. Bumping to a 64-bit mask fixes that... for now. Ideally we'd have a static assert to trap this, but logically it would go at file scope. I think it would be better to wait u

[committed] aarch64: Avoid creating an unused register

2020-02-21 Thread Richard Sandiford
The rsqrt path of aarch64_emit_approx_sqrt created a pseudo register that it never used. Tested on aarch64-linux-gnu and aarch64_be-elf, pushed. Richard 2020-02-21 Richard Sandiford gcc/ * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Don't create an unused xmsk regis

[committed] aarch64: Fix inverted approx_sqrt condition

2020-02-21 Thread Richard Sandiford
The fix for PR80530 included an accidental flipping of the flag_finite_math_only check, so that -ffinite-math-only (and thus -ffast-math) disabled approximate sqrt rather than enabling it. This is tested by later patches but seemed worth splitting out. Tested on aarch64-linux-gnu and aarch64_be-e

[PATCH] fix -fdebug-prefix-map without gas .file support

2020-02-21 Thread Richard Biener
This applies file mapping when emitting the directory table directly instead of using the assemblers .file directive where we already correctly apply the map. Notably the non-assembler path is used for the early debug emission for LTO. Bootstrapped and tested on x86_64-unknown-linux-gnu. OK for

Re: [PATCH] rs6000: Fix infinite loop building ghostscript and icu [PR93658]

2020-02-21 Thread Richard Biener
On Thu, Feb 20, 2020 at 6:33 PM Peter Bergner wrote: > > On 2/20/20 1:47 AM, Segher Boessenkool wrote: > > On Wed, Feb 19, 2020 at 09:17:26PM -0600, Peter Bergner wrote: > >> This passed bootstrap and regtesting on powerpc64le-linux and > >> powerpc64-linux > >> (in both 32-bit and 64-bit modes)

Re: [PATCH] tree-optimization/93586 - bogus path-based disambiguation

2020-02-21 Thread Richard Biener
On Thu, 20 Feb 2020, Jan Hubicka wrote: > > This fixes bogus path-based disambiguation of mismatched array shape > > accesses. > > > > Bootstrap & regtest running on x86_64-unknown-linux-gnu. > > > > Honza, is this the correct place to detect this or were we not > > supposed to arrive there? > >

Re: [PATCH] Fix stack pointer handling in ms_hook_prologue functions for i386 target.

2020-02-21 Thread Paul Gofman
Hello,     ping for patch https://gcc.gnu.org/ml/gcc-patches/2020-02/msg00554.html. Thanks,     Paul. On 2/10/20 19:22, Paul Gofman wrote: > ChangeLog: > PR target/91489 > * config/i386/i386.md (simple_return): Also check > for ms_hook_prologue function attribute. > * config/

[PATCH v2] RISC-V: Adjust floating point code gen for LTGT compare

2020-02-21 Thread Kito Cheng
- Using gcc.dg/torture/pr91323.c as testcase, so no new testcase introduced. - We use 3 eq compare for LTGT compare before, in order to prevent exception flags setting when any input is NaN. - According latest GCC document LTGT and discussion on pr91323 LTGT should signals on NaNs, li