This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH]: handle size_t /= ptr size in tree-ssa-strlen.c
- From: Richard Guenther <richard dot guenther at gmail dot com>
- To: Tristan Gingold <gingold at adacore dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Jakub Jelinek <jakub at redhat dot com>
- Date: Fri, 4 May 2012 14:34:59 +0200
- Subject: Re: [PATCH]: handle size_t /= ptr size in tree-ssa-strlen.c
- References: <C43ED110-6E71-4DB6-A824-95A1A2AE4376@adacore.com>
On Fri, May 4, 2012 at 2:27 PM, Tristan Gingold <gingold@adacore.com> wrote:
> Hi,
>
> get_string_length assumes that precision of size_t is the same as precision of a pointer, which isn't always true at least on VMS.
> This patch simply add a conversion in case of mismatch.
>
> Tested on ia64/VMS by cross-bootstrapping.
> Bootstrapped and regtested on i386/GNU Linux.
>
> Ok for trunk ?
Hmm, isn't the issue that size_t precision is not the same precision as
sizetype? You probably should use ptrofftype_p (TREE_TYPE (lhs))
instead of spelling out 'sizetype' here.
Richard.
> Tristan.
>
> 2012-05-04 ?Tristan Gingold ?<gingold@adacore.com>
>
> ? ? ? ?* tree-ssa-strlen.c (get_string_length): Convert lhs if needed.
>
> diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
> index a37633a..bda5ffb 100644
> --- a/gcc/tree-ssa-strlen.c
> +++ b/gcc/tree-ssa-strlen.c
> @@ -427,6 +427,12 @@ get_string_length (strinfo si)
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NULL);
> ? ? ? ? ?add_referenced_var (lhs_var);
> ? ? ? ? ?tem = gimple_call_arg (stmt, 0);
> + ? ? ? ? ?if (!useless_type_conversion_p (sizetype, TREE_TYPE (lhs)))
> + ? ? ? ? ? ?{
> + ? ? ? ? ? ? ?lhs = convert_to_ptrofftype (lhs);
> + ? ? ? ? ? ? ?lhs = force_gimple_operand_gsi (&gsi, lhs, true, NULL_TREE,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?true, GSI_SAME_STMT);
> + ? ? ? ? ? ?}
> ? ? ? ? ?lenstmt
> ? ? ? ? ? ?= gimple_build_assign_with_ops (POINTER_PLUS_EXPR,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?make_ssa_name (lhs_var, NULL),
>