[RFA,2/3] Add missing ATTRIBUTE_NORETURNs
Commit Message
This patch adds a couple of missing ATTRIBUTE_NORETURNs. This lets
-Wimplicit-fallthrough recognize that a given case does not fall
through.
2016-09-27 Tom Tromey <tom@tromey.com>
* dwarf2loc.c (unimplemented): Add ATTRIBUTE_NORETURN.
* completer.h (throw_max_completions_reached_error): Add
ATTRIBUTE_NORETURN.
---
gdb/ChangeLog | 6 ++++++
gdb/completer.h | 3 ++-
gdb/dwarf2loc.c | 2 +-
3 files changed, 9 insertions(+), 2 deletions(-)
Comments
On Tue, Sep 27, 2016 at 7:16 PM, Tom Tromey <tom@tromey.com> wrote:
> /* Wrapper to throw MAX_COMPLETIONS_REACHED_ERROR. */
>
> -extern void throw_max_completions_reached_error (void);
> +extern void throw_max_completions_reached_error (void)
> + ATTRIBUTE_NORETURN;
>
Don't we need to also add ATTRIBUTE_NORETURN to the definition of
throw_max_completions_reached_error?
>>>>> "Yao" == Yao Qi <qiyaoltc@gmail.com> writes:
>> -extern void throw_max_completions_reached_error (void);
>> +extern void throw_max_completions_reached_error (void)
>> + ATTRIBUTE_NORETURN;
Yao> Don't we need to also add ATTRIBUTE_NORETURN to the definition of
Yao> throw_max_completions_reached_error?
No, it's sufficient to have an attribute on a prototype, if the
prototype is in scope when the definition is seen. This seems to be the
normal approach in gdb, e.g., see error_no_arg.
Tom
On Wed, Sep 28, 2016 at 4:20 PM, Tom Tromey <tom@tromey.com> wrote:
>>>>>> "Yao" == Yao Qi <qiyaoltc@gmail.com> writes:
>
>>> -extern void throw_max_completions_reached_error (void);
>>> +extern void throw_max_completions_reached_error (void)
>>> + ATTRIBUTE_NORETURN;
>
> Yao> Don't we need to also add ATTRIBUTE_NORETURN to the definition of
> Yao> throw_max_completions_reached_error?
>
> No, it's sufficient to have an attribute on a prototype, if the
> prototype is in scope when the definition is seen. This seems to be the
> normal approach in gdb, e.g., see error_no_arg.
>
Er... right. Patch is good to me.
@@ -1,5 +1,11 @@
2016-09-27 Tom Tromey <tom@tromey.com>
+ * dwarf2loc.c (unimplemented): Add ATTRIBUTE_NORETURN.
+ * completer.h (throw_max_completions_reached_error): Add
+ ATTRIBUTE_NORETURN.
+
+2016-09-27 Tom Tromey <tom@tromey.com>
+
* xcoffread.c (scan_xcoff_symtab): Move comment later.
* symfile.c (section_is_mapped): Fix fall-through comment.
* stabsread.c (define_symbol, read_member_functions): Fix
@@ -179,6 +179,7 @@ extern enum maybe_add_completion_enum
/* Wrapper to throw MAX_COMPLETIONS_REACHED_ERROR. */
-extern void throw_max_completions_reached_error (void);
+extern void throw_max_completions_reached_error (void)
+ ATTRIBUTE_NORETURN;
#endif /* defined (COMPLETER_H) */
@@ -2917,7 +2917,7 @@ dwarf2_loc_desc_get_symbol_read_needs (const gdb_byte *data, size_t size,
/* A helper function that throws an unimplemented error mentioning a
given DWARF operator. */
-static void
+static void ATTRIBUTE_NORETURN
unimplemented (unsigned int op)
{
const char *name = get_DW_OP_name (op);