r311476 - [clang-diff] Refactor stop-after command-line flag
Author: jgravelle Date: Tue Aug 22 10:42:44 2017 New Revision: 311476 URL: http://llvm.org/viewvc/llvm-project?rev=311476&view=rev Log: [clang-diff] Refactor stop-after command-line flag Summary: Rename stop-after to stop-diff-after. When building LLVM with -DLLVM_BUILD_LLVM_DYLIB=ON, stop-after collides with the stop-after already present in LLVM. Reviewers: johannes, arphaman Subscribers: klimek, aheejin, cfe-commits Differential Revision: https://reviews.llvm.org/D36989 Modified: cfe/trunk/test/Tooling/clang-diff-topdown.cpp cfe/trunk/tools/clang-diff/ClangDiff.cpp Modified: cfe/trunk/test/Tooling/clang-diff-topdown.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Tooling/clang-diff-topdown.cpp?rev=311476&r1=311475&r2=311476&view=diff == --- cfe/trunk/test/Tooling/clang-diff-topdown.cpp (original) +++ cfe/trunk/test/Tooling/clang-diff-topdown.cpp Tue Aug 22 10:42:44 2017 @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -E %s > %t.src.cpp // RUN: %clang_cc1 -E %s > %t.dst.cpp -DDEST -// RUN: clang-diff -dump-matches -stop-after=topdown %t.src.cpp %t.dst.cpp -- -std=c++11 | FileCheck %s +// RUN: clang-diff -dump-matches -stop-diff-after=topdown %t.src.cpp %t.dst.cpp -- -std=c++11 | FileCheck %s // // Test the top-down matching of identical subtrees only. Modified: cfe/trunk/tools/clang-diff/ClangDiff.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-diff/ClangDiff.cpp?rev=311476&r1=311475&r2=311476&view=diff == --- cfe/trunk/tools/clang-diff/ClangDiff.cpp (original) +++ cfe/trunk/tools/clang-diff/ClangDiff.cpp Tue Aug 22 10:42:44 2017 @@ -50,7 +50,7 @@ static cl::opt DestinationP cl::Optional, cl::cat(ClangDiffCategory)); -static cl::opt StopAfter("stop-after", +static cl::opt StopAfter("stop-diff-after", cl::desc(""), cl::Optional, cl::init(""), cl::cat(ClangDiffCategory)); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D24134: [WebAssembly] Change wasm SizeType to match asmjs
jgravelle-google created this revision. jgravelle-google added a reviewer: dschuff. jgravelle-google added a subscriber: cfe-commits. Herald added subscribers: dschuff, jfb. We want wasm and asmjs to have matching ABIs, and right now asmjs uses unsigned int for its size_t. This causes exported symbols in libcxx to not match and can cause weird breakage where libcxx doesn't get linked as a result. Long-term we probably want wasm32, wasm64, and asmjs to all use unsigned long, but that would cause unnecessary ABI churn for asmjs so defer that until we can make all the ABI changes at once. https://reviews.llvm.org/D24134 Files: lib/Basic/Targets.cpp test/Preprocessor/init.c Index: test/Preprocessor/init.c === --- test/Preprocessor/init.c +++ test/Preprocessor/init.c @@ -8560,10 +8560,10 @@ // WEBASSEMBLY32-NEXT:#define __INTMAX_MAX__ 9223372036854775807LL // WEBASSEMBLY32-NEXT:#define __INTMAX_TYPE__ long long int // WEBASSEMBLY32-NEXT:#define __INTMAX_WIDTH__ 64 -// WEBASSEMBLY32-NEXT:#define __INTPTR_FMTd__ "ld" -// WEBASSEMBLY32-NEXT:#define __INTPTR_FMTi__ "li" -// WEBASSEMBLY32-NEXT:#define __INTPTR_MAX__ 2147483647L -// WEBASSEMBLY32-NEXT:#define __INTPTR_TYPE__ long int +// WEBASSEMBLY32-NEXT:#define __INTPTR_FMTd__ "d" +// WEBASSEMBLY32-NEXT:#define __INTPTR_FMTi__ "i" +// WEBASSEMBLY32-NEXT:#define __INTPTR_MAX__ 2147483647 +// WEBASSEMBLY32-NEXT:#define __INTPTR_TYPE__ int // WEBASSEMBLY32-NEXT:#define __INTPTR_WIDTH__ 32 // WEBASSEMBLY32-NEXT:#define __INT_FAST16_FMTd__ "hd" // WEBASSEMBLY32-NEXT:#define __INT_FAST16_FMTi__ "hi" @@ -8622,10 +8622,10 @@ // WEBASSEMBLY32-NEXT:#define __ORDER_PDP_ENDIAN__ 3412 // WEBASSEMBLY32-NEXT:#define __POINTER_WIDTH__ 32 // WEBASSEMBLY32-NEXT:#define __PRAGMA_REDEFINE_EXTNAME 1 -// WEBASSEMBLY32-NEXT:#define __PTRDIFF_FMTd__ "ld" -// WEBASSEMBLY32-NEXT:#define __PTRDIFF_FMTi__ "li" -// WEBASSEMBLY32-NEXT:#define __PTRDIFF_MAX__ 2147483647L -// WEBASSEMBLY32-NEXT:#define __PTRDIFF_TYPE__ long int +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_FMTd__ "d" +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_FMTi__ "i" +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_MAX__ 2147483647 +// WEBASSEMBLY32-NEXT:#define __PTRDIFF_TYPE__ int // WEBASSEMBLY32-NEXT:#define __PTRDIFF_WIDTH__ 32 // WEBASSEMBLY32-NOT:#define __REGISTER_PREFIX__ // WEBASSEMBLY32-NEXT:#define __SCHAR_MAX__ 127 @@ -8645,12 +8645,12 @@ // WEBASSEMBLY32-NEXT:#define __SIZEOF_SIZE_T__ 4 // WEBASSEMBLY32-NEXT:#define __SIZEOF_WCHAR_T__ 4 // WEBASSEMBLY32-NEXT:#define __SIZEOF_WINT_T__ 4 -// WEBASSEMBLY32-NEXT:#define __SIZE_FMTX__ "lX" -// WEBASSEMBLY32-NEXT:#define __SIZE_FMTo__ "lo" -// WEBASSEMBLY32-NEXT:#define __SIZE_FMTu__ "lu" -// WEBASSEMBLY32-NEXT:#define __SIZE_FMTx__ "lx" -// WEBASSEMBLY32-NEXT:#define __SIZE_MAX__ 4294967295UL -// WEBASSEMBLY32-NEXT:#define __SIZE_TYPE__ long unsigned int +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTX__ "X" +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTo__ "o" +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTu__ "u" +// WEBASSEMBLY32-NEXT:#define __SIZE_FMTx__ "x" +// WEBASSEMBLY32-NEXT:#define __SIZE_MAX__ 4294967295U +// WEBASSEMBLY32-NEXT:#define __SIZE_TYPE__ unsigned int // WEBASSEMBLY32-NEXT:#define __SIZE_WIDTH__ 32 // WEBASSEMBLY32-NEXT:#define __STDC_HOSTED__ 0 // WEBASSEMBLY32-NOT:#define __STDC_MB_MIGHT_NEQ_WC__ @@ -8698,12 +8698,12 @@ // WEBASSEMBLY32-NEXT:#define __UINTMAX_MAX__ 18446744073709551615ULL // WEBASSEMBLY32-NEXT:#define __UINTMAX_TYPE__ long long unsigned int // WEBASSEMBLY32-NEXT:#define __UINTMAX_WIDTH__ 64 -// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTX__ "lX" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTo__ "lo" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTu__ "lu" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTx__ "lx" -// WEBASSEMBLY32-NEXT:#define __UINTPTR_MAX__ 4294967295UL -// WEBASSEMBLY32-NEXT:#define __UINTPTR_TYPE__ long unsigned int +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTX__ "X" +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTo__ "o" +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTu__ "u" +// WEBASSEMBLY32-NEXT:#define __UINTPTR_FMTx__ "x" +// WEBASSEMBLY32-NEXT:#define __UINTPTR_MAX__ 4294967295U +// WEBASSEMBLY32-NEXT:#define __UINTPTR_TYPE__ unsigned int // WEBASSEMBLY32-NEXT:#define __UINTPTR_WIDTH__ 32 // WEBASSEMBLY32-NEXT:#define __UINT_FAST16_FMTX__ "hX" // WEBASSEMBLY32-NEXT:#define __UINT_FAST16_FMTo__ "ho" Index: lib/Basic/Targets.cpp === --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -7840,6 +7840,9 @@ SigAtomicType = SignedLong; LongDoubleWidth = LongDoubleAlign = 128; LongDoubleFormat = &llvm::APFloat::IEEEquad; +SizeType = UnsignedInt; +PtrDiffType = SignedInt; +IntPtrType = SignedInt; } protected: @@ -7958,6 +7961,9 @@ LongAlign = LongWidth = 64; PointerAlign = PointerWidth = 64; MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; +S
r295781 - Declare lgamma library builtins as never being const
Author: jgravelle Date: Tue Feb 21 16:37:27 2017 New Revision: 295781 URL: http://llvm.org/viewvc/llvm-project?rev=295781&view=rev Log: Declare lgamma library builtins as never being const Summary: POSIX requires lgamma writes to an external global variable, signgam. This prevents annotating lgamma with readnone, which is incorrect on targets that write to signgam. Reviewers: efriedma, rsmith Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D29778 Modified: cfe/trunk/include/clang/Basic/Builtins.def cfe/trunk/test/CodeGen/libcall-declarations.c Modified: cfe/trunk/include/clang/Basic/Builtins.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def?rev=295781&r1=295780&r2=295781&view=diff == --- cfe/trunk/include/clang/Basic/Builtins.def (original) +++ cfe/trunk/include/clang/Basic/Builtins.def Tue Feb 21 16:37:27 2017 @@ -1087,9 +1087,11 @@ LIBBUILTIN(ilogb, "id", "fne", "math.h", LIBBUILTIN(ilogbf, "if", "fne", "math.h", ALL_LANGUAGES) LIBBUILTIN(ilogbl, "iLd", "fne", "math.h", ALL_LANGUAGES) -LIBBUILTIN(lgamma, "dd", "fne", "math.h", ALL_LANGUAGES) -LIBBUILTIN(lgammaf, "ff", "fne", "math.h", ALL_LANGUAGES) -LIBBUILTIN(lgammal, "LdLd", "fne", "math.h", ALL_LANGUAGES) +// POSIX math.h declares a global, signgam, that lgamma writes to, so these +// shouldn't have "e" or "c" attributes +LIBBUILTIN(lgamma, "dd", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lgammaf, "ff", "fn", "math.h", ALL_LANGUAGES) +LIBBUILTIN(lgammal, "LdLd", "fn", "math.h", ALL_LANGUAGES) LIBBUILTIN(llrint, "LLid", "fne", "math.h", ALL_LANGUAGES) LIBBUILTIN(llrintf, "LLif", "fne", "math.h", ALL_LANGUAGES) Modified: cfe/trunk/test/CodeGen/libcall-declarations.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/libcall-declarations.c?rev=295781&r1=295780&r2=295781&view=diff == --- cfe/trunk/test/CodeGen/libcall-declarations.c (original) +++ cfe/trunk/test/CodeGen/libcall-declarations.c Tue Feb 21 16:37:27 2017 @@ -402,9 +402,9 @@ void *use[] = { // CHECK-NOERRNO: declare i32 @ilogb(double) [[NUW]] // CHECK-NOERRNO: declare i32 @ilogbf(float) [[NUW]] // CHECK-NOERRNO: declare i32 @ilogbl(x86_fp80) [[NUW]] -// CHECK-NOERRNO: declare double @lgamma(double) [[NUW]] -// CHECK-NOERRNO: declare float @lgammaf(float) [[NUW]] -// CHECK-NOERRNO: declare x86_fp80 @lgammal(x86_fp80) [[NUW]] +// CHECK-NOERRNO: declare double @lgamma(double) [[NONCONST:#[0-9]+]] +// CHECK-NOERRNO: declare float @lgammaf(float) [[NONCONST]] +// CHECK-NOERRNO: declare x86_fp80 @lgammal(x86_fp80) [[NONCONST]] // CHECK-NOERRNO: declare i64 @llrint(double) [[NUW]] // CHECK-NOERRNO: declare i64 @llrintf(float) [[NUW]] // CHECK-NOERRNO: declare i64 @llrintl(x86_fp80) [[NUW]] @@ -554,6 +554,9 @@ void *use[] = { // CHECK-ERRNO: declare double @fmin(double, double) [[NUW]] // CHECK-ERRNO: declare float @fminf(float, float) [[NUW]] // CHECK-ERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUW]] +// CHECK-ERRNO: declare double @lgamma(double) [[NONCONST:#[0-9]+]] +// CHECK-ERRNO: declare float @lgammaf(float) [[NONCONST]] +// CHECK-ERRNO: declare x86_fp80 @lgammal(x86_fp80) [[NONCONST]] // CHECK-ERRNO: declare double @nearbyint(double) [[NUW]] // CHECK-ERRNO: declare float @nearbyintf(float) [[NUW]] // CHECK-ERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUW]] @@ -612,5 +615,11 @@ void *use[] = { // CHECK-ERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NUW]] // CHECK-NOERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} } +// CHECK-NOERRNO: attributes [[NONCONST]] = { +// CHECK-NOERRNO-NOT: readnone +// CHECK-NOERRNO-SAME: nounwind{{.*}} } +// CHECK-ERRNO: attributes [[NONCONST]] = { +// CHECK-ERRNO-NOT: readnone +// CHECK-ERRNO-SAME: nounwind{{.*}} } // CHECK-ERRNO: attributes [[NUW]] = { nounwind readnone{{.*}} } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26431: [WebAssembly] Define __unix__ as part of the wasm target
jgravelle-google created this revision. jgravelle-google added reviewers: dschuff, sunfish. jgravelle-google added a subscriber: cfe-commits. Herald added a subscriber: jfb. Unix is a convenient common denominator for embeddings to implement syscalls for. This makes it explicit that wasm is unix-y https://reviews.llvm.org/D26431 Files: lib/Basic/Targets.cpp Index: lib/Basic/Targets.cpp === --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -856,6 +856,8 @@ // Follow g++ convention and predefine _GNU_SOURCE for C++. if (Opts.CPlusPlus) Builder.defineMacro("_GNU_SOURCE"); + +DefineStd(Builder, "unix", Opts); } // As an optimization, group static init code together in a section. Index: lib/Basic/Targets.cpp === --- lib/Basic/Targets.cpp +++ lib/Basic/Targets.cpp @@ -856,6 +856,8 @@ // Follow g++ convention and predefine _GNU_SOURCE for C++. if (Opts.CPlusPlus) Builder.defineMacro("_GNU_SOURCE"); + +DefineStd(Builder, "unix", Opts); } // As an optimization, group static init code together in a section. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26431: [WebAssembly] Define __unix__ as part of the wasm target
jgravelle-google added a comment. For the emscripten testsuite, specifically test_zlib relies on `#ifdef __unix__` to `#include `, which it needs. The rest of the unistd tests don't actually care. So we could make that test pass by explicitly adding a define for __unix__ for it, but I figure it would be better to have things as similar as possible between wasm and asmjs. https://reviews.llvm.org/D26431 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26431: [WebAssembly] Define __unix__ as part of the wasm target
jgravelle-google added a comment. I think you're right, it's the Emscripten embedding that's unixy, therefore Emscripten should be responsible for telling clang to be unixy. To play devil's advocate, it might be advantageous for all compile-to-wasm code to assume a common environment, and unix is a reasonable thing to arbitrarily standardize on. But it's probably more advantageous to not decide that at this level. Double-alternatively it might make sense to have a `wasm32-unknown-emscripten` triple, and let that determine whether we're unixy or not in clang. https://reviews.llvm.org/D26431 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26431: [WebAssembly] Define __unix__ as part of the wasm target
jgravelle-google abandoned this revision. jgravelle-google added a comment. Abandoning in favor of https://github.com/kripken/emscripten/pull/4718 https://reviews.llvm.org/D26431 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits