[llvm-branch-commits] [clang] PR for llvm/llvm-project#79549 (PR #80591)
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/80591 resolves llvm/llvm-project#79549 >From 2dadc402022f69908ff047a194a8a91a3f33dab2 Mon Sep 17 00:00:00 2001 From: Owen Pan Date: Fri, 26 Jan 2024 18:32:03 -0800 Subject: [PATCH] [clang-format] Fix a bug in AnnotatingParser::rParenEndsCast() (#79549) Fixes #78965. (cherry picked from commit f826f55b2ab68c2515fae751dc2d6ef77f37b172) --- clang/lib/Format/TokenAnnotator.cpp | 2 ++ clang/unittests/Format/TokenAnnotatorTest.cpp | 5 + 2 files changed, 7 insertions(+) diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 25fcceb878643..df1c5bc19de1e 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2488,6 +2488,8 @@ class AnnotatingParser { (Tok.Next->Next->is(tok::numeric_constant) || Line.InPPDirective)) { return false; } +if (Line.InPPDirective && Tok.Next->is(tok::minus)) + return false; // Search for unexpected tokens. for (FormatToken *Prev = Tok.Previous; Prev != Tok.MatchingParen; Prev = Prev->Previous) { diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 3dbf504c35ed5..67678c18963b1 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -611,6 +611,11 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) { EXPECT_TOKEN(Tokens[13], tok::r_paren, TT_Unknown); EXPECT_TOKEN(Tokens[14], tok::star, TT_BinaryOperator); + Tokens = annotate("#define foo(i) ((i) - bar)"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::r_paren, TT_Unknown); + EXPECT_TOKEN(Tokens[10], tok::minus, TT_BinaryOperator); + Tokens = annotate("return (Foo) & 10;"); ASSERT_EQ(Tokens.size(), 8u) << Tokens; EXPECT_TOKEN(Tokens[3], tok::r_paren, TT_Unknown); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#79549 (PR #80591)
https://github.com/llvmbot milestoned https://github.com/llvm/llvm-project/pull/80591 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#79549 (PR #80591)
llvmbot wrote: @HazardyKnusperkeks What do you think about merging this PR to the release branch? https://github.com/llvm/llvm-project/pull/80591 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#79549 (PR #80591)
llvmbot wrote: @llvm/pr-subscribers-clang-format Author: None (llvmbot) Changes resolves llvm/llvm-project#79549 --- Full diff: https://github.com/llvm/llvm-project/pull/80591.diff 2 Files Affected: - (modified) clang/lib/Format/TokenAnnotator.cpp (+2) - (modified) clang/unittests/Format/TokenAnnotatorTest.cpp (+5) ``diff diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 25fcceb878643..df1c5bc19de1e 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2488,6 +2488,8 @@ class AnnotatingParser { (Tok.Next->Next->is(tok::numeric_constant) || Line.InPPDirective)) { return false; } +if (Line.InPPDirective && Tok.Next->is(tok::minus)) + return false; // Search for unexpected tokens. for (FormatToken *Prev = Tok.Previous; Prev != Tok.MatchingParen; Prev = Prev->Previous) { diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 3dbf504c35ed5..67678c18963b1 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -611,6 +611,11 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) { EXPECT_TOKEN(Tokens[13], tok::r_paren, TT_Unknown); EXPECT_TOKEN(Tokens[14], tok::star, TT_BinaryOperator); + Tokens = annotate("#define foo(i) ((i) - bar)"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::r_paren, TT_Unknown); + EXPECT_TOKEN(Tokens[10], tok::minus, TT_BinaryOperator); + Tokens = annotate("return (Foo) & 10;"); ASSERT_EQ(Tokens.size(), 8u) << Tokens; EXPECT_TOKEN(Tokens[3], tok::r_paren, TT_Unknown); `` https://github.com/llvm/llvm-project/pull/80591 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] PR for llvm/llvm-project#77871 (PR #80513)
https://github.com/MaskRay approved this pull request. https://github.com/llvm/llvm-project/pull/80513 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#78965 (PR #80593)
https://github.com/llvmbot milestoned https://github.com/llvm/llvm-project/pull/80593 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#78965 (PR #80593)
llvmbot wrote: @HazardyKnusperkeks What do you think about merging this PR to the release branch? https://github.com/llvm/llvm-project/pull/80593 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#78965 (PR #80593)
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/80593 resolves llvm/llvm-project#78965 >From 6b6665d5e1801e2e548e9aed0113c8da1a9497fc Mon Sep 17 00:00:00 2001 From: Owen Pan Date: Fri, 26 Jan 2024 18:32:03 -0800 Subject: [PATCH] [clang-format] Fix a bug in AnnotatingParser::rParenEndsCast() (#79549) Fixes #78965. (cherry picked from commit f826f55b2ab68c2515fae751dc2d6ef77f37b172) --- clang/lib/Format/TokenAnnotator.cpp | 2 ++ clang/unittests/Format/TokenAnnotatorTest.cpp | 5 + 2 files changed, 7 insertions(+) diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 25fcceb878643..df1c5bc19de1e 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2488,6 +2488,8 @@ class AnnotatingParser { (Tok.Next->Next->is(tok::numeric_constant) || Line.InPPDirective)) { return false; } +if (Line.InPPDirective && Tok.Next->is(tok::minus)) + return false; // Search for unexpected tokens. for (FormatToken *Prev = Tok.Previous; Prev != Tok.MatchingParen; Prev = Prev->Previous) { diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 3dbf504c35ed5..67678c18963b1 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -611,6 +611,11 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) { EXPECT_TOKEN(Tokens[13], tok::r_paren, TT_Unknown); EXPECT_TOKEN(Tokens[14], tok::star, TT_BinaryOperator); + Tokens = annotate("#define foo(i) ((i) - bar)"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::r_paren, TT_Unknown); + EXPECT_TOKEN(Tokens[10], tok::minus, TT_BinaryOperator); + Tokens = annotate("return (Foo) & 10;"); ASSERT_EQ(Tokens.size(), 8u) << Tokens; EXPECT_TOKEN(Tokens[3], tok::r_paren, TT_Unknown); ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#78965 (PR #80593)
llvmbot wrote: @llvm/pr-subscribers-clang-format Author: None (llvmbot) Changes resolves llvm/llvm-project#78965 --- Full diff: https://github.com/llvm/llvm-project/pull/80593.diff 2 Files Affected: - (modified) clang/lib/Format/TokenAnnotator.cpp (+2) - (modified) clang/unittests/Format/TokenAnnotatorTest.cpp (+5) ``diff diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 25fcceb878643..df1c5bc19de1e 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2488,6 +2488,8 @@ class AnnotatingParser { (Tok.Next->Next->is(tok::numeric_constant) || Line.InPPDirective)) { return false; } +if (Line.InPPDirective && Tok.Next->is(tok::minus)) + return false; // Search for unexpected tokens. for (FormatToken *Prev = Tok.Previous; Prev != Tok.MatchingParen; Prev = Prev->Previous) { diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 3dbf504c35ed5..67678c18963b1 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -611,6 +611,11 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) { EXPECT_TOKEN(Tokens[13], tok::r_paren, TT_Unknown); EXPECT_TOKEN(Tokens[14], tok::star, TT_BinaryOperator); + Tokens = annotate("#define foo(i) ((i) - bar)"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::r_paren, TT_Unknown); + EXPECT_TOKEN(Tokens[10], tok::minus, TT_BinaryOperator); + Tokens = annotate("return (Foo) & 10;"); ASSERT_EQ(Tokens.size(), 8u) << Tokens; EXPECT_TOKEN(Tokens[3], tok::r_paren, TT_Unknown); `` https://github.com/llvm/llvm-project/pull/80593 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80599 (PR #80600)
https://github.com/llvmbot milestoned https://github.com/llvm/llvm-project/pull/80600 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80599 (PR #80600)
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/80600 resolves llvm/llvm-project#80599 >From b5a5de01f2fc2cf54728b7e0607a804b61b51bf7 Mon Sep 17 00:00:00 2001 From: Koakuma Date: Sun, 4 Feb 2024 11:08:00 +0700 Subject: [PATCH] [clang] Add GCC-compatible code model names for sparc64 This adds GCC-compatible names for code model selection on 64-bit SPARC with absolute code. Testing with a 2-stage build then running codegen tests works okay under all of the supported code models. (32-bit target does not have selectable code models) Reviewed By: @brad0, @MaskRay (cherry picked from commit b0f0babff22e9c0af74535b05e2c6424392bb24a) --- clang/lib/Driver/ToolChains/Clang.cpp | 8 clang/test/Driver/sparc64-codemodel.c | 6 ++ 2 files changed, 14 insertions(+) create mode 100644 clang/test/Driver/sparc64-codemodel.c diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 8092fc050b0ee..54de8edd9a039 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5779,6 +5779,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // NVPTX/AMDGPU does not care about the code model and will accept // whatever works for the host. Ok = true; +} else if (Triple.isSPARC64()) { + if (CM == "medlow") +CM = "small"; + else if (CM == "medmid") +CM = "medium"; + else if (CM == "medany") +CM = "large"; + Ok = CM == "small" || CM == "medium" || CM == "large"; } if (Ok) { CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); diff --git a/clang/test/Driver/sparc64-codemodel.c b/clang/test/Driver/sparc64-codemodel.c new file mode 100644 index 0..e4b01fd61b6fa --- /dev/null +++ b/clang/test/Driver/sparc64-codemodel.c @@ -0,0 +1,6 @@ +// RUN: %clang --target=sparc64 -mcmodel=medlow %s -### 2>&1 | FileCheck -check-prefix=MEDLOW %s +// RUN: %clang --target=sparc64 -mcmodel=medmid %s -### 2>&1 | FileCheck -check-prefix=MEDMID %s +// RUN: %clang --target=sparc64 -mcmodel=medany %s -### 2>&1 | FileCheck -check-prefix=MEDANY %s +// MEDLOW: "-mcmodel=small" +// MEDMID: "-mcmodel=medium" +// MEDANY: "-mcmodel=large" ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80599 (PR #80600)
llvmbot wrote: @llvm/pr-subscribers-clang Author: None (llvmbot) Changes resolves llvm/llvm-project#80599 --- Full diff: https://github.com/llvm/llvm-project/pull/80600.diff 2 Files Affected: - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+8) - (added) clang/test/Driver/sparc64-codemodel.c (+6) ``diff diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 8092fc050b0ee..54de8edd9a039 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5779,6 +5779,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // NVPTX/AMDGPU does not care about the code model and will accept // whatever works for the host. Ok = true; +} else if (Triple.isSPARC64()) { + if (CM == "medlow") +CM = "small"; + else if (CM == "medmid") +CM = "medium"; + else if (CM == "medany") +CM = "large"; + Ok = CM == "small" || CM == "medium" || CM == "large"; } if (Ok) { CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); diff --git a/clang/test/Driver/sparc64-codemodel.c b/clang/test/Driver/sparc64-codemodel.c new file mode 100644 index 0..e4b01fd61b6fa --- /dev/null +++ b/clang/test/Driver/sparc64-codemodel.c @@ -0,0 +1,6 @@ +// RUN: %clang --target=sparc64 -mcmodel=medlow %s -### 2>&1 | FileCheck -check-prefix=MEDLOW %s +// RUN: %clang --target=sparc64 -mcmodel=medmid %s -### 2>&1 | FileCheck -check-prefix=MEDMID %s +// RUN: %clang --target=sparc64 -mcmodel=medany %s -### 2>&1 | FileCheck -check-prefix=MEDANY %s +// MEDLOW: "-mcmodel=small" +// MEDMID: "-mcmodel=medium" +// MEDANY: "-mcmodel=large" `` https://github.com/llvm/llvm-project/pull/80600 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80599 (PR #80600)
llvmbot wrote: @llvm/pr-subscribers-clang-driver Author: None (llvmbot) Changes resolves llvm/llvm-project#80599 --- Full diff: https://github.com/llvm/llvm-project/pull/80600.diff 2 Files Affected: - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+8) - (added) clang/test/Driver/sparc64-codemodel.c (+6) ``diff diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 8092fc050b0ee..54de8edd9a039 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5779,6 +5779,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, // NVPTX/AMDGPU does not care about the code model and will accept // whatever works for the host. Ok = true; +} else if (Triple.isSPARC64()) { + if (CM == "medlow") +CM = "small"; + else if (CM == "medmid") +CM = "medium"; + else if (CM == "medany") +CM = "large"; + Ok = CM == "small" || CM == "medium" || CM == "large"; } if (Ok) { CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM)); diff --git a/clang/test/Driver/sparc64-codemodel.c b/clang/test/Driver/sparc64-codemodel.c new file mode 100644 index 0..e4b01fd61b6fa --- /dev/null +++ b/clang/test/Driver/sparc64-codemodel.c @@ -0,0 +1,6 @@ +// RUN: %clang --target=sparc64 -mcmodel=medlow %s -### 2>&1 | FileCheck -check-prefix=MEDLOW %s +// RUN: %clang --target=sparc64 -mcmodel=medmid %s -### 2>&1 | FileCheck -check-prefix=MEDMID %s +// RUN: %clang --target=sparc64 -mcmodel=medany %s -### 2>&1 | FileCheck -check-prefix=MEDANY %s +// MEDLOW: "-mcmodel=small" +// MEDMID: "-mcmodel=medium" +// MEDANY: "-mcmodel=large" `` https://github.com/llvm/llvm-project/pull/80600 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] PR for llvm/llvm-project#80604 (PR #80605)
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/80605 resolves llvm/llvm-project#80604 >From f7a0c59cc58ce6c11bc35d2949900927a6bef69c Mon Sep 17 00:00:00 2001 From: David CARLIER Date: Wed, 24 Jan 2024 23:07:32 + Subject: [PATCH] [compiler-rt] remove hexdump interception. (#79378) a freebsd dev member reported a symbol conflict and intercepting this had little value anyway. (cherry picked from commit 16a1ef86cbc5e6c829919ec6c73325413b0cd21b) --- .../sanitizer_common_interceptors.inc | 15 .../sanitizer_platform_interceptors.h | 1 - .../TestCases/FreeBSD/hexdump.cc | 23 --- 3 files changed, 39 deletions(-) delete mode 100644 compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc index 1b56bebac64e6..3ecdb55cdbf72 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc @@ -10218,20 +10218,6 @@ INTERCEPTOR(int, __xuname, int size, void *utsname) { #define INIT___XUNAME #endif -#if SANITIZER_INTERCEPT_HEXDUMP -INTERCEPTOR(void, hexdump, const void *ptr, int length, const char *header, int flags) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, hexdump, ptr, length, header, flags); - COMMON_INTERCEPTOR_READ_RANGE(ctx, ptr, length); - COMMON_INTERCEPTOR_READ_RANGE(ctx, header, internal_strlen(header) + 1); - REAL(hexdump)(ptr, length, header, flags); -} - -#define INIT_HEXDUMP COMMON_INTERCEPT_FUNCTION(hexdump); -#else -#define INIT_HEXDUMP -#endif - #if SANITIZER_INTERCEPT_ARGP_PARSE INTERCEPTOR(int, argp_parse, const struct argp *argp, int argc, char **argv, unsigned flags, int *arg_index, void *input) { @@ -10581,7 +10567,6 @@ static void InitializeCommonInterceptors() { INIT_PROCCTL INIT_UNAME; INIT___XUNAME; - INIT_HEXDUMP; INIT_ARGP_PARSE; INIT_CPUSET_GETAFFINITY; diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h index 0ce4e9351bc1d..de55c736d0e14 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h @@ -596,7 +596,6 @@ #define SANITIZER_INTERCEPT___XUNAME SI_FREEBSD #define SANITIZER_INTERCEPT_FLOPEN SI_FREEBSD #define SANITIZER_INTERCEPT_PROCCTL SI_FREEBSD -#define SANITIZER_INTERCEPT_HEXDUMP SI_FREEBSD #define SANITIZER_INTERCEPT_ARGP_PARSE SI_GLIBC #define SANITIZER_INTERCEPT_CPUSET_GETAFFINITY SI_FREEBSD diff --git a/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc b/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc deleted file mode 100644 index e07650d64102a..0 --- a/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc +++ /dev/null @@ -1,23 +0,0 @@ -// RUN: %clangxx -O0 -g %s -o %t -lutil && %run %t 2>&1 | FileCheck %s - -#include -#include -#include -#include - -int main(void) { - printf("hexdump"); - char *line; - size_t lineno = 0, len; - const char *delim = "#"; - FILE *fp = fopen("/etc/fstab", "r"); - assert(fp); - line = fparseln(fp, &len, &lineno, delim, 0); - hexdump(line, len, nullptr, 0); - free(line); - fclose(fp); - assert(lineno != 0); - assert(len > 0); - - return 0; -} ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] PR for llvm/llvm-project#80604 (PR #80605)
llvmbot wrote: @vitalybuka What do you think about merging this PR to the release branch? https://github.com/llvm/llvm-project/pull/80605 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] PR for llvm/llvm-project#80604 (PR #80605)
llvmbot wrote: @llvm/pr-subscribers-compiler-rt-sanitizer Author: None (llvmbot) Changes resolves llvm/llvm-project#80604 --- Full diff: https://github.com/llvm/llvm-project/pull/80605.diff 3 Files Affected: - (modified) compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc (-15) - (modified) compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h (-1) - (removed) compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc (-23) ``diff diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc index 1b56bebac64e6..3ecdb55cdbf72 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc @@ -10218,20 +10218,6 @@ INTERCEPTOR(int, __xuname, int size, void *utsname) { #define INIT___XUNAME #endif -#if SANITIZER_INTERCEPT_HEXDUMP -INTERCEPTOR(void, hexdump, const void *ptr, int length, const char *header, int flags) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, hexdump, ptr, length, header, flags); - COMMON_INTERCEPTOR_READ_RANGE(ctx, ptr, length); - COMMON_INTERCEPTOR_READ_RANGE(ctx, header, internal_strlen(header) + 1); - REAL(hexdump)(ptr, length, header, flags); -} - -#define INIT_HEXDUMP COMMON_INTERCEPT_FUNCTION(hexdump); -#else -#define INIT_HEXDUMP -#endif - #if SANITIZER_INTERCEPT_ARGP_PARSE INTERCEPTOR(int, argp_parse, const struct argp *argp, int argc, char **argv, unsigned flags, int *arg_index, void *input) { @@ -10581,7 +10567,6 @@ static void InitializeCommonInterceptors() { INIT_PROCCTL INIT_UNAME; INIT___XUNAME; - INIT_HEXDUMP; INIT_ARGP_PARSE; INIT_CPUSET_GETAFFINITY; diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h index 0ce4e9351bc1d..de55c736d0e14 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h @@ -596,7 +596,6 @@ #define SANITIZER_INTERCEPT___XUNAME SI_FREEBSD #define SANITIZER_INTERCEPT_FLOPEN SI_FREEBSD #define SANITIZER_INTERCEPT_PROCCTL SI_FREEBSD -#define SANITIZER_INTERCEPT_HEXDUMP SI_FREEBSD #define SANITIZER_INTERCEPT_ARGP_PARSE SI_GLIBC #define SANITIZER_INTERCEPT_CPUSET_GETAFFINITY SI_FREEBSD diff --git a/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc b/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc deleted file mode 100644 index e07650d64102a..0 --- a/compiler-rt/test/sanitizer_common/TestCases/FreeBSD/hexdump.cc +++ /dev/null @@ -1,23 +0,0 @@ -// RUN: %clangxx -O0 -g %s -o %t -lutil && %run %t 2>&1 | FileCheck %s - -#include -#include -#include -#include - -int main(void) { - printf("hexdump"); - char *line; - size_t lineno = 0, len; - const char *delim = "#"; - FILE *fp = fopen("/etc/fstab", "r"); - assert(fp); - line = fparseln(fp, &len, &lineno, delim, 0); - hexdump(line, len, nullptr, 0); - free(line); - fclose(fp); - assert(lineno != 0); - assert(len > 0); - - return 0; -} `` https://github.com/llvm/llvm-project/pull/80605 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] PR for llvm/llvm-project#80604 (PR #80605)
https://github.com/llvmbot milestoned https://github.com/llvm/llvm-project/pull/80605 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80599 (PR #80600)
https://github.com/MaskRay approved this pull request. https://github.com/llvm/llvm-project/pull/80600 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#79549 (PR #80591)
owenca wrote: Replaced with #80593. https://github.com/llvm/llvm-project/pull/80591 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#79549 (PR #80591)
https://github.com/owenca closed https://github.com/llvm/llvm-project/pull/80591 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] [VPlan] Explicitly handle scalar pointer inductions. (PR #80273)
https://github.com/lahiri-phdworks edited https://github.com/llvm/llvm-project/pull/80273 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80619 (PR #80620)
https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/80620 resolves llvm/llvm-project#80619 >From 6089b8b94b9cc742947762edd640af5d70248652 Mon Sep 17 00:00:00 2001 From: Shanzhi Date: Mon, 29 Jan 2024 19:17:13 +0800 Subject: [PATCH] [Clang][AST] Fix a crash on attaching doc comments (#78716) This crash is basically caused by calling `ASTContext::getRawCommentForDeclNoCacheImp` with its input arguments `RepresentativeLocForDecl` and `CommentsInTheFile` refering to different files. A reduced reproducer is provided in this patch. After the source locations for instantiations of funtion template are corrected in the commit 256a0b298c68b89688b80350b034daf2f7785b67, the variable `CommitsInThisFile` in the function `ASTContext::attachCommentsToJustParsedDecls` would refer to the source file rather than the header file for implicit function template instantiation. Therefore, in the first loop in `ASTContext::attachCommentsToJustParsedDecls`, `D` should also be adjusted for relevant scenarios like the second loop. Fixes #67979 Fixes #68524 Fixes #70550 (cherry picked from commit 5f4ee5a2dfa97fe32ee62d1d67aa1413d5a059e6) --- clang/lib/AST/ASTContext.cpp | 6 +++- .../AST/ast-crash-doc-function-template.cpp | 30 +++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 clang/test/AST/ast-crash-doc-function-template.cpp diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index ab16ca10395fa..cc5de9a6295eb 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -498,7 +498,11 @@ void ASTContext::attachCommentsToJustParsedDecls(ArrayRef Decls, return; FileID File; - for (Decl *D : Decls) { + for (const Decl *D : Decls) { +if (D->isInvalidDecl()) + continue; + +D = &adjustDeclToTemplate(*D); SourceLocation Loc = D->getLocation(); if (Loc.isValid()) { // See if there are any new comments that are not attached to a decl. diff --git a/clang/test/AST/ast-crash-doc-function-template.cpp b/clang/test/AST/ast-crash-doc-function-template.cpp new file mode 100644 index 0..d48eb0dbe02f0 --- /dev/null +++ b/clang/test/AST/ast-crash-doc-function-template.cpp @@ -0,0 +1,30 @@ +// RUN: rm -rf %t +// RUN: split-file %s %t + +// RUN: %clang_cc1 -x c++ -Wdocumentation -fsyntax-only -ast-dump-all %t/t.cpp + +//--- t.h +/// MyClass in the header file +class MyClass { +public: + template + void Foo() const; + + /// Bar + void Bar() const; +}; + +//--- t.cpp +#include "t.h" + +/// MyClass::Bar: Foo() is implicitly instantiated and called here. +void MyClass::Bar() const { + Foo(); +} + +/// MyClass::Foo +template +void MyClass::Foo() const { +} + +// CHECK: TranslationUnitDecl ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80619 (PR #80620)
llvmbot wrote: @gribozavr What do you think about merging this PR to the release branch? https://github.com/llvm/llvm-project/pull/80620 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80619 (PR #80620)
https://github.com/llvmbot milestoned https://github.com/llvm/llvm-project/pull/80620 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80619 (PR #80620)
llvmbot wrote: @llvm/pr-subscribers-clang Author: None (llvmbot) Changes resolves llvm/llvm-project#80619 --- Full diff: https://github.com/llvm/llvm-project/pull/80620.diff 2 Files Affected: - (modified) clang/lib/AST/ASTContext.cpp (+5-1) - (added) clang/test/AST/ast-crash-doc-function-template.cpp (+30) ``diff diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index ab16ca10395fa..cc5de9a6295eb 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -498,7 +498,11 @@ void ASTContext::attachCommentsToJustParsedDecls(ArrayRef Decls, return; FileID File; - for (Decl *D : Decls) { + for (const Decl *D : Decls) { +if (D->isInvalidDecl()) + continue; + +D = &adjustDeclToTemplate(*D); SourceLocation Loc = D->getLocation(); if (Loc.isValid()) { // See if there are any new comments that are not attached to a decl. diff --git a/clang/test/AST/ast-crash-doc-function-template.cpp b/clang/test/AST/ast-crash-doc-function-template.cpp new file mode 100644 index 0..d48eb0dbe02f0 --- /dev/null +++ b/clang/test/AST/ast-crash-doc-function-template.cpp @@ -0,0 +1,30 @@ +// RUN: rm -rf %t +// RUN: split-file %s %t + +// RUN: %clang_cc1 -x c++ -Wdocumentation -fsyntax-only -ast-dump-all %t/t.cpp + +//--- t.h +/// MyClass in the header file +class MyClass { +public: + template + void Foo() const; + + /// Bar + void Bar() const; +}; + +//--- t.cpp +#include "t.h" + +/// MyClass::Bar: Foo() is implicitly instantiated and called here. +void MyClass::Bar() const { + Foo(); +} + +/// MyClass::Foo +template +void MyClass::Foo() const { +} + +// CHECK: TranslationUnitDecl `` https://github.com/llvm/llvm-project/pull/80620 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#80619 (PR #80620)
https://github.com/llvmbot updated https://github.com/llvm/llvm-project/pull/80620 >From b53ef3e81b5774e7246bec6da1351d6077291469 Mon Sep 17 00:00:00 2001 From: Shanzhi Date: Mon, 29 Jan 2024 19:17:13 +0800 Subject: [PATCH] [Clang][AST] Fix a crash on attaching doc comments (#78716) This crash is basically caused by calling `ASTContext::getRawCommentForDeclNoCacheImp` with its input arguments `RepresentativeLocForDecl` and `CommentsInTheFile` refering to different files. A reduced reproducer is provided in this patch. After the source locations for instantiations of funtion template are corrected in the commit 256a0b298c68b89688b80350b034daf2f7785b67, the variable `CommitsInThisFile` in the function `ASTContext::attachCommentsToJustParsedDecls` would refer to the source file rather than the header file for implicit function template instantiation. Therefore, in the first loop in `ASTContext::attachCommentsToJustParsedDecls`, `D` should also be adjusted for relevant scenarios like the second loop. Fixes #67979 Fixes #68524 Fixes #70550 (cherry picked from commit 5f4ee5a2dfa97fe32ee62d1d67aa1413d5a059e6) --- clang/lib/AST/ASTContext.cpp | 6 +++- .../AST/ast-crash-doc-function-template.cpp | 30 +++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 clang/test/AST/ast-crash-doc-function-template.cpp diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index ab16ca10395fa..cc5de9a6295eb 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -498,7 +498,11 @@ void ASTContext::attachCommentsToJustParsedDecls(ArrayRef Decls, return; FileID File; - for (Decl *D : Decls) { + for (const Decl *D : Decls) { +if (D->isInvalidDecl()) + continue; + +D = &adjustDeclToTemplate(*D); SourceLocation Loc = D->getLocation(); if (Loc.isValid()) { // See if there are any new comments that are not attached to a decl. diff --git a/clang/test/AST/ast-crash-doc-function-template.cpp b/clang/test/AST/ast-crash-doc-function-template.cpp new file mode 100644 index 0..d48eb0dbe02f0 --- /dev/null +++ b/clang/test/AST/ast-crash-doc-function-template.cpp @@ -0,0 +1,30 @@ +// RUN: rm -rf %t +// RUN: split-file %s %t + +// RUN: %clang_cc1 -x c++ -Wdocumentation -fsyntax-only -ast-dump-all %t/t.cpp + +//--- t.h +/// MyClass in the header file +class MyClass { +public: + template + void Foo() const; + + /// Bar + void Bar() const; +}; + +//--- t.cpp +#include "t.h" + +/// MyClass::Bar: Foo() is implicitly instantiated and called here. +void MyClass::Bar() const { + Foo(); +} + +/// MyClass::Foo +template +void MyClass::Foo() const { +} + +// CHECK: TranslationUnitDecl ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] PR for llvm/llvm-project#80543 (PR #80544)
https://github.com/cjacek approved this pull request. https://github.com/llvm/llvm-project/pull/80544 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] PR for llvm/llvm-project#78892 (PR #80259)
https://github.com/owenca approved this pull request. https://github.com/llvm/llvm-project/pull/80259 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] PR for llvm/llvm-project#80348 (PR #80585)
https://github.com/boomanaiden154 commented: This is incorrectly formatted (sorry for not catching that in my initial review). It should be the following: ```yaml on: pull_request_target: branches: - main ``` I pushed a fixup to main 4b34558f43121df9b863ff2492f74fb2e65a5af1. https://github.com/llvm/llvm-project/pull/80585 ___ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits