[Bug driver/36312] should refuse to overwrite input file with output file

2014-11-05 Thread wkoszek at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36312

--- Comment #10 from Wojciech Koszek  ---
I'm very happy seeing it in GCC.

On Wed, Nov 5, 2014 at 9:24 AM, manu at gcc dot gnu.org <
gcc-bugzi...@gcc.gnu.org> wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36312
>
> --- Comment #8 from Manuel López-Ibáñez  ---
> Author: manu
> Date: Wed Nov  5 17:23:46 2014
> New Revision: 217149
>
> URL: https://gcc.gnu.org/viewcvs?rev=217149&root=gcc&view=rev
> Log:
>
> gcc/testsuite/ChangeLog:
>
> 2014-11-05  Anthony Brandon  
>
> PR driver/36312
> * gcc.misc-tests/output.exp: New test case for identical input and
> output files.
>
> include/ChangeLog:
>
> 2014-11-05  Anthony Brandon  
>
> PR driver/36312
> * filenames.h: Add prototype for canonical_filename_eq.
>
> gcc/ChangeLog:
>
> 2014-11-05  Anthony Brandon  
>
> PR driver/36312
> * diagnostic-core.h: Add prototype for fatal_error.
> * diagnostic.c (fatal_error): New function fatal_error.
> * gcc.c (store_arg): Remove have_o_argbuf_index.
> (process_command): Check if input and output files are the same.
> * toplev.c (init_asm_output): Check if input and output files are
> the same.
>
> libiberty/ChangeLog:
>
> 2014-11-05  Anthony Brandon  
>
> PR driver/36312
> * filename_cmp.c (canonical_filename_eq): New function to check if
> file names are the same.
> * functions.texi: Updated with documentation for new function.
>
> Added:
> trunk/gcc/testsuite/gcc.misc-tests/output.exp
> Modified:
> trunk/gcc/ChangeLog
> trunk/gcc/diagnostic-core.h
> trunk/gcc/diagnostic.c
> trunk/gcc/gcc.c
> trunk/gcc/testsuite/ChangeLog
> trunk/gcc/toplev.c
> trunk/include/ChangeLog
> trunk/include/filenames.h
> trunk/libiberty/ChangeLog
> trunk/libiberty/filename_cmp.c
> trunk/libiberty/functions.texi
>
> --
> You are receiving this mail because:
> You are on the CC list for the bug.
>

[Bug c/63462] New: [RFC] gcc should prevent from overwriting source file

2014-10-05 Thread wkoszek at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63462

Bug ID: 63462
   Summary: [RFC] gcc should prevent from overwriting source file
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: wkoszek at gmail dot com

Suggestion: prevent GCC from overwriting source code files when invoked as:

gcc source.c -o source.c

Background: I use command completion heavily. Very often while in coding mood I
do:

gcc myfile.c -o myf

not to type "myfile", which is long. But after completion kicks in, I sometimes
forget to do .

And .c file gets overwritten.

It'd be nice to have GCC catch this. And if you really want to do it, maybe run
GCC with: --yes-im-sure-i-want-to-overwrite-my-source-code switch.


[Bug c/49859] New: gcc could warn about statements between "switch" and first "case"

2011-07-26 Thread wkoszek at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49859

   Summary: gcc could warn about statements between "switch" and
first "case"
   Product: gcc
   Version: 4.5.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: wkos...@gmail.com


Created attachment 24838
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24838
Sample source code.

wkoszek@wkoszek:~/p/switch$ cat switch.c 
#include 

int
main(int argc, char **argv)
{
inttype;

type = 123;
switch (type) {
printf("SOMETHING\n");
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
default:
printf("default\n");
return 1;
}
return 0;
}
wkoszek@wkoszek:~/p/switch$ gcc -pedantic -Wall -Wunused -Wunreachable-code -c
switch.c
wkoszek@wkoszek:~/p/switch$ clang -pedantic -Wall -Wunused -Wunreachable-code
-c switch.c
switch.c:10:3: warning: will never be executed [-Wunreachable-code]
printf("SOMETHING\n");
^
1 warning generated.


wkoszek@wkoszek:~/p/switch$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.5.2-8ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.5 --enable-shared --enable-multiarch
--with-multiarch-defaults=i386-linux-gnu --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib/i386-linux-gnu
--without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib/i386-linux-gnu
--enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-plugin --enable-gold --enable-ld=default
--with-plugin-ld=ld.gold --enable-objc-gc --enable-targets=all --disable-werror
--with-arch-32=i686 --with-tune=generic --enable-checking=release
--build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)


[Bug c/49859] gcc could warn about statements between "switch" and first "case"

2011-07-26 Thread wkoszek at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49859

--- Comment #1 from Wojciech Koszek  2011-07-27 
01:16:25 UTC ---
I'd expect GCC to warn me about this case, since it's very likely an error.


[Bug c/49859] gcc could warn about statements between "switch" and first "case"

2011-07-26 Thread wkoszek at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49859

--- Comment #3 from Wojciech Koszek  2011-07-27 
01:28:28 UTC ---
Looks like GCC and Clang both agree on Duff's stuff:

wkoszek@wkoszek:~/p/duff$ cat duff.c
#include 

void
duff(to, from, count)
register short *to, *from;
register int count;
{
register int n=(count+7)/8;
switch(count%8){
case 0:  do{  *to = *from++;
case 7:  *to = *from++;
case 6:  *to = *from++;
case 5:  *to = *from++;
case 4:  *to = *from++;
case 3:  *to = *from++;
case 2:  *to = *from++;
case 1:  *to = *from++;
}while(--n>0);
}
}

int
main(int argc, char **argv)
{
short*dummy = NULL;

(void)argc;
(void)argv;

duff(dummy, dummy, 123);
return 0;
}
wkoszek@wkoszek:~/p/duff$ gcc -Wall -pedantic -Wunreachable-code -c duff.c
wkoszek@wkoszek:~/p/duff$ clang -Wall -pedantic -Wunreachable-code -c duff.c