* Roll external/googletest/ bf0701daa..f45d5865e (47 commits)
bf0701daa9...f45d5865ed
$ git log bf0701daa..f45d5865e --date=short --no-merges --format='%ad %ae %s'
2022-01-24 absl-team Make recreate_environments_when_repeating=false the default.
2022-01-19 absl-team Factor out AssertionResult into dedicated gtest-assertion-result header + implementation files to prevent cyclic includes between gtest.h and gtest_pred_impl.h
2022-01-18 absl-team Consistently apply IWYU pragmas across googletest and googlemock headers
2022-01-14 dinor Fix reference to source file in gmock FAQ
2022-01-14 dmauro Update test Docker image to GCC 11.2, Clang 14 (prerelease), CMake 3.22.1, and Bazel 4.2.2
2022-01-13 ayush854032 FIX#2174 -- remove `DEBUG_POSTFIX`
2022-01-12 absl-team Fix run-on sentence
2022-01-06 hgsilverman Fix a typo in comments.
2021-12-22 hgsilverman Use normal for loop instead of accumulate.
2021-12-17 hgsilverman Improve code readablity.
2021-12-17 hgsilverman Apply requested changes to preserve old behavior.
2021-12-03 hgsilverman Reimplement MatchesFilter with new interfaces.
2021-11-23 hgsilverman Apply requested changes.
2021-10-17 hgsilverman Get rid of redundant filter matching code
2021-10-17 hgsilverman Add comments describing the behavior of filters
2021-10-17 hgsilverman Process filter string once instead of per test
2022-01-05 bsilver16384 Remove another GTEST_DISALLOW_ASSIGN_ that crept in
2022-01-04 4789010+ramkumar-kr Update example to reflect the tests below
2022-01-01 ayush854032 FIX#3719 -- Fix `clang` conversion warnings
2021-12-27 absl-team Include the param names in the generated description of the MATCHER_P matchers.
2021-12-22 absl-team Clarify "package" means "Bazel package", and promote `testonly=True` rather than `testing` sub-directory.
2021-12-22 dmauro Makes the Python imports consistently use full paths from the repository root, unifying the behavior between Bazel and CMake
2021-12-21 dmauro Makes TestForDeathTest.CRTDebugDeath only run when _DEBUG is defined
2021-12-21 philip.j.m link to regex on qnx in cmake
2021-12-15 dinor Release tests for UnitTestOptions::MatchesFilter
2021-12-07 absl-team Add NOLINT to address modernize-use-trailing-return-type in TEST_F uses
2021-12-04 ayush854032 Allow to specify a random seed independently of whether shuffling is requested
2021-12-03 absl-team Support std::reference_wapper as a smart pointer type in gmock
2021-12-02 absl-team Fix typo in GoogleMock Cookbook.
2021-11-29 absl-team Work around Android KitKat tzset bug
2021-11-25 ludger.paehler Fix typo in the queue test.
2021-11-16 denis.samoylov Suppress unused-value warning
2021-11-16 93249401+assafpr fixed branch from master to main in readme.md
2021-11-16 93249401+assafpr Update README.md
2021-11-16 krystian.kuzniarek fix a typo
2021-11-15 cramertj Clarify "Times() after X" error message
2021-11-15 dmauro Update URLs in Bazel Quickstart
2021-11-12 absl-team Fix typo in gmock-matchers_test.cc: CanDescribeNegationOfExpectingOneElment => CanDescribeNegationOfExpectingOneElement
2021-11-10 absl-team Googletest export
2021-11-09 dmauro Googletest export
2021-11-10 memmenlauer googletest/src/gtest-port.cc: Added GetLastError() on Windows for CreateThread()
2021-11-09 absl-team Googletest export
2021-11-08 absl-team Googletest export
2021-11-08 absl-team Googletest export
2021-11-04 absl-team Googletest export
2021-11-05 raul.tambre Replace use of deprecated std::iterator
2021-10-20 h.zeller Start a simple github actions CI
Created with:
roll-dep external/googletest
* Roll external/re2/ 4244cd1cb..611baecbc (42 commits)
4244cd1cb4...611baecbce
$ git log 4244cd1cb..611baecbc --date=short --no-merges --format='%ad %ae %s'
2022-01-24 junyer Update to the latest version of FuzzedDataProvider.
2022-01-19 junyer Replace the build job with the build-appleclang job.
2022-01-18 junyer Address a `-Wunused-but-set-variable' warning from Clang 13.x.
2022-01-18 junyer Fix the build job on macos-latest.
2022-01-17 junyer Remove GCC 4.x and 5.x from the CI configuration.
2022-01-16 stefano Don't specify the `-std` flag in Makefile or re2.pc.
2022-01-12 junyer Use Python 3 shebangs for make_unicode_*.py.
2021-12-24 andrei.bencsik Fix CMake packaging for installation.
2021-11-18 junyer Remove a redundant map access.
2021-11-02 junyer Produce static-testinstall and shared-testinstall binaries.
2021-10-27 junyer Precompute bit_state_text_max_size during compilation.
2021-10-27 junyer Fix another latent bug in Regexp::Walker<T>::Reset().
2021-10-25 junyer Update Unicode data to 14.0.0.
2021-10-25 junyer Make the fuzzer check for large subexpressions.
2021-10-23 junyer Address a `-Wshadow' warning.
2021-10-19 junyer Don't assume that iterators can be compared.
2021-10-18 junyer Switch back to native C++ rules.
2021-09-02 junyer Crudely limit the use of 'k', 'K', 's' and 'S' when fuzzing.
2021-09-02 junyer Inspect substrings with a Walker<> instead of Prefilter.
2021-08-31 junyer thread_local support in MinGW seems to be buggy.
2021-08-26 junyer Use SRWLOCK_INIT instead of InitializeSRWLock().
2021-08-23 junyer Add Clang 13 to the build matrix.
2021-08-13 junyer Tweak the OnePass versus DFA cutoff.
2021-08-09 junyer Improve the D wrapper details.
2021-08-09 junyer Mention the D wrapper.
2021-08-03 junyer Fix breakage when RE2_USE_ICU is defined.
2021-08-03 junyer Permit Unicode characters beyond ASCII in capture names.
2021-07-24 junyer Further reduce the maximum repeat count when fuzzing.
2021-07-08 junyer Add a SECURITY.md file.
2021-07-07 junyer Note that case-insensitive prefixes are already lowercase.
2021-07-06 junyer Tidy up BuildShiftDFA() a bit more.
2021-07-06 junyer Flip the hot loops to do-while.
2021-07-06 junyer Optimise the hot loop some more for Clang.
2021-07-06 junyer Work around a code generation issue seen with Clang.
2021-07-05 junyer Fix a couple of style nits.
2021-07-04 junyer Fix a bug that affects 32-bit platforms.
2021-07-03 junyer Implement case-insensitive prefix acceleration.
2021-07-02 junyer Add Search_Easy2_Cached* benchmarks.
2021-06-30 junyer Migration from master to main.
2021-06-23 junyer Revert "Yikes. int64_t{1}<<31 doesn't actually make sense."
2021-06-23 junyer Fix GetCachedProg() for OnePass.
2021-06-23 junyer Yikes. int64_t{1}<<31 doesn't actually make sense.
Created with:
roll-dep external/re2
* Roll external/spirv-headers/ eddd4dfc9..b42ba6d92 (2 commits)
eddd4dfc93...b42ba6d92f
$ git log eddd4dfc9..b42ba6d92 --date=short --no-merges --format='%ad %ae %s'
2022-01-17 michael.kinsner Allocate additional loop control bit for upcoming Intel extension
2021-11-16 dragonjoker59 Add ShaderWriter as SPIR-V generation tool.
Created with:
roll-dep external/spirv-headers
Two deps changes branch names, and roll_deps.sh must be updated.
We also don't want the script to fail just because one of the deps is
already up-to-date. Set `+e` before rolling the deps.
Add a pass to spread Volatile semantics to variables with SMIDNV,
WarpIDNV, SubgroupSize, SubgroupLocalInvocationId, SubgroupEqMask,
SubgroupGeMask, SubgroupGtMask, SubgroupLeMask, or SubgroupLtMask BuiltIn
decorations or OpLoad for them when the shader model is the ray
generation, closest hit, miss, intersection, or callable shaders. This
pass can be used for VUID-StandaloneSpirv-VulkanMemoryModel-04678 and
VUID-StandaloneSpirv-VulkanMemoryModel-04679 (See "Standalone SPIR-V
Validation" section of Vulkan spec "Appendix A: Vulkan Environment for
SPIR-V").
Handle variables used by multiple entry points:
1. Update error check to make it working regardless of the order of
entry points.
2. For a variable, if it is used by two entry points E1 and E2 and
it needs the Volatile semantics for E1 while it does not for E2
- If VulkanMemoryModel capability is enabled, which means we have to
set memory operation of load instructions for the variable, we
update load instructions in E1, but do not update the ones in E2.
- If VulkanMemoryModel capability is disabled, which means we have
to add Volatile decoration for the variable, we report an error
because E1 needs to add Volatile decoration for the variable while
E2 does not.
For the simplicity of the implementation, we assume that all functions
other than entry point functions are inlined.
C++20 automatically adds reversed versions of operator overloads for
consideration; in this particular instance this results in infinite
recursion, which has now been pointed out elsewhere as a known issue
when migrating to C++20. Here we just disable one of the overloads in
C++20 mode and let the auto-reversing take care of it for us.
* linker: Address conversion error introduced in earlier rework
Also rework the code slightly to first compute the new ID bound and
validate it, and only then, offset all existing IDs.
This makes those two steps clearer, and avoids potentially overflowing
the IDs within a module (even if that would have been caught later on).
Fixes: c3849565 ("Linker improvements (#4679)")
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/4684
* test/linker: Disable IdsLimit tests for now
They are taking too long to run and results in the CI jobs timing out.
* test/linker: Code factorisation and small tweaks
* linker: Do not fail when going over limits
The limits are minima and implementations or APIs might support higher
limits, so just warn the user about it. And only check for the limits
right before emitting the binary, as limits might change earlier when
removing duplicate instructions, function prototypes, etc.
The only check performed right before merging, is making sure the ID
bound will not overflow the 32 bits following the merge.
Also, use the defines for the limits instead of hard-coding them.
* linker: Require a memory model in each input module
The existing code could run into weird situation. For example, if the
first module had no memory model, it would not emit any memory model
(sort of reasonable) and would accept without complains all possible mix
from later modules as it would not verify them.
* linker: Replace hex version with SPV_SPIRV_VERSION_WORD
* linker: Error out when linking together different versions
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/4135
* tools/linker: Do not write to disk if linking failed
Also, do not consider warnings as errors.
* tools/linker: Fix formatting in help message
* tools/linker: Further clarify the use of --target-env
Also update the text for the default version to reflect the change made
in 7d768812 ("Basic support for SPIR-V 1.6 (#4663)").
* PassManager: Print errors occurring during disassembly
Otherwise one could be greeted by the following text when running
spirv-opt withe the `--print-all` flag:
; IR before pass wrap-opkill
; IR before pass eliminate-dead-branches
; IR before pass merge-return
With this commit, one will instead get:
error: line 143: Invalid opcode: 400
warning: line 0: Disassembly failed before pass wrap-opkill
error: line 143: Invalid opcode: 400
warning: line 0: Disassembly failed before pass eliminate-dead-branches
error: line 143: Invalid opcode: 400
warning: line 0: Disassembly failed before pass merge-return
* PassManager: Use the right target environment when disassembling
Disassembly would fail if features from a newer version of SPIR-V than
1.2 were used.
The comment in `Array::GetExtraHashWords` is misleading because getting
the hash words is split up between the generic `Type::GetHashWords` and
the type specific `Type::GetExtraHashWords`. While `IsSameImpl` is
self-contained. Removing the comment since it is misleading and no
comment is really needed.
Fixes#3248
The test harness for the opt fuzzer was failing to consider that the
input might use a very large id bound, despite no id approaching this
bound actually being used.
This change modifies the test harness to use the module's id bound,
rather than looking through the module for large ids.
Fixes: oss-fuzz:42386
Ensures that instruction's opcode is set to something default when
parsing the module with --preserve-numeric-ids enabled. This avoids
uninitialized accesses and knock-on buffer overflows.
Fixes#4672.
For a shader input/output interface variable of structure type:
If the structure has BuiltIn members, then the structure type
must be Block decorated.
Otherwise, the variable, or the struct members must have locations,
but nothing can have both a location be a BuiltIn.
Implements validation needed to reject the example in
https://github.com/KhronosGroup/SPIRV-Registry/issues/134
* Basic support for SPIR-V 1.6
* Update SPIRV-Headers deps
* Add new environment enum for SPIR-V 1.6
* Make default environment 1.6 for most tools
* Update tests
* Disallow conditional branch with duplicate labels
* Disallow Dim=Buffer with sampled images
* Do not require the non-semantic extension after SPIR-V 1.5
The pass to remove the nonsemantic information and instructions
is used for drivers or tools that may not support them. Debug
information was only partially handle, which is causing a
problem. We need to either fully remove debug information or
not remove it all. Since I can see it being useful to keep the
debug information even when the nonsemantic instructions are
removed, I propose we do not remove debug info.
Fixes https://github.com/KhronosGroup/SPIRV-Tools/issues/4269
In https://github.com/KhronosGroup/SPIRV-Tools/pull/3110, the strip reflect
pass was changed to also remove all explicitly nonsemantic instructions. This
makes it so that the name of the pass no longer reflects what the pass actually
does. This change renames the pass so that it reflects what the pass actaully does.
The upcoming spirv-diff tool also outputs disassembly, although in a
per-instruction basis. This change refactors the disassembler code to
support such a use case.
Use a very large id bound when fuzzing the optimizer, and check that the
input does not ids that are too close to this bound. This should make it
impossible in practice for an id overflow to occur.
Fixes#4657.
* detect iOS with CMAKE_SYSTEM_NAME
IOS_PLATFORM is not a regular variable, it comes from unofficial iOS toolchain
* fix installation of executables if BUNDLE enabled
CMAKE_MACOSX_BUNDLE is enabled by default if CMAKE_SYSTEM_NAME is iOS, tvOS or watchOS.
So installation of executables needs a BUNDLE DESTINATION otherwise configuration fails.
The change in
commit 4ac8e5e541
Author: Greg Fischer <greg@lunarg.com>
Date: Wed Sep 15 12:38:34 2021 -0600
Add preserve_interface mode to aggressive_dead_code_elim (#4520)
Broke the C++ ABI for spirv-tools shared libraries on Linux, for not a great reason.
Restore the previous ABI.
With a change in the VM, the kokoro asan run is failing because it does
not have the correct permissions. Adding the ptrace capability will
hopefully fix that.
* Fix endianness of string literals
To get correct and consistent encoding and decoding of string literals
on big-endian platforms, use spvtools::utils::MakeString and MakeVector
(or wrapper functions) consistently for handling string literals.
- add variant of MakeVector that encodes a string literal into an
existing vector of words
- add variants of MakeString
- add a wrapper spvDecodeLiteralStringOperand in source/
- fix wrapper Operand::AsString to use MakeString (source/opt)
- remove Operand::AsCString as broken and unused
- add a variant of GetOperandAs for string literals (source/val)
... and apply those wrappers throughout the code.
Fixes #149
* Extend round trip test for StringLiterals to flip word order
In the encoding/decoding roundtrip tests for string literals, include
a case that flips byte order in words after encoding and then checks for
successful decoding. That is, on a little-endian host flip to big-endian
byte order and then decode, and vice versa.
* BinaryParseTest.InstructionWithStringOperand: also flip byte order
Test binary parsing of string operands both with the host's and with the
reversed byte order.
Ensures that when an attempt to read a floating-point value from an
input stream fails, the recieving variable for the read does not end up
uninitialised.
Fixes OSS-Fuzz:40432
Fixes#4644
Currently if an ID overflow occurs, spirv-opt (and other users of
IRContext) emits a warning and starts returning 0 when fresh ids are
requested. This tends to lead to crashes - such as null pointer
exceptions. When these arise during fuzzing they lead to auto-reported
bugs.
This change uses an ifdef guard to instead gracefully exit as soon as an
ID overflow occurs when the build is a fuzzing build.
Related issue: #4539.
This prevents CCP from making constant -> constant transitions when
evaluating instruction values. In this case, FClamp is evaluated twice.
On the first evaluation, if computes FClamp(0.5, 0.5, -1) which returns
-1. On the second evaluation, it computes FClamp(0.5, 0.5, VARYING)
which returns 0.5.
Both fold() computations are correct given the semantics of FClamp() but
this causes a lateral transition in the constant lattice which was not
being considered VARYING by CCP.
Along with OpDecorate, also clone the OpDecorateString instructions for
variables created in the descriptor scalar replacement pass.
Fixesmicrosoft/DirectXShaderCompiler#3705
* https://github.com/KhronosGroup/Vulkan-Docs/issues/666 clearly
specified that interfaces do not require an input if there is an
associated output
* ADCE can now remove unused input variables (though they are kept if
the preserve interfaces option is used)
- Mention that `depot_tools` are required and link to that repo.
- Make `roll_deps.sh` exit on error. The script passes `shellcheck`
with this change.
- Reword instruction in the README.