From: Richard Henderson <rth@twiddle.net>
To: Stefan Weil <weil@mail.berlios.de>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 6/9] eepro100: Support compilation without EEPROM
Date: Tue, 06 Apr 2010 09:35:20 -0700 [thread overview]
Message-ID: <4BBB62C8.80506@twiddle.net> (raw)
In-Reply-To: <4BBB5AC3.7080404@mail.berlios.de>
On 04/06/2010 09:01 AM, Stefan Weil wrote:
> Richard Henderson schrieb:
>> On 04/06/2010 04:44 AM, Stefan Weil wrote:
>>
>>> +#if EEPROM_SIZE > 0
>>> /* Add 64 * 2 EEPROM. i82557 and i82558 support a 64 word EEPROM,
>>> * i82559 and later support 64 or 256 word EEPROM. */
>>> s->eeprom = eeprom93xx_new(EEPROM_SIZE);
>>> +#endif
>>>
...
> Why do you think that a C if is better than a CPP if
> in this case?
>
> Some compilers give warnings for code which will
> never be reached. Try gcc -Wunreachable-code.
> It's a really useful option which sometimes even
> detects programming errors, so maybe it would
> be good for qemu, too.
Having the compiler detect syntax and type mismatch errors in all
code paths is generally far more valuable than warnings for unreachable
code. These tend to creep in very easily with ifdef'ed code.
This has follow-on effects as well. Suppose this instance above is
the only place that eeprom93xx_new is called. With an ifdef here at
the use site, the compiler will complain that eeprom93xx_new is unused,
leading you to introduce more ifdefs, which means that even more code
is unchecked.
If you use a C if, then the compiler will see that eeprom93xx_new
is used under other circumstances, not complain, and eliminate
it as unused -- after having verified that it is both syntactically
and semantically correct.
Preprocessor spaghetti code is extremely hard to read. I know that
QEMU is chock full of it, but let's try to reduce that rather than
introduce more.
r~
next prev parent reply other threads:[~2010-04-06 16:35 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-06 11:44 [Qemu-devel] eepro100: New patches Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 1/9] eepro100: Don't allow writing SCBStatus Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 2/9] eepro100: Simplify status handling Stefan Weil
2010-04-06 12:18 ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 14:29 ` Stefan Weil
2010-04-06 14:34 ` Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 3/9] eepro100: Simplified device instantiation Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 4/9] eepro100: Add new device variant i82801 Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 5/9] eepro100: Set configuration bit for standard TCB Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 6/9] eepro100: Support compilation without EEPROM Stefan Weil
2010-04-06 12:10 ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 14:26 ` Stefan Weil
2010-04-06 15:44 ` [Qemu-devel] " Richard Henderson
2010-04-06 16:01 ` Stefan Weil
2010-04-06 16:35 ` Richard Henderson [this message]
2010-04-07 1:00 ` Paul Brook
2010-04-07 7:02 ` Stefan Weil
2010-04-07 7:29 ` Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 7/9] eepro100: Set power management capability using pci_reserve_capability Stefan Weil
2010-04-06 12:09 ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 8/9] eepro100: Fix mapping of flash memory Stefan Weil
2010-04-06 11:57 ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 14:23 ` Stefan Weil
2010-04-06 14:30 ` Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 9/9] eepro100: Fix PCI interrupt pin configuration regression Stefan Weil
2010-04-06 11:55 ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 12:40 ` [Qemu-devel] Re: eepro100: New patches Michael S. Tsirkin
2010-04-06 16:09 ` Stefan Weil
2010-04-07 8:10 ` Michael S. Tsirkin
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=4BBB62C8.80506@twiddle.net \
--to=rth@twiddle.net \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=weil@mail.berlios.de \
/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: link
Be 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 NNTP newsgroup(s).