qemu-trivial.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return
@ 2012-03-18 22:14 Stefan Weil
  2012-03-18 22:14 ` [Qemu-trivial] [PATCH 2/3] target-mips: Add compiler attribute to some " Stefan Weil
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Stefan Weil @ 2012-03-18 22:14 UTC (permalink / raw)
  To: Blue Swirl; +Cc: qemu-trivial, Stefan Weil

Most functions which handle exceptions don't return.

With a compiler attribute (added by QEMU_NORETURN),
gcc can optimize the code.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 def-helper.h |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/def-helper.h b/def-helper.h
index 0e70c31..b98ff69 100644
--- a/def-helper.h
+++ b/def-helper.h
@@ -39,6 +39,7 @@
 #endif
 #define dh_alias_ptr ptr
 #define dh_alias_void void
+#define dh_alias_noreturn noreturn
 #define dh_alias_env ptr
 #define dh_alias(t) glue(dh_alias_, t)
 
@@ -52,36 +53,42 @@
 #define dh_ctype_tl target_ulong
 #define dh_ctype_ptr void *
 #define dh_ctype_void void
+#define dh_ctype_noreturn void QEMU_NORETURN
 #define dh_ctype_env CPUArchState *
 #define dh_ctype(t) dh_ctype_##t
 
 /* We can't use glue() here because it falls foul of C preprocessor
    recursive expansion rules.  */
 #define dh_retvar_decl0_void void
+#define dh_retvar_decl0_noreturn void
 #define dh_retvar_decl0_i32 TCGv_i32 retval
 #define dh_retvar_decl0_i64 TCGv_i64 retval
 #define dh_retvar_decl0_ptr TCGv_ptr retval
 #define dh_retvar_decl0(t) glue(dh_retvar_decl0_, dh_alias(t))
 
 #define dh_retvar_decl_void
+#define dh_retvar_decl_noreturn
 #define dh_retvar_decl_i32 TCGv_i32 retval,
 #define dh_retvar_decl_i64 TCGv_i64 retval,
 #define dh_retvar_decl_ptr TCGv_ptr retval,
 #define dh_retvar_decl(t) glue(dh_retvar_decl_, dh_alias(t))
 
 #define dh_retvar_void TCG_CALL_DUMMY_ARG
+#define dh_retvar_noreturn TCG_CALL_DUMMY_ARG
 #define dh_retvar_i32 GET_TCGV_i32(retval)
 #define dh_retvar_i64 GET_TCGV_i64(retval)
 #define dh_retvar_ptr GET_TCGV_ptr(retval)
 #define dh_retvar(t) glue(dh_retvar_, dh_alias(t))
 
 #define dh_is_64bit_void 0
+#define dh_is_64bit_noreturn 0
 #define dh_is_64bit_i32 0
 #define dh_is_64bit_i64 1
 #define dh_is_64bit_ptr (TCG_TARGET_REG_BITS == 64)
 #define dh_is_64bit(t) glue(dh_is_64bit_, dh_alias(t))
 
 #define dh_is_signed_void 0
+#define dh_is_signed_noreturn 0
 #define dh_is_signed_i32 0
 #define dh_is_signed_s32 1
 #define dh_is_signed_i64 0
-- 
1.7.9



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Qemu-trivial] [PATCH 2/3] target-mips: Add compiler attribute to some functions which don't return
  2012-03-18 22:14 [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return Stefan Weil
@ 2012-03-18 22:14 ` Stefan Weil
  2012-03-18 22:14 ` [Qemu-trivial] [PATCH 3/3] target-sparc: " Stefan Weil
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Stefan Weil @ 2012-03-18 22:14 UTC (permalink / raw)
  To: Blue Swirl; +Cc: qemu-trivial, Stefan Weil

helper_raise_exception_err does not return, nor do helper_raise_exception
and do_unaligned_access.

Cc: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 target-mips/helper.h    |    4 ++--
 target-mips/op_helper.c |    3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/target-mips/helper.h b/target-mips/helper.h
index 442f684..76fb451 100644
--- a/target-mips/helper.h
+++ b/target-mips/helper.h
@@ -1,7 +1,7 @@
 #include "def-helper.h"
 
-DEF_HELPER_2(raise_exception_err, void, i32, int)
-DEF_HELPER_1(raise_exception, void, i32)
+DEF_HELPER_2(raise_exception_err, noreturn, i32, int)
+DEF_HELPER_1(raise_exception, noreturn, i32)
 
 #ifdef TARGET_MIPS64
 DEF_HELPER_3(ldl, tl, tl, tl, int)
diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index 584f0ab..a825c94 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -2274,7 +2274,8 @@ void helper_wait (void)
 
 #if !defined(CONFIG_USER_ONLY)
 
-static void do_unaligned_access (target_ulong addr, int is_write, int is_user, void *retaddr);
+static void QEMU_NORETURN do_unaligned_access(target_ulong addr, int is_write,
+                                              int is_user, void *retaddr);
 
 #define MMUSUFFIX _mmu
 #define ALIGNED_ONLY
-- 
1.7.9



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Qemu-trivial] [PATCH 3/3] target-sparc: Add compiler attribute to some functions which don't return
  2012-03-18 22:14 [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return Stefan Weil
  2012-03-18 22:14 ` [Qemu-trivial] [PATCH 2/3] target-mips: Add compiler attribute to some " Stefan Weil
@ 2012-03-18 22:14 ` Stefan Weil
  2012-03-18 22:17 ` [Qemu-trivial] [PATCH 1/3] Add support for target helper " Stefan Weil
  2012-03-24 16:11 ` Blue Swirl
  3 siblings, 0 replies; 5+ messages in thread
From: Stefan Weil @ 2012-03-18 22:14 UTC (permalink / raw)
  To: Blue Swirl; +Cc: qemu-trivial, Stefan Weil

helper_raise_exception does not return, nor does do_unaligned_access.

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 target-sparc/cpu.h    |    5 +++--
 target-sparc/helper.h |    2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h
index 1025752..885ad45 100644
--- a/target-sparc/cpu.h
+++ b/target-sparc/cpu.h
@@ -699,8 +699,9 @@ uint64_t cpu_tick_get_count(CPUTimer *timer);
 void cpu_tick_set_limit(CPUTimer *timer, uint64_t limit);
 trap_state* cpu_tsptr(CPUSPARCState* env);
 #endif
-void do_unaligned_access(CPUSPARCState *env, target_ulong addr, int is_write,
-                         int is_user, void *retaddr);
+void QEMU_NORETURN do_unaligned_access(CPUSPARCState *env, target_ulong addr,
+                                       int is_write, int is_user,
+                                       void *retaddr);
 
 #define TB_FLAG_FPU_ENABLED (1 << 4)
 #define TB_FLAG_AM_ENABLED (1 << 5)
diff --git a/target-sparc/helper.h b/target-sparc/helper.h
index c4d6225..e3c7fdd 100644
--- a/target-sparc/helper.h
+++ b/target-sparc/helper.h
@@ -78,7 +78,7 @@ DEF_HELPER_1(fcmpeq_fcc1, void, env)
 DEF_HELPER_1(fcmpeq_fcc2, void, env)
 DEF_HELPER_1(fcmpeq_fcc3, void, env)
 #endif
-DEF_HELPER_2(raise_exception, void, env, int)
+DEF_HELPER_2(raise_exception, noreturn, env, int)
 #define F_HELPER_0_1(name) DEF_HELPER_1(f ## name, void, env)
 
 DEF_HELPER_3(faddd, f64, env, f64, f64)
-- 
1.7.9



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return
  2012-03-18 22:14 [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return Stefan Weil
  2012-03-18 22:14 ` [Qemu-trivial] [PATCH 2/3] target-mips: Add compiler attribute to some " Stefan Weil
  2012-03-18 22:14 ` [Qemu-trivial] [PATCH 3/3] target-sparc: " Stefan Weil
@ 2012-03-18 22:17 ` Stefan Weil
  2012-03-24 16:11 ` Blue Swirl
  3 siblings, 0 replies; 5+ messages in thread
From: Stefan Weil @ 2012-03-18 22:17 UTC (permalink / raw)
  To: Blue Swirl; +Cc: qemu-trivial

Am 18.03.2012 23:14, schrieb Stefan Weil:
> Most functions which handle exceptions don't return.
>
> With a compiler attribute (added by QEMU_NORETURN),
> gcc can optimize the code.
>
> Signed-off-by: Stefan Weil<sw@weilnetz.de>
> ---
>   def-helper.h |    7 +++++++
>   1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/def-helper.h b/def-helper.h
> index 0e70c31..b98ff69 100644
> --- a/def-helper.h
> +++ b/def-helper.h
> @@ -39,6 +39,7 @@
>   #endif
>   #define dh_alias_ptr ptr
>   #define dh_alias_void void
> +#define dh_alias_noreturn noreturn
>   #define dh_alias_env ptr
>   #define dh_alias(t) glue(dh_alias_, t)
>
> @@ -52,36 +53,42 @@
>   #define dh_ctype_tl target_ulong
>   #define dh_ctype_ptr void *
>   #define dh_ctype_void void
> +#define dh_ctype_noreturn void QEMU_NORETURN
>   #define dh_ctype_env CPUArchState *
>   #define dh_ctype(t) dh_ctype_##t
>
>   /* We can't use glue() here because it falls foul of C preprocessor
>      recursive expansion rules.  */
>   #define dh_retvar_decl0_void void
> +#define dh_retvar_decl0_noreturn void
>   #define dh_retvar_decl0_i32 TCGv_i32 retval
>   #define dh_retvar_decl0_i64 TCGv_i64 retval
>   #define dh_retvar_decl0_ptr TCGv_ptr retval
>   #define dh_retvar_decl0(t) glue(dh_retvar_decl0_, dh_alias(t))
>
>   #define dh_retvar_decl_void
> +#define dh_retvar_decl_noreturn
>   #define dh_retvar_decl_i32 TCGv_i32 retval,
>   #define dh_retvar_decl_i64 TCGv_i64 retval,
>   #define dh_retvar_decl_ptr TCGv_ptr retval,
>   #define dh_retvar_decl(t) glue(dh_retvar_decl_, dh_alias(t))
>
>   #define dh_retvar_void TCG_CALL_DUMMY_ARG
> +#define dh_retvar_noreturn TCG_CALL_DUMMY_ARG
>   #define dh_retvar_i32 GET_TCGV_i32(retval)
>   #define dh_retvar_i64 GET_TCGV_i64(retval)
>   #define dh_retvar_ptr GET_TCGV_ptr(retval)
>   #define dh_retvar(t) glue(dh_retvar_, dh_alias(t))
>
>   #define dh_is_64bit_void 0
> +#define dh_is_64bit_noreturn 0
>   #define dh_is_64bit_i32 0
>   #define dh_is_64bit_i64 1
>   #define dh_is_64bit_ptr (TCG_TARGET_REG_BITS == 64)
>   #define dh_is_64bit(t) glue(dh_is_64bit_, dh_alias(t))
>
>   #define dh_is_signed_void 0
> +#define dh_is_signed_noreturn 0
>   #define dh_is_signed_i32 0
>   #define dh_is_signed_s32 1
>   #define dh_is_signed_i64 0
>    

I'm sorry, these three patches should have been sent to qemu-devel,
not qemu-trivial. Please ignore them for qemu-trivial.

Best regards,

Stefan W.



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return
  2012-03-18 22:14 [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return Stefan Weil
                   ` (2 preceding siblings ...)
  2012-03-18 22:17 ` [Qemu-trivial] [PATCH 1/3] Add support for target helper " Stefan Weil
@ 2012-03-24 16:11 ` Blue Swirl
  3 siblings, 0 replies; 5+ messages in thread
From: Blue Swirl @ 2012-03-24 16:11 UTC (permalink / raw)
  To: Stefan Weil; +Cc: qemu-trivial

Thanks, applied all three.

On Sun, Mar 18, 2012 at 22:14, Stefan Weil <sw@weilnetz.de> wrote:
> Most functions which handle exceptions don't return.
>
> With a compiler attribute (added by QEMU_NORETURN),
> gcc can optimize the code.
>
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>  def-helper.h |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/def-helper.h b/def-helper.h
> index 0e70c31..b98ff69 100644
> --- a/def-helper.h
> +++ b/def-helper.h
> @@ -39,6 +39,7 @@
>  #endif
>  #define dh_alias_ptr ptr
>  #define dh_alias_void void
> +#define dh_alias_noreturn noreturn
>  #define dh_alias_env ptr
>  #define dh_alias(t) glue(dh_alias_, t)
>
> @@ -52,36 +53,42 @@
>  #define dh_ctype_tl target_ulong
>  #define dh_ctype_ptr void *
>  #define dh_ctype_void void
> +#define dh_ctype_noreturn void QEMU_NORETURN
>  #define dh_ctype_env CPUArchState *
>  #define dh_ctype(t) dh_ctype_##t
>
>  /* We can't use glue() here because it falls foul of C preprocessor
>    recursive expansion rules.  */
>  #define dh_retvar_decl0_void void
> +#define dh_retvar_decl0_noreturn void
>  #define dh_retvar_decl0_i32 TCGv_i32 retval
>  #define dh_retvar_decl0_i64 TCGv_i64 retval
>  #define dh_retvar_decl0_ptr TCGv_ptr retval
>  #define dh_retvar_decl0(t) glue(dh_retvar_decl0_, dh_alias(t))
>
>  #define dh_retvar_decl_void
> +#define dh_retvar_decl_noreturn
>  #define dh_retvar_decl_i32 TCGv_i32 retval,
>  #define dh_retvar_decl_i64 TCGv_i64 retval,
>  #define dh_retvar_decl_ptr TCGv_ptr retval,
>  #define dh_retvar_decl(t) glue(dh_retvar_decl_, dh_alias(t))
>
>  #define dh_retvar_void TCG_CALL_DUMMY_ARG
> +#define dh_retvar_noreturn TCG_CALL_DUMMY_ARG
>  #define dh_retvar_i32 GET_TCGV_i32(retval)
>  #define dh_retvar_i64 GET_TCGV_i64(retval)
>  #define dh_retvar_ptr GET_TCGV_ptr(retval)
>  #define dh_retvar(t) glue(dh_retvar_, dh_alias(t))
>
>  #define dh_is_64bit_void 0
> +#define dh_is_64bit_noreturn 0
>  #define dh_is_64bit_i32 0
>  #define dh_is_64bit_i64 1
>  #define dh_is_64bit_ptr (TCG_TARGET_REG_BITS == 64)
>  #define dh_is_64bit(t) glue(dh_is_64bit_, dh_alias(t))
>
>  #define dh_is_signed_void 0
> +#define dh_is_signed_noreturn 0
>  #define dh_is_signed_i32 0
>  #define dh_is_signed_s32 1
>  #define dh_is_signed_i64 0
> --
> 1.7.9
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-03-24 16:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-18 22:14 [Qemu-trivial] [PATCH 1/3] Add support for target helper functions which don't return Stefan Weil
2012-03-18 22:14 ` [Qemu-trivial] [PATCH 2/3] target-mips: Add compiler attribute to some " Stefan Weil
2012-03-18 22:14 ` [Qemu-trivial] [PATCH 3/3] target-sparc: " Stefan Weil
2012-03-18 22:17 ` [Qemu-trivial] [PATCH 1/3] Add support for target helper " Stefan Weil
2012-03-24 16:11 ` Blue Swirl

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).