pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Heikki Linnakangas <heikki@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@commandprompt.com>
Cc: Stefan Kaltenbrunner <stefan@kaltenbrunner.cc>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Subject: Re: compiler warnings on the buildfarm
Date: Thu, 12 Jul 2007 23:50:45 +0100
Message-ID: <4696B045.8080405@enterprisedb.com> (raw)
In-Reply-To: <12639.1184279380@sss.pgh.pa.us>
References: <46962BBD.5000108@kaltenbrunner.cc>
	<17428.1184249229@sss.pgh.pa.us>
	<469653BA.2040004@kaltenbrunner.cc>
	<20070712211918.GD22973@alvh.no-ip.org>
	<46969C98.60207@enterprisedb.com>
	<20070712213806.GE22973@alvh.no-ip.org>
	<4696A5F1.3010103@enterprisedb.com>
	<12639.1184279380@sss.pgh.pa.us>

Tom Lane wrote:
> Heikki Linnakangas <heikki@enterprisedb.com> writes:
>> Hmm. It looks like I get that warning on my laptop as well. I tracked it 
>> down to these two places:
> 
>> Line 209:
>>> while (ptr - GETARR(trg) < ARRNELEM(trg))
>>> {
>>> 	text	   *item = (text *) palloc(VARHDRSZ + 3);
>>> 	
>>> 	SET_VARSIZE(item, VARHDRSZ + 3);
>>> 	CPTRGM(VARDATA(item), ptr);
>>>>> 	d[ptr - GETARR(trg)] = PointerGetDatum(item);
>>> 	ptr++;
>>> }
> 
> I'll betcha the compiler is trying to optimize the repeated calculations
> of "ptr - GETARR(trg)" into a separate variable that it increments along
> with ptr.  Maybe it is getting it wrong, or maybe the assembler is just
> confused.  Does the warning go away if you dial down the -O level?

FWIW, this patch makes the warnings go away, and makes the code a little 
bit more readable as well. It would be nice to understand why exactly 
it's complaining, though.

-- 
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

Attachments:

trgm-silence-warning.patch (text/x-diff, 1.6K) download Index: trgm_op.c =================================================================== RCS file: /home/hlinnaka/pgcvsrepository/pgsql/contrib/pg_trgm/trgm_op.c,v retrieving revision 1.8 diff -c -r1.8 trgm_op.c *** trgm_op.c 28 Feb 2007 22:44:38 -0000 1.8 --- trgm_op.c 12 Jul 2007 22:28:43 -0000 *************** *** 194,212 **** Datum *d; ArrayType *a; trgm *ptr; trg = generate_trgm(VARDATA(in), VARSIZE(in) - VARHDRSZ); d = (Datum *) palloc(sizeof(Datum) * (1 + ARRNELEM(trg))); ! ptr = GETARR(trg); ! while (ptr - GETARR(trg) < ARRNELEM(trg)) { text *item = (text *) palloc(VARHDRSZ + 3); SET_VARSIZE(item, VARHDRSZ + 3); CPTRGM(VARDATA(item), ptr); ! d[ptr - GETARR(trg)] = PointerGetDatum(item); ! ptr++; } a = construct_array( --- 194,211 ---- Datum *d; ArrayType *a; trgm *ptr; + int i; trg = generate_trgm(VARDATA(in), VARSIZE(in) - VARHDRSZ); d = (Datum *) palloc(sizeof(Datum) * (1 + ARRNELEM(trg))); ! for (i = 0, ptr = GETARR(trg); i < ARRNELEM(trg); i++, ptr++) { text *item = (text *) palloc(VARHDRSZ + 3); SET_VARSIZE(item, VARHDRSZ + 3); CPTRGM(VARDATA(item), ptr); ! d[i] = PointerGetDatum(item); } a = construct_array( *************** *** 218,229 **** 'i' ); ! ptr = GETARR(trg); ! while (ptr - GETARR(trg) < ARRNELEM(trg)) ! { ! pfree(DatumGetPointer(d[ptr - GETARR(trg)])); ! ptr++; ! } pfree(d); pfree(trg); --- 217,224 ---- 'i' ); ! for (i = 0; i < ARRNELEM(trg); i++) ! pfree(DatumGetPointer(d[i])); pfree(d); pfree(trg);

view thread (66+ messages)  latest in thread

Message-ID: <4696B045.8080405@enterprisedb.com>
Permalink:  ../4696B045.8080405@enterprisedb.com/
Also on:    postgresql.org/message-id/4696B045.8080405@enterprisedb.com

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: heikki@enterprisedb.com, tgl@sss.pgh.pa.us, alvherre@commandprompt.com, stefan@kaltenbrunner.cc
  Subject: Re: compiler warnings on the buildfarm
  In-Reply-To: <4696B045.8080405@enterprisedb.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox