From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id B67E13858012; Tue, 2 Apr 2024 15:57:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B67E13858012 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1712073473; bh=COTei1ZH7jrhE+avJqL+nJVtkRGsbav99UU4yzYFtTc=; h=From:To:Subject:Date:From; b=nLknUVMjWBSPHwu26bgIY1Mlxv5fAJf4r2WeHj+WSvvfkENFCL7vhPwP027OvaFjw dLSdHtXG49ifGJYH5NjReZIzfLG2AFnYG0J9hVEjQ9P1Imhlf+Wzcf6cGMQqy5tgMO vRApFg4YN1jqQsF+WRPvo6stu7JsDG7oEYGT4Q8A= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc/azanella/clang] conform: Replace _Static_assert with macro X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/azanella/clang X-Git-Oldrev: db827c3d6d54d46d0b0c7800d3ac16431347c9e0 X-Git-Newrev: 1ec697c47499650d86d608724a35036a308e5c34 Message-Id: <20240402155753.B67E13858012@sourceware.org> Date: Tue, 2 Apr 2024 15:57:53 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1ec697c47499650d86d608724a35036a308e5c34 commit 1ec697c47499650d86d608724a35036a308e5c34 Author: Adhemerval Zanella Date: Tue Mar 29 16:06:13 2022 -0300 conform: Replace _Static_assert with macro clang does not allow non integral constant expression in _Static_assert. Replace with a macro that uses name bit-field where an invalid constant expression sets its size to 0, resulting in a error. Diff: --- conform/conformtest.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/conform/conformtest.py b/conform/conformtest.py index d38afb06a8..a43ab05a0a 100644 --- a/conform/conformtest.py +++ b/conform/conformtest.py @@ -157,9 +157,9 @@ class ConstantTest(object): '%s' '# define conformtest_%d_value (%s)\n' '#endif\n' - '_Static_assert (((%s < 0) == conformtest_%d_negative) ' + 'STATIC_ASSERT (((%s < 0) == conformtest_%d_negative) ' '&& (%s == conformtest_%d_value), ' - '"value match inside and outside #if");\n' + 'value_match_inside_and_outside_if);\n' % (self.symbol, self.num, sym_bits_def_neg, self.num, sym_bits_or_neg, self.num, sym_bits_def_pos, self.num, sym_bits_or_pos, self.symbol, self.num, self.symbol, @@ -179,8 +179,8 @@ class ConstantTest(object): 'Type of symbol %s' % self.symbol, text)) if self.op is not None: - text = ('_Static_assert (%(symbol)s %(op)s %(value)s, ' - '"value constraint");\n' + text = ('STATIC_ASSERT (%(symbol)s %(op)s %(value)s, ' + 'value_constraint);\n' % vars(self)) self.subtests.append(CompileSubTest( 'Value of symbol %s' % self.symbol, @@ -552,6 +552,16 @@ class HeaderTests(object): self.skipped += 1 sys.stdout.flush() + def common_definitions(self): + """Add any required common definition for the compilation tests.""" + text = ('#define __STR(pre,post) pre ## post\n' + '#define _STR(pre,post) __STR(pre, post)\n' + '#define STATIC_ASSERT(cond, msg) \\\n' + ' typedef struct {\\\n' + ' int _STR (static_assertion_failed_, msg) : !!(cond);\\\n' + ' } _STR (static_assertion_failed_, __COUNTER__)\n') + return text + def compile_test(self, name, text): """Run a compilation test; return True if it passes.""" self.total += 1 @@ -565,7 +575,8 @@ class HeaderTests(object): c_file = os.path.join(self.temp_dir, 'test.c') o_file = os.path.join(self.temp_dir, 'test.o') with open(c_file, 'w') as c_file_out: - c_file_out.write('#include <%s>\n%s' % (self.header, text)) + c_file_out.write('#include <%s>\n%s\n%s' % + (self.header, self.common_definitions(), text)) cmd = ('%s %s -c %s -o %s' % (self.cc, self.cflags, c_file, o_file)) try: subprocess.check_call(cmd, shell=True)