[Bug c++/45167] [C++0x] lambda+template="Internal error: Segmentation fault (program cc1plus)"

2010-08-02 Thread paolo dot carlini at oracle dot com
--- Comment #1 from paolo dot carlini at oracle dot com 2010-08-03 06:48 --- Apparently this is still happening in mainline. Jason, can you have a look? -- paolo dot carlini at oracle dot com changed: What|Removed |Added --

[Bug fortran/45170] [F2003] allocatable character lengths

2010-08-02 Thread burnus at gcc dot gnu dot org
--- Comment #2 from burnus at gcc dot gnu dot org 2010-08-03 05:43 --- By the way, gfortran's Fortran 2003 implementation status can be found at http://gcc.gnu.org/wiki/Fortran2003Status -- burnus at gcc dot gnu dot org changed: What|Removed |Added

[Bug fortran/45170] suspected bug in error generated by allocatable character array

2010-08-02 Thread kargl at gcc dot gnu dot org
--- Comment #1 from kargl at gcc dot gnu dot org 2010-08-03 02:31 --- This statement: character(:), allocatable :: io_message uses a deferred type parameter (a F2003 feature), which is not supported by gfortran at this time. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45170

[Bug fortran/45170] New: suspected bug in error generated by allocatable character array

2010-08-02 Thread clerman at fuse dot net
gfortran tech support, When I attempt to compile the program listed below, the following error messages are printed: n...@oxford:~/Elements/AllocChar$ more alloccharP.xyz alloccharP.f90:6.12: character(:), allocatable :: c_Char(:) 1 Error: Syntax error in CHARACTER declaration a

[Bug c++/45169] New: C++ Hello World mudflap violations

2010-08-02 Thread bryanr81 at gmail dot com
A trivial C++ 'hello world' produces mudflap violations w/ -O2, but not w/ -O0: --- #include int main() { std::cout << "hello" << std::endl; } --- /opt/gcc-4.5.1/bin/gcc -Wall -O2 -fmudflap -o test test.cc -lmudflap -lstdc++ ./test *** mudflap violation 1 (check/read): time=1280788265.017

[Bug fortran/45159] Unnecessary temporaries

2010-08-02 Thread tkoenig at gcc dot gnu dot org
--- Comment #12 from tkoenig at gcc dot gnu dot org 2010-08-02 22:16 --- (In reply to comment #5) > [macbook] lin/test% gfc -Warray-temporaries nf.f90 > nf.f90:293.30: > >if ( i>i1 ) x(i:i+nxy-1) = x(i:i+nxy-1) - au3(i-nxy:i-1)*x(i-nxy:i-1) > 1 > Warn

[Bug fortran/45159] Unnecessary temporaries

2010-08-02 Thread tkoenig at gcc dot gnu dot org
--- Comment #11 from tkoenig at gcc dot gnu dot org 2010-08-02 22:04 --- Subject: Bug 45159 Author: tkoenig Date: Mon Aug 2 22:04:36 2010 New Revision: 162829 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162829 Log: 2010-08-02 Thomas Koenig PR fortran/45159

[Bug c/45168] New: There should be a way to mark specific enum members as deprecated

2010-08-02 Thread joseph dot h dot garvin at gmail dot com
It's fairly common in C and C++ libraries to have an enum with each element representing an aspect of a request. In these situations it would be nice to be able to deprecate specific enum members. For example the user wants to retrieve a Foo from a server, and Foo's have 3 parts, they might make a

[Bug fortran/45161] ICE on gfortran.dg/typebound_proc_16.f03 with -std=f2003

2010-08-02 Thread janus at gcc dot gnu dot org
-- janus at gcc dot gnu dot org changed: What|Removed |Added AssignedTo|unassigned at gcc dot gnu |janus at gcc dot gnu dot org |dot org

[Bug inline-asm/45160] [4.4.x/4.5.x regression] Invalid assembly code is generated for x86 architecture for faad2 library (AAC decode algorithm)

2010-08-02 Thread t dot artem at mailcity dot com
--- Comment #9 from t dot artem at mailcity dot com 2010-08-02 20:27 --- The culprit is the ic_predict.c file. When I compile it with -fno-strict-aliasing (while everything else is being compiled with -fstrict-aliasing) libfaad works correctly. These are the warnings which I get from G

[Bug target/45063] [4.6 Regression] ICE: Segmentation fault (cc1) compiling matmul_i1.c

2010-08-02 Thread bernds at gcc dot gnu dot org
--- Comment #18 from bernds at gcc dot gnu dot org 2010-08-02 20:18 --- Subject: Bug 45063 Author: bernds Date: Mon Aug 2 20:17:59 2010 New Revision: 162828 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162828 Log: PR target/45063 * caller-save.c (save_call_clo

[Bug target/31850] gcc.c-torture/compile/limits-fnargs.c is slow at compiling for spu-elf

2010-08-02 Thread pinskia at gcc dot gnu dot org
--- Comment #19 from pinskia at gcc dot gnu dot org 2010-08-02 20:16 --- > reload CSE regs Will most likely be helped by: http://gcc.gnu.org/ml/gcc-patches/2010-07/msg02397.html -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31850

[Bug target/31850] gcc.c-torture/compile/limits-fnargs.c is slow at compiling for spu-elf

2010-08-02 Thread uweigand at gcc dot gnu dot org
--- Comment #18 from uweigand at gcc dot gnu dot org 2010-08-02 19:25 --- (In reply to comment #17) > Someone might want to try this again after the fix for PR 38582. It's a lot better, but still not real good. I'm now seeing on a QS22 (ppu -> spu cross compiler): -O0: 0m9.983s -O1:

[Bug fortran/45159] Unnecessary temporaries

2010-08-02 Thread tkoenig at gcc dot gnu dot org
--- Comment #10 from tkoenig at gcc dot gnu dot org 2010-08-02 19:00 --- This fixes the test case from comment #0, and looks much more sane. Let's see if this survives regression-testing... Index: dependency.c === --- dep

[Bug c++/45167] New: lambda+template="Internal error: Segmentation fault (program cc1plus)"

2010-08-02 Thread wb at fnal dot gov
build environment: gcc 4.5.0 on MacBook Pro running OS X 10.6.4 execution environment: same as build environment command: g++ --std=c++0x auto at_or_above = [] ( int threshhold ) { return [threshhold] (int x) { return x >= threshhold; }; }; template< class Pred > int zero( Pred ) { retu

[Bug c++/45153] DWARF DW_AT_external flag set for undefined variables

2010-08-02 Thread pj dot pandit at yahoo dot co dot in
--- Comment #1 from pj dot pandit at yahoo dot co dot in 2010-08-02 18:38 --- The following patch to gcc-4.4.4 seems to fix the issue for DW_AT_subprogram DIEs. $ diff -Naurp gcc-4.4.4/gcc/dwarf2out.c gcc-4.4.4.1/gcc/dwarf2out.c --- gcc-4.4.4/gcc/dwarf2out.c 2010-02-10 20:39:06.0

[Bug tree-optimization/44914] [4.6 Regression] ICE: in calc_dfs_tree, at dominance.c:395 with -fipa-sra -fnon-call-exceptions

2010-08-02 Thread jamborm at gcc dot gnu dot org
--- Comment #8 from jamborm at gcc dot gnu dot org 2010-08-02 17:40 --- (In reply to comment #7) > > The patch is really the same. I did not commit it because the branch > was frozen for the release of 4.5.1. I'm re-testing it on the branch > now and hopefully will commit it today. >

[Bug tree-optimization/41089] [4.5/4.6 Regression] stdarg pass produces wrong code

2010-08-02 Thread ubizjak at gmail dot com
--- Comment #49 from ubizjak at gmail dot com 2010-08-02 17:33 --- Author: uros Date: Mon Aug 2 17:26:40 2010 New Revision: 162826 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162826 Log: target/41089 * config/alpha/alpha.c (alpha_build_builtin_va_list): Mark _

[Bug bootstrap/45118] No rule to make target `.deps/affinity.Plo'

2010-08-02 Thread dave at hiauly1 dot hia dot nrc dot ca
--- Comment #2 from dave at hiauly1 dot hia dot nrc dot ca 2010-08-02 17:18 --- Subject: Re: No rule to make target `.deps/affinity.Plo' On Mon, 02 Aug 2010, rwild at gcc dot gnu dot org wrote: > Please also show how you configured your build, and please also post the exact >

[Bug driver/45166] New: gcc -MD misses multiple command line source files

2010-08-02 Thread wsnyder at wsnyder dot org
When multiple .c (.cpp?) files are mentioned on the command line, GCC places only a single one in the MD output: $ echo "int main() { return 0; }" > a.c $ echo "int foo() { return 0; }" > b.c $ gcc -MD a.c b.c $ cat a.d a.o: a.c b.c was lost, but should be listed. -- Summary: gcc -M

[Bug tree-optimization/41089] [4.5/4.6 Regression] stdarg pass produces wrong code

2010-08-02 Thread ubizjak at gmail dot com
--- Comment #48 from ubizjak at gmail dot com 2010-08-02 17:12 --- Patch at http://gcc.gnu.org/ml/gcc-patches/2010-08/msg00021.html. -- ubizjak at gmail dot com changed: What|Removed |Added --

[Bug libfortran/45165] New: unix.c:fallback_access() leaks file descriptors

2010-08-02 Thread jb at gcc dot gnu dot org
fd's are opened but never closed. -- Summary: unix.c:fallback_access() leaks file descriptors Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libfortran AssignedTo: unassign

[Bug c/45164] -O3 optimization problematic on "long long" types near 64 bit wraparound

2010-08-02 Thread robots at marcabel dot com
--- Comment #4 from robots at marcabel dot com 2010-08-02 16:54 --- Confirmed resolved invalid. Thank you! -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45164

[Bug fortran/36854] [meta] fortran front-end optimization

2010-08-02 Thread tkoenig at gcc dot gnu dot org
--- Comment #5 from tkoenig at gcc dot gnu dot org 2010-08-02 16:54 --- Subject: Bug 36854 Author: tkoenig Date: Mon Aug 2 16:53:51 2010 New Revision: 162824 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162824 Log: 2010-08-02 Thomas Koenig PR fortran/36854

[Bug c/45164] -O3 optimization problematic on "long long" types near 64 bit wraparound

2010-08-02 Thread pinskia at gcc dot gnu dot org
--- Comment #3 from pinskia at gcc dot gnu dot org 2010-08-02 16:48 --- Signed overflow is undefined; use either unsigned or -fwrapv to get the behavior you want. -- pinskia at gcc dot gnu dot org changed: What|Removed |Added --

[Bug c/45164] -O3 optimization problematic on "long long" types near 64 bit wraparound

2010-08-02 Thread robots at marcabel dot com
--- Comment #2 from robots at marcabel dot com 2010-08-02 16:48 --- Created an attachment (id=21372) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21372&action=view) Source code to produce in case it doesn't paste well from my initial report. -- http://gcc.gnu.org/bugzilla/sh

[Bug c/45164] -O3 optimization problematic on "long long" types near 64 bit wraparound

2010-08-02 Thread robots at marcabel dot com
--- Comment #1 from robots at marcabel dot com 2010-08-02 16:47 --- Created an attachment (id=21371) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21371&action=view) Preprocessor output / compiler input -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45164

[Bug c/45164] New: -O3 optimization problematic on "long long" types near 64 bit wraparound

2010-08-02 Thread robots at marcabel dot com
Here is a small test case, with output and version information in the comments. There are enough ways of stating this problem that it was not evident to me within the existing bug list. One skilled in the art would know if this is a duplicate. I'm not sure where to upload my .i file, so I will t

[Bug bootstrap/45118] No rule to make target `.deps/affinity.Plo'

2010-08-02 Thread rwild at gcc dot gnu dot org
--- Comment #1 from rwild at gcc dot gnu dot org 2010-08-02 16:40 --- Is this a transient failure with parallel make, i.e., are you using parallel make, and does the failure go away with a serial make or another parallel make invocation? Which -jN option do you pass? Have you seen this

[Bug inline-asm/45160] [4.4.x/4.5.x regression] Invalid assembly code is generated for x86 architecture for faad2 library (AAC decode algorithm)

2010-08-02 Thread pinskia at gcc dot gnu dot org
--- Comment #8 from pinskia at gcc dot gnu dot org 2010-08-02 16:21 --- > Like I said GCC 4.2.x has no problems compiling this library, so I have no > idea > who to blame and who else I should get in touch with. I would get into contact with the developers of the library first. Yes GC

[Bug inline-asm/45160] [4.4.x/4.5.x regression] Invalid assembly code is generated for x86 architecture for faad2 library (AAC decode algorithm)

2010-08-02 Thread t dot artem at mailcity dot com
--- Comment #7 from t dot artem at mailcity dot com 2010-08-02 15:49 --- (In reply to comment #6) > Why CC me? I have no clue about faad2, the strict-aliasing thing hints > at errors in faad2, not gcc. > Richard, I don't know who is who amongst GCC developers, but you are a prominent

[Bug fortran/42051] [OOP] ICE on array-valued function with CLASS formal argument

2010-08-02 Thread mikael at gcc dot gnu dot org
--- Comment #21 from mikael at gcc dot gnu dot org 2010-08-02 15:31 --- Subject: Bug 42051 Author: mikael Date: Mon Aug 2 15:30:47 2010 New Revision: 162821 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162821 Log: 2010-08-02 Mikael Morin Janus Weil P

[Bug fortran/45151] [4.6 regression] New Fortran failuires

2010-08-02 Thread mikael at gcc dot gnu dot org
--- Comment #11 from mikael at gcc dot gnu dot org 2010-08-02 15:31 --- Subject: Bug 45151 Author: mikael Date: Mon Aug 2 15:30:47 2010 New Revision: 162821 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162821 Log: 2010-08-02 Mikael Morin Janus Weil P

[Bug fortran/44064] [OOP] ICE with file containing two modules and one program

2010-08-02 Thread mikael at gcc dot gnu dot org
--- Comment #10 from mikael at gcc dot gnu dot org 2010-08-02 15:31 --- Subject: Bug 44064 Author: mikael Date: Mon Aug 2 15:30:47 2010 New Revision: 162821 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162821 Log: 2010-08-02 Mikael Morin Janus Weil P

[Bug bootstrap/45162] [4.6 regression] ARM bootstrap comparison failures after stage 3

2010-08-02 Thread ramana at gcc dot gnu dot org
--- Comment #2 from ramana at gcc dot gnu dot org 2010-08-02 14:58 --- Created an attachment (id=21370) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21370&action=view) Disassembly and object files that are different with the thumb2 bootstrap Disassembly and object files in this c

[Bug bootstrap/45162] [4.6 regression] ARM bootstrap comparison failures after stage 3

2010-08-02 Thread ramana at gcc dot gnu dot org
--- Comment #1 from ramana at gcc dot gnu dot org 2010-08-02 14:55 --- Confirmed. My bootstrap with thumb2 and armv7-a failed as well. Here's the configuration line . I only see a comparison failure with tree-vect-data-refs.o in this configuration. Configured with: /home/ramrad01/source

[Bug fortran/45159] Unnecessary temporaries

2010-08-02 Thread dominiq at lps dot ens dot fr
--- Comment #9 from dominiq at lps dot ens dot fr 2010-08-02 14:36 --- > Well, with an array descriptor it one only changes the strides/bounds ... >From polyhedron test induct.f90 [macbook] lin/test% gfc -Warray-temporaries induct.f90 induct.f90:1629.20: rotate_quad = transpose

[Bug inline-asm/45160] [4.4.x/4.5.x regression] Invalid assembly code is generated for x86 architecture for faad2 library (AAC decode algorithm)

2010-08-02 Thread rguenth at gcc dot gnu dot org
--- Comment #6 from rguenth at gcc dot gnu dot org 2010-08-02 14:12 --- Why CC me? I have no clue about faad2, the strict-aliasing thing hints at errors in faad2, not gcc. -- rguenth at gcc dot gnu dot org changed: What|Removed |Added

[Bug fortran/45159] Unnecessary temporaries

2010-08-02 Thread burnus at gcc dot gnu dot org
--- Comment #8 from burnus at gcc dot gnu dot org 2010-08-02 14:10 --- (In reply to comment #7) > > I fail to see why a scalar temporary is not enough: > Well, try: I concede defeat. > If one want to enter this kind of reduced temporaries, another candidate is > a=transpose(a) which re

[Bug fortran/45159] Unneccessary temporaries

2010-08-02 Thread dominiq at lps dot ens dot fr
--- Comment #7 from dominiq at lps dot ens dot fr 2010-08-02 13:39 --- > I fail to see why a scalar temporary is not enough: > > do j = 1, N > do i = 1, N > tmp = 0.0 > do k = 1, N > tmp = a(i,k)*b(k,j) > end do > a(i,j) = tmp > end do > end do > > Note: it won'

[Bug tree-optimization/44328] switch/case optimization produces an invalid lookup table index

2010-08-02 Thread ian dot bolton at arm dot com
--- Comment #25 from ian dot bolton at arm dot com 2010-08-02 13:33 --- (In reply to comment #24) > (In reply to comment #23) > > I can confirm this fails with GCC 4.4.4 and that GCC 4.3.2 works. > > > > I get no warning and correct code in latest 4.4 branch (4.4.5 - 20100727), but > I

[Bug tree-optimization/44914] [4.6 Regression] ICE: in calc_dfs_tree, at dominance.c:395 with -fipa-sra -fnon-call-exceptions

2010-08-02 Thread jamborm at gcc dot gnu dot org
--- Comment #7 from jamborm at gcc dot gnu dot org 2010-08-02 13:28 --- (In reply to comment #6) > Is there a patch for 4.5.1 for this somewhere? I'm hitting this issue at gcc > 4.5.1 java boostrap (#45154) > The patch is really the same. I did not commit it because the branch was fro

[Bug fortran/45131] [4.6 regression] New Fortran test failures

2010-08-02 Thread jvdelisle at gcc dot gnu dot org
--- Comment #14 from jvdelisle at gcc dot gnu dot org 2010-08-02 13:19 --- Closing as fixed. Regarding comment #7. I do not see the problem on 4.5. I reran tests here on my machine that failed with 4.6 and there were no failures on 4.5 -- jvdelisle at gcc dot gnu dot org changed:

[Bug inline-asm/45160] [4.4.x/4.5.x regression] Invalid assembly code is generated for x86 architecture for faad2 library (AAC decode algorithm)

2010-08-02 Thread t dot artem at mailcity dot com
--- Comment #5 from t dot artem at mailcity dot com 2010-08-02 13:15 --- I've found the culprit (or better say mplayer developer hinted), it is -fstrict-aliasing optimization. With -fno-strict-aliasing GCC 4.4.x and 4.5.x produce proper code. Please, advise. -- http://gcc.gnu.org

[Bug inline-asm/45160] [4.4.x/4.5.x regression] Invalid assembly code is generated for x86 architecture for faad2 library (AAC decode algorithm)

2010-08-02 Thread t dot artem at mailcity dot com
--- Comment #4 from t dot artem at mailcity dot com 2010-08-02 13:10 --- Created an attachment (id=21369) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21369&action=view) faad2 2.7.0 complete sources with -save-temps for GCC 4.5.1 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?i

[Bug inline-asm/45160] [4.4.x/4.5.x regression] Invalid assembly code is generated for x86 architecture for faad2 library (AAC decode algorithm)

2010-08-02 Thread t dot artem at mailcity dot com
--- Comment #3 from t dot artem at mailcity dot com 2010-08-02 13:09 --- I've just tested GCC 4.5.1 and it also miscompiles the source code. -- t dot artem at mailcity dot com changed: What|Removed |Added --

[Bug fortran/45159] Unneccessary temporaries

2010-08-02 Thread burnus at gcc dot gnu dot org
--- Comment #6 from burnus at gcc dot gnu dot org 2010-08-02 12:41 --- (In reply to comment #5) > > As pointed out by Dominique, one needs to be careful. I think one can > > optimize: > > c = matmul(b, transpose(c)) > > c = matmul(c,b) > > where c is a rank-2 matrix. I think one can

[Bug tree-optimization/44328] switch/case optimization produces an invalid lookup table index

2010-08-02 Thread ian dot bolton at arm dot com
--- Comment #24 from ian dot bolton at arm dot com 2010-08-02 12:23 --- (In reply to comment #23) > I can confirm this fails with GCC 4.4.4 and that GCC 4.3.2 works. > I get no warning and correct code in latest 4.4 branch (4.4.5 - 20100727), but I do get the warning and incorrect code

[Bug fortran/45159] Unneccessary temporaries

2010-08-02 Thread dominiq at lps dot ens dot fr
--- Comment #5 from dominiq at lps dot ens dot fr 2010-08-02 11:41 --- > As pointed out by Dominique, one needs to be careful. I think one can > optimize: > > c = matmul(b, transpose(c)) > c = matmul(c,b) > where c is a rank-2 matrix. I think one cannot optimize it if c is just a >

[Bug bootstrap/45162] [4.6 regression] ARM bootstrap comparison failures after stage 3

2010-08-02 Thread rguenth at gcc dot gnu dot org
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|--- |4.6.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45162

[Bug target/40457] use stm and ldm to access consecutive memory words

2010-08-02 Thread bernds at gcc dot gnu dot org
--- Comment #12 from bernds at gcc dot gnu dot org 2010-08-02 10:07 --- Subject: Bug 40457 Author: bernds Date: Mon Aug 2 10:06:47 2010 New Revision: 162815 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162815 Log: PR target/40457 * config/arm/arm.h (arm_regs_i

[Bug driver/45163] -save-temps=obj does not work correctly with -fdum-tree- options

2010-08-02 Thread jiez at gcc dot gnu dot org
--- Comment #1 from jiez at gcc dot gnu dot org 2010-08-02 08:43 --- Make the summary more specific. -- jiez at gcc dot gnu dot org changed: What|Removed |Added

[Bug driver/45163] New: -save-temps=obj does not work correctly

2010-08-02 Thread jiez at gcc dot gnu dot org
Assume there is a directory "foo" in the current directory and there is a foo.c in ./foo , I saw this on 4.5.1 $ gcc-4.5 -fdump-tree-optimized -save-temps=obj foo/foo.c -S -o foo/foo.s foo/foo.c: In function ‘foo’: foo/foo.c:1:6: error: could not open dump file ‘foo/foo/foo.140t.optimized’: No suc

[Bug bootstrap/45162] New: [4.6 regression] ARM bootstrap comparison failures after stage 3

2010-08-02 Thread mikpe at it dot uu dot se
Attempting to bootstrap gcc-4.6-20100731 (r162788) on armv5tel-linux-gnueabi fails due to bootstrap comparison failures after stage 3: make[3]: Leaving directory `/home/mikpe/objdir46' Comparing stages 2 and 3 warning: gcc/cc1plus-checksum.o differs warning: gcc/cc1-checksum.o differs warning: gcc

[Bug middle-end/45098] Missed induction variable optimization

2010-08-02 Thread ramana at gcc dot gnu dot org
-- ramana at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywo

[Bug tree-optimization/45144] SRA optimization issue of bit-field

2010-08-02 Thread ramana at gcc dot gnu dot org
-- ramana at gcc dot gnu dot org changed: What|Removed |Added Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywo