public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "R.E.Wolff at BitWizard dot nl" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c/96550] New: gcc is smart in figuring out a non-returning function. Date: Mon, 10 Aug 2020 11:16:49 +0000 [thread overview] Message-ID: <bug-96550-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96550 Bug ID: 96550 Summary: gcc is smart in figuring out a non-returning function. Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: R.E.Wolff at BitWizard dot nl Target Milestone: --- This is the small probgram that reproduces this: ----------------------- #include <string.h> #define FAIL struct test { #ifdef FAIL char *t; #else char t[8]; #endif } ; extern void somefunc (struct test *t); void myfunc (void) { struct test mt; memset (&mt, 0, sizeof (mt)); mt.t[0] = 1; somefunc (&mt); } ----------------------- Here the struct was defined in another part of the code, and I'd guessed (wrong) that the declaration was like in the FALSE branch of the IFDEF. As it turns out the declaration was different. So what happens is that the compiler decides that I set the pointer to zero, and that the assignment through that pointer WILL fail. So the generated assembly starts with: --------------------------- myfunc: @ Function supports interworking. @ Volatile: function does not return. --------------------------- So... without saying anything the compiler decided that my function will never return. It might be right about that (That's not true: This is on an embedded system and I can map RAM to address zero!) but then IMHO, a warning would be warranted. A function goes from not being declared volatile by me to being volatile (not returning). It's perfectly legal C code in there, but might not be what the user wanted.... Just like if (a = 3) ... I think a warning might be issued. Reproduced on: gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516 not reproduced on: gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609 reproduced on (originally ran into): arm-none-eabi-gcc (GNU Arm Embedded Toolchain 9-2020-q2-update) 9.3.1 20200408 (release)
next reply other threads:[~2020-08-10 11:16 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-10 11:16 R.E.Wolff at BitWizard dot nl [this message] 2020-08-10 11:32 ` [Bug c/96550] " glisse at gcc dot gnu.org 2020-08-10 11:33 ` jakub at gcc dot gnu.org 2020-08-10 11:38 ` redi at gcc dot gnu.org 2020-08-10 11:40 ` redi at gcc dot gnu.org 2020-08-10 11:51 ` R.E.Wolff at BitWizard dot nl 2020-08-10 11:55 ` R.E.Wolff at BitWizard dot nl 2020-08-10 11:59 ` jakub at gcc dot gnu.org 2020-08-10 12:29 ` R.E.Wolff at BitWizard dot nl 2020-08-10 12:30 ` redi at gcc dot gnu.org 2020-08-10 12:42 ` R.E.Wolff at BitWizard dot nl 2020-08-10 12:45 ` R.E.Wolff at BitWizard dot nl 2020-08-10 12:55 ` R.E.Wolff at BitWizard dot nl 2020-08-10 13:03 ` schwab@linux-m68k.org 2020-08-10 13:04 ` redi at gcc dot gnu.org 2020-08-10 13:13 ` R.E.Wolff at BitWizard dot nl 2020-08-10 16:06 ` redi at gcc dot gnu.org 2020-08-11 7:19 ` R.E.Wolff at BitWizard dot nl
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-96550-4@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).