Re: Keep elog(ERROR) and ereport(ERROR) calls in the cold path
Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
From: ilmari@ilmari.org (Dagfinn Ilmari Mannsåker )
To: David Rowley <dgrowleyml@gmail.com>
Cc: Greg Nancarrow <gregn4422@gmail.com>,
Peter Eisentraut <peter.eisentraut@2ndquadrant.com>,
Andres Freund <andres@anarazel.de>,
PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2020-11-24T00:52:59Z
Lists: pgsql-hackers
David Rowley <dgrowleyml@gmail.com> writes: > On Tue, 24 Nov 2020 at 12:50, Greg Nancarrow <gregn4422@gmail.com> wrote: >> Hmmm, unfortunately this seems to break my build ... > >> I think your commit needs to be fixed based on the following documentation: >> >> https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005fattribute.html#g_t_005f_005fhas_005fattribute > > Agreed. I tested on https://godbolt.org/ with a GCC version < 5 and > updating to what's mentioned in the GCC manual works fine. What I had > did not. > > Thanks for the report. > > I pushed a fix. The Clang documentation¹ suggest an even neater solution, which would eliminate the repetitive empty pg_attribute_foo #defines in the trailing #else/#endif block in commit 1fa22a43a56e1fe44c7bb3a3d5ef31be5bcac41d: #ifndef __has_attribute #define __has_attribute(x) 0 #endif [1] http://clang.llvm.org/docs/LanguageExtensions.html#has-attribute - ilmari -- "The surreality of the universe tends towards a maximum" -- Skud's Law "Never formulate a law or axiom that you're not prepared to live with the consequences of." -- Skud's Meta-Law
Commits
-
Stop gap fix for __attribute__((cold)) compiler bug in MinGW 8.1
- 687f61634475 14.0 landed
-
Tidy up definitions of pg_attribute_hot and pg_attribute_cold
- b0727ae99b70 14.0 landed
-
Fix unportable usage of __has_attribute
- 1fa22a43a56e 14.0 landed
-
Improve compiler code layout in elog/ereport ERROR calls
- 913ec71d682e 14.0 landed
-
Define pg_attribute_cold and pg_attribute_hot macros
- 697e1d02f53f 14.0 landed