WebKit Bugzilla
Attachment 359342 Details for
Bug 193487
: [WHLSL] Add the statement behavior checker
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-193487-20190116185921.patch (text/plain), 37.16 KB, created by
Myles C. Maxfield
on 2019-01-16 18:59:22 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Myles C. Maxfield
Created:
2019-01-16 18:59:22 PST
Size:
37.16 KB
patch
obsolete
>Subversion Revision: 240099 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 1d6bb13a40b1cb9886233233d75a677886edc7dd..6d36fca79154bf0ab6ed5951dc46b6314dc7bcb6 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,23 @@ >+2019-01-16 Myles C. Maxfield <mmaxfield@apple.com> >+ >+ [WHLSL] Add the statement behavior checker >+ https://bugs.webkit.org/show_bug.cgi?id=193487 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This is a translation of https://github.com/gpuweb/WHLSL/blob/master/Spec/source/index.rst#typing-statements >+ into C++. It is meant to replace the ReturnChecker and UnreachableCodeChecker in the reference implementation. >+ >+ No new tests because it isn't hooked up yet. Not enough of the compiler exists to have any meaningful sort >+ of test. When enough of the compiler is present, I'll port the reference implementation's test suite. >+ >+ * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added. >+ (WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior): >+ (WebCore::WHLSL::checkStatementBehavior): >+ * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Added. >+ * Sources.txt: >+ * WebCore.xcodeproj/project.pbxproj: >+ > 2019-01-16 Myles C. Maxfield <mmaxfield@apple.com> > > [WHLSL] Add the function stage checker >diff --git a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp >deleted file mode 100644 >index ae6850b9b2297f59a566912306cc877951c32a86..0000000000000000000000000000000000000000 >--- a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp >+++ /dev/null >@@ -1,149 +0,0 @@ >-/* >- * Copyright (C) 2019 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >- * THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-#include "config.h" >-#include "WHLSLLoopChecker.h" >- >-#if ENABLE(WEBGPU) >- >-#include "WHLSLBreak.h" >-#include "WHLSLContinue.h" >-#include "WHLSLDoWhileLoop.h" >-#include "WHLSLFallthrough.h" >-#include "WHLSLForLoop.h" >-#include "WHLSLSwitchStatement.h" >-#include "WHLSLVisitor.h" >-#include "WHLSLWhileLoop.h" >-#include <wtf/SetForScope.h> >- >-namespace WebCore { >- >-namespace WHLSL { >- >-// This makes sure that every occurance of "continue," "break," and "fallthrough" appear within the relevant control flow structure. >-class LoopChecker : public Visitor { >-public: >- LoopChecker() = default; >- >- virtual ~LoopChecker() = default; >- >-private: >- void visit(AST::FunctionDefinition& functionDefinition) override >- { >- ASSERT(!m_loopDepth); >- ASSERT(!m_switchDepth); >- Visitor::visit(functionDefinition); >- } >- >- void visit(AST::WhileLoop& whileLoop) override >- { >- checkErrorAndVisit(whileLoop.conditional()); >- >- SetForScope<unsigned> change(m_loopDepth, m_loopDepth + 1); >- checkErrorAndVisit(whileLoop.body()); >- ASSERT(m_loopDepth); >- } >- >- void visit(AST::DoWhileLoop& doWhileLoop) override >- { >- { >- SetForScope<unsigned> change(m_loopDepth, m_loopDepth + 1); >- checkErrorAndVisit(doWhileLoop.body()); >- ASSERT(m_loopDepth); >- } >- >- checkErrorAndVisit(doWhileLoop.conditional()); >- } >- >- void visit(AST::ForLoop& forLoop) override >- { >- WTF::visit(WTF::makeVisitor([&](AST::VariableDeclarationsStatement& variableDeclarationsStatement) { >- checkErrorAndVisit(variableDeclarationsStatement); >- }, [&](UniqueRef<AST::Expression>& expression) { >- checkErrorAndVisit(expression); >- }), forLoop.initialization()); >- if (forLoop.condition()) >- checkErrorAndVisit(*forLoop.condition()); >- if (forLoop.increment()) >- checkErrorAndVisit(*forLoop.increment()); >- >- SetForScope<unsigned> change(m_loopDepth, m_loopDepth + 1); >- checkErrorAndVisit(forLoop.body()); >- ASSERT(m_loopDepth); >- } >- >- void visit(AST::SwitchStatement& switchStatement) override >- { >- checkErrorAndVisit(switchStatement.value()); >- >- SetForScope<unsigned> change(m_switchDepth, m_switchDepth + 1); >- for (auto& switchCase : switchStatement.switchCases()) >- checkErrorAndVisit(switchCase); >- ASSERT(m_switchDepth); >- } >- >- void visit(AST::Break& breakStatement) override >- { >- if (!m_loopDepth && !m_switchDepth) { >- setError(); >- return; >- } >- Visitor::visit(breakStatement); >- } >- >- void visit(AST::Continue& continueStatement) override >- { >- if (!m_loopDepth) { >- setError(); >- return; >- } >- Visitor::visit(continueStatement); >- } >- >- void visit(AST::Fallthrough& fallthroughStatement) override >- { >- if (!m_switchDepth) { >- setError(); >- return; >- } >- Visitor::visit(fallthroughStatement); >- } >- >- unsigned m_loopDepth { 0 }; >- unsigned m_switchDepth { 0 }; >-}; >- >-bool checkLoops(Program& program) >-{ >- LoopChecker loopChecker; >- loopChecker.Visitor::visit(program); >- return !loopChecker.error(); >-} >- >-} // namespace WHLSL >- >-} // namespace WebCore >- >-#endif // ENABLE(WEBGPU) >diff --git a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h >deleted file mode 100644 >index 1fcac67eb969700554d0a1e7033eae2966e12f96..0000000000000000000000000000000000000000 >--- a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLLoopChecker.h >+++ /dev/null >@@ -1,42 +0,0 @@ >-/* >- * Copyright (C) 2019 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >- * THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-#pragma once >- >-#if ENABLE(WEBGPU) >- >-namespace WebCore { >- >-namespace WHLSL { >- >-class Program; >- >-bool checkLoops(Program&); >- >-} >- >-} >- >-#endif >diff --git a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp >new file mode 100644 >index 0000000000000000000000000000000000000000..8a21b96f8f7cd22214f55de65807cffa4801e3c1 >--- /dev/null >+++ b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp >@@ -0,0 +1,252 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#include "config.h" >+#include "WHLSLStatementBehaviorChecker.h" >+ >+#if ENABLE(WEBGPU) >+ >+#include "WHLSLDoWhileLoop.h" >+#include "WHLSLForLoop.h" >+#include "WHLSLIfStatement.h" >+#include "WHLSLInferTypes.h" >+#include "WHLSLProgram.h" >+#include "WHLSLSwitchStatement.h" >+#include "WHLSLWhileLoop.h" >+#include <cstdint> >+#include <wtf/OptionSet.h> >+#include <wtf/Vector.h> >+ >+namespace WebCore { >+ >+namespace WHLSL { >+ >+class StatementBehaviorChecker : public Visitor { >+public: >+ enum class Behavior : uint8_t { >+ Return = 1 << 0, >+ Break = 1 << 1, >+ Continue = 1 << 2, >+ Fallthrough = 1 << 3, >+ Nothing = 1 << 4 >+ }; >+ >+ OptionSet<Behavior> takeFunctionBehavior() >+ { >+ ASSERT(m_stack.size() == 1); >+ return m_stack.takeLast(); >+ } >+ >+private: >+ void visit(AST::Break&) override >+ { >+ m_stack.append({ Behavior::Break }); >+ } >+ >+ void visit(AST::Fallthrough&) override >+ { >+ m_stack.append({ Behavior::Fallthrough }); >+ } >+ >+ void visit(AST::Continue&) override >+ { >+ m_stack.append({ Behavior::Continue }); >+ } >+ >+ void visit(AST::Return&) override >+ { >+ m_stack.append({ Behavior::Return }); >+ } >+ >+ void visit(AST::Trap&) override >+ { >+ m_stack.append({ Behavior::Return }); >+ } >+ >+ void visit(AST::DoWhileLoop& doWhileLoop) override >+ { >+ checkErrorAndVisit(doWhileLoop.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ b.remove(Behavior::Break); >+ b.remove(Behavior::Continue); >+ // FIXME: The spec says to add "Nothing" here, but I think the spec is wrong. >+ b.add(Behavior::Nothing); >+ m_stack.append(b); >+ } >+ >+ void visit(AST::ForLoop& forLoop) override >+ { >+ auto initialization = WTF::visit(WTF::makeVisitor([&](AST::VariableDeclarationsStatement& variableDeclarationsStatement) -> Optional<OptionSet<Behavior>> { >+ checkErrorAndVisit(variableDeclarationsStatement); >+ if (error()) >+ return WTF::nullopt; >+ return m_stack.takeLast(); >+ }, [&](UniqueRef<AST::Expression>&) -> Optional<OptionSet<Behavior>> { >+ return { Behavior::Nothing }; >+ }), forLoop.initialization()); >+ if (!initialization) >+ return; >+ >+ checkErrorAndVisit(forLoop.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ b.remove(Behavior::Break); >+ b.remove(Behavior::Continue); >+ b.add(Behavior::Nothing); >+ m_stack.append(OptionSet<Behavior>::fromRaw(initialization->toRaw() | b.toRaw())); >+ } >+ >+ void visit(AST::WhileLoop& whileLoop) override >+ { >+ checkErrorAndVisit(whileLoop.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ b.remove(Behavior::Break); >+ b.remove(Behavior::Continue); >+ b.add(Behavior::Nothing); >+ m_stack.append(b); >+ } >+ >+ void visit(AST::SwitchCase& switchCase) override >+ { >+ Visitor::visit(switchCase); >+ } >+ >+ void visit(AST::SwitchStatement& switchStatement) override >+ { >+ if (switchStatement.switchCases().isEmpty()) { >+ m_stack.append({ Behavior::Nothing }); >+ return; >+ } >+ >+ OptionSet<Behavior> reduction = { }; >+ for (auto& switchCase : switchStatement.switchCases()) { >+ checkErrorAndVisit(switchCase); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ reduction = OptionSet<Behavior>::fromRaw(reduction.toRaw() | b.toRaw()); >+ } >+ if (reduction.contains(Behavior::Nothing)) { >+ setError(); >+ return; >+ } >+ reduction.remove(Behavior::Break); >+ reduction.remove(Behavior::Fallthrough); >+ // FIXME: The spec says to add "Nothing" here, but I think the spec is wrong. >+ reduction.add(Behavior::Nothing); >+ m_stack.append(reduction); >+ } >+ void visit(AST::IfStatement& ifStatement) override >+ { >+ checkErrorAndVisit(ifStatement.body()); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ OptionSet<Behavior> bPrime; >+ if (ifStatement.elseBody()) { >+ checkErrorAndVisit(*ifStatement.elseBody()); >+ if (error()) >+ return; >+ bPrime = m_stack.takeLast(); >+ } else >+ bPrime = { Behavior::Nothing }; >+ m_stack.append(OptionSet<Behavior>::fromRaw(b.toRaw() | bPrime.toRaw())); >+ } >+ >+ void visit(AST::EffectfulExpressionStatement&) override >+ { >+ m_stack.append({ Behavior::Nothing }); >+ } >+ >+ void visit(AST::Block& block) override >+ { >+ if (block.statements().isEmpty()) { >+ m_stack.append({ Behavior::Nothing }); >+ return; >+ } >+ >+ OptionSet<Behavior> reduction = { }; >+ for (size_t i = 0; i < block.statements().size() - 1; ++i) { >+ checkErrorAndVisit(block.statements()[i]); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ if (!b.contains(Behavior::Nothing)) { >+ setError(); >+ return; >+ } >+ b.remove(Behavior::Nothing); >+ if (b.contains(Behavior::Fallthrough)) { >+ setError(); >+ return; >+ } >+ reduction = OptionSet<Behavior>::fromRaw(reduction.toRaw() | b.toRaw()); >+ } >+ checkErrorAndVisit(block.statements()[block.statements().size() - 1]); >+ if (error()) >+ return; >+ auto b = m_stack.takeLast(); >+ m_stack.append(OptionSet<Behavior>::fromRaw(reduction.toRaw() | b.toRaw())); >+ } >+ >+ void visit(AST::VariableDeclarationsStatement&) override >+ { >+ m_stack.append({ Behavior::Nothing }); >+ } >+ >+ Vector<OptionSet<Behavior>> m_stack; >+}; >+ >+bool checkStatementBehavior(Program& program) >+{ >+ StatementBehaviorChecker statementBehaviorChecker; >+ for (auto& functionDefinition : program.functionDefinitions()) { >+ statementBehaviorChecker.Visitor::visit(functionDefinition); >+ if (statementBehaviorChecker.error()) >+ return false; >+ auto behavior = statementBehaviorChecker.takeFunctionBehavior(); >+ if (matches(functionDefinition->type(), program.intrinsics().voidType())) { >+ behavior.remove(StatementBehaviorChecker::Behavior::Return); >+ behavior.remove(StatementBehaviorChecker::Behavior::Nothing); >+ if (behavior != OptionSet<StatementBehaviorChecker::Behavior>()) >+ return false; >+ } else { >+ if (behavior != StatementBehaviorChecker::Behavior::Return) >+ return false; >+ } >+ } >+ return true; >+} >+ >+} // namespace WHLSL >+ >+} // namespace WebCore >+ >+#endif // ENABLE(WEBGPU) >diff --git a/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h >new file mode 100644 >index 0000000000000000000000000000000000000000..aecdfe61fa802a2b44543a016b1d04e26e74b3ec >--- /dev/null >+++ b/Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h >@@ -0,0 +1,42 @@ >+/* >+ * Copyright (C) 2019 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >+ * THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+ >+#pragma once >+ >+#if ENABLE(WEBGPU) >+ >+namespace WebCore { >+ >+namespace WHLSL { >+ >+class Program; >+ >+bool checkStatementBehavior(Program&); >+ >+} >+ >+} >+ >+#endif >diff --git a/Source/WebCore/Sources.txt b/Source/WebCore/Sources.txt >index b6124192ce94452f6d1fe4bbf309fcdac41b472a..dc2e4bf0dd776e2dc2ae9ca1ac009057b1b7231f 100644 >--- a/Source/WebCore/Sources.txt >+++ b/Source/WebCore/Sources.txt >@@ -318,6 +318,7 @@ Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp > Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp > Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp > Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp >+Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp > Modules/webgpu/WHLSL/WHLSLNameContext.cpp > Modules/webgpu/WHLSL/WHLSLNameResolver.cpp > Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp >@@ -325,7 +326,6 @@ Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp > Modules/webgpu/WHLSL/WHLSLVisitor.cpp > Modules/webgpu/WHLSL/WHLSLLiteralTypeChecker.cpp > Modules/webgpu/WHLSL/WHLSLHighZombieFinder.cpp >-Modules/webgpu/WHLSL/WHLSLLoopChecker.cpp > Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp > Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.cpp > Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.cpp >diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >index c498fa8a2bfefd5c7903115bf23708966f924115..bed848bb73eef68ae39f1dbd177e371ddda0947e 100644 >--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj >+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj >@@ -6427,17 +6427,14 @@ > 1C840B9A21EC400900D0500D /* WHLSLGatherEntryPointItems.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLGatherEntryPointItems.h; sourceTree = "<group>"; }; > 1C840B9B21EC400900D0500D /* WHLSLChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLChecker.cpp; sourceTree = "<group>"; }; > 1C904DF90BA9D2C80081E9D0 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; }; >- 1CA0C2E421EED12A00A11860 /* WHLSLFunctionStageChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLFunctionStageChecker.cpp; sourceTree = "<group>"; }; >- 1CA0C2E521EED12A00A11860 /* WHLSLFunctionStageChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLFunctionStageChecker.h; sourceTree = "<group>"; }; >+ 1C9AE5CA21ED9DF50069D5F2 /* WHLSLHighZombieFinder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLHighZombieFinder.cpp; sourceTree = "<group>"; }; >+ 1C9AE5CB21ED9DF50069D5F2 /* WHLSLHighZombieFinder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLHighZombieFinder.h; sourceTree = "<group>"; }; > 1CA0C2DE21EEB5F400A11860 /* WHLSLRecursionChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLRecursionChecker.h; sourceTree = "<group>"; }; > 1CA0C2E021EEB5F500A11860 /* WHLSLRecursionChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLRecursionChecker.cpp; sourceTree = "<group>"; }; >+ 1CA0C2E421EED12A00A11860 /* WHLSLFunctionStageChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLFunctionStageChecker.cpp; sourceTree = "<group>"; }; >+ 1CA0C2E521EED12A00A11860 /* WHLSLFunctionStageChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLFunctionStageChecker.h; sourceTree = "<group>"; }; > 1CA0C2EA21EED6F500A11860 /* WHLSLLiteralTypeChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLLiteralTypeChecker.h; sourceTree = "<group>"; }; > 1CA0C2EC21EED6F600A11860 /* WHLSLLiteralTypeChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLLiteralTypeChecker.cpp; sourceTree = "<group>"; }; >- 1C9AE5CA21ED9DF50069D5F2 /* WHLSLHighZombieFinder.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLHighZombieFinder.cpp; sourceTree = "<group>"; }; >- 1C9AE5CB21ED9DF50069D5F2 /* WHLSLHighZombieFinder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLHighZombieFinder.h; sourceTree = "<group>"; }; >- 1CA0C2F421EEDAD000A11860 /* WHLSLLoopChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLLoopChecker.cpp; sourceTree = "<group>"; }; >- 1CA0C2F521EEDAD100A11860 /* WHLSLLoopChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLLoopChecker.h; sourceTree = "<group>"; }; >- 1CA0C2F621EEDAD200A11860 /* AST */ = {isa = PBXFileReference; lastKnownFileType = folder; path = AST; sourceTree = "<group>"; }; > 1CA19E030DC255950065A994 /* EventLoopMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EventLoopMac.mm; sourceTree = "<group>"; }; > 1CA19E150DC255CA0065A994 /* EventLoop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventLoop.h; sourceTree = "<group>"; }; > 1CAF347E0A6C405200ABE06E /* WebScriptObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebScriptObject.h; sourceTree = "<group>"; }; >@@ -13384,6 +13381,8 @@ > C234A9B521E92C23003C984D /* WHLSLSynthesizeStructureAccessors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLSynthesizeStructureAccessors.h; sourceTree = "<group>"; }; > C234A9B621E92CC0003C984D /* WHLSLIntrinsics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLIntrinsics.h; sourceTree = "<group>"; }; > C234A9B721E92CC1003C984D /* WHLSLIntrinsics.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLIntrinsics.cpp; sourceTree = "<group>"; }; >+ C234A9C921EF2C77003C984D /* WHLSLStatementBehaviorChecker.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WHLSLStatementBehaviorChecker.cpp; sourceTree = "<group>"; }; >+ C234A9CA21EF2C77003C984D /* WHLSLStatementBehaviorChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WHLSLStatementBehaviorChecker.h; sourceTree = "<group>"; }; > C2458E611FE8979E00594759 /* FontCacheCoreText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FontCacheCoreText.h; sourceTree = "<group>"; }; > C26017A11C72DC9900F74A16 /* CSSFontFaceSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSFontFaceSet.cpp; sourceTree = "<group>"; }; > C26017A21C72DC9900F74A16 /* CSSFontFaceSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSFontFaceSet.h; sourceTree = "<group>"; }; >@@ -17032,6 +17031,100 @@ > tabWidth = 8; > usesTabs = 0; > }; >+ 1CA0C2F621EEDAD200A11860 /* AST */ = { >+ isa = PBXGroup; >+ children = ( >+ 1C840B9021EC30F900D0500D /* WHLSLAddressSpace.h */, >+ C21BF72521CD89E200227979 /* WHLSLArrayReferenceType.h */, >+ C21BF70921CD89CA00227979 /* WHLSLArrayType.h */, >+ C21BF73021CD89ED00227979 /* WHLSLAssignmentExpression.h */, >+ C21BF70A21CD89CB00227979 /* WHLSLBaseFunctionAttribute.h */, >+ C21BF6FA21CD89BE00227979 /* WHLSLBaseSemantic.h */, >+ C21BF71E21CD89DC00227979 /* WHLSLBlock.h */, >+ C21BF6F621CD89B700227979 /* WHLSLBooleanLiteral.h */, >+ C21BF71A21CD89D800227979 /* WHLSLBreak.h */, >+ C2138A1321DDECD300F516BA /* WHLSLBuiltInSemantic.cpp */, >+ C21BF72221CD89DF00227979 /* WHLSLBuiltInSemantic.h */, >+ C21BF71621CD89D500227979 /* WHLSLCallExpression.h */, >+ C21BF70621CD89C700227979 /* WHLSLCommaExpression.h */, >+ C21BF73321CD89F000227979 /* WHLSLConstantExpression.h */, >+ C21BF6F521CD89B500227979 /* WHLSLContinue.h */, >+ C21BF70121CD89C400227979 /* WHLSLDereferenceExpression.h */, >+ C21BF71821CD89D700227979 /* WHLSLDotExpression.h */, >+ C21BF6FB21CD89BE00227979 /* WHLSLDoWhileLoop.h */, >+ C21BF72821CD89E500227979 /* WHLSLEffectfulExpressionStatement.h */, >+ 1C840B7D21EBE0B800D0500D /* WHLSLEntryPointType.h */, >+ C21BF72021CD89DD00227979 /* WHLSLEnumerationDefinition.h */, >+ C21BF72621CD89E300227979 /* WHLSLEnumerationMember.h */, >+ C21BF70221CD89C400227979 /* WHLSLEnumerationMemberLiteral.h */, >+ C21BF70C21CD89CC00227979 /* WHLSLExpression.h */, >+ C21BF70021CD89C200227979 /* WHLSLFallthrough.h */, >+ C21BF73521CD89F200227979 /* WHLSLFloatLiteral.h */, >+ 1CB69B3821DF03E1006E846A /* WHLSLFloatLiteralType.cpp */, >+ 1CB69B3421DED63A006E846A /* WHLSLFloatLiteralType.h */, >+ C21BF73421CD89F100227979 /* WHLSLForLoop.h */, >+ C21BF70521CD89C700227979 /* WHLSLFunctionAttribute.h */, >+ C21BF6FD21CD89C000227979 /* WHLSLFunctionDeclaration.h */, >+ C21BF6F421CD89B300227979 /* WHLSLFunctionDefinition.h */, >+ C21BF6FF21CD89C200227979 /* WHLSLIfStatement.h */, >+ C21BF6F721CD89B900227979 /* WHLSLIndexExpression.h */, >+ C20F4F6621DFF2360070C45A /* WHLSLIntegerLiteral.cpp */, >+ C21BF6F821CD89BB00227979 /* WHLSLIntegerLiteral.h */, >+ 1CB69B3921DF03F3006E846A /* WHLSLIntegerLiteralType.cpp */, >+ 1CB69B3521DED649006E846A /* WHLSLIntegerLiteralType.h */, >+ C21BF73221CD89EF00227979 /* WHLSLLogicalExpression.h */, >+ C21BF71521CD89D400227979 /* WHLSLLogicalNotExpression.h */, >+ C21BF72D21CD89E900227979 /* WHLSLMakeArrayReferenceExpression.h */, >+ C21BF72C21CD89E900227979 /* WHLSLMakePointerExpression.h */, >+ 1C33277121CF0BE1000DC9F2 /* WHLSLNamedType.h */, >+ C21BF72321CD89E100227979 /* WHLSLNativeFunctionDeclaration.h */, >+ C21BF72A21CD89E700227979 /* WHLSLNativeTypeDeclaration.h */, >+ C21BF72421CD89E100227979 /* WHLSLNode.h */, >+ C21BF70721CD89C800227979 /* WHLSLNullLiteral.h */, >+ 1CB69B3A21DF0403006E846A /* WHLSLNullLiteralType.cpp */, >+ 1CB69B3621DED657006E846A /* WHLSLNullLiteralType.h */, >+ C21BF72121CD89DE00227979 /* WHLSLNumThreadsFunctionAttribute.h */, >+ C21BF72F21CD89EC00227979 /* WHLSLPointerType.h */, >+ C21BF72E21CD89EA00227979 /* WHLSLPropertyAccessExpression.h */, >+ C21BF70B21CD89CC00227979 /* WHLSLQualifier.h */, >+ C21BF71B21CD89D900227979 /* WHLSLReadModifyWriteExpression.h */, >+ C21BF70D21CD89CD00227979 /* WHLSLReferenceType.h */, >+ 1CB69B3221DED40B006E846A /* WHLSLResolvableType.h */, >+ C2138A1521DDECE900F516BA /* WHLSLResourceSemantic.cpp */, >+ C21BF70821CD89C900227979 /* WHLSLResourceSemantic.h */, >+ C21BF70321CD89C500227979 /* WHLSLReturn.h */, >+ C21BF6F921CD89BD00227979 /* WHLSLSemantic.h */, >+ C2138A1621DDECFB00F516BA /* WHLSLSpecializationConstantSemantic.cpp */, >+ C21BF73621CD89F300227979 /* WHLSLSpecializationConstantSemantic.h */, >+ C2138A1721DDED0D00F516BA /* WHLSLStageInOutSemantic.cpp */, >+ C21BF70E21CD89CE00227979 /* WHLSLStageInOutSemantic.h */, >+ C21BF71221CD89D100227979 /* WHLSLStatement.h */, >+ C21BF72721CD89E400227979 /* WHLSLStructureDefinition.h */, >+ C21BF6FE21CD89C100227979 /* WHLSLStructureElement.h */, >+ C21BF71921CD89D700227979 /* WHLSLSwitchCase.h */, >+ C21BF73121CD89EE00227979 /* WHLSLSwitchStatement.h */, >+ C21BF71C21CD89DA00227979 /* WHLSLTernaryExpression.h */, >+ C21BF6F321CD89AD00227979 /* WHLSLTrap.h */, >+ C21BF71D21CD89DB00227979 /* WHLSLType.h */, >+ C288C72D21C991DA002DF5CA /* WHLSLTypeArgument.cpp */, >+ C21BF71121CD89D100227979 /* WHLSLTypeArgument.h */, >+ C21BF72921CD89E600227979 /* WHLSLTypeDefinition.h */, >+ C20F4F6421DFBE5C0070C45A /* WHLSLTypeReference.cpp */, >+ C21BF71F21CD89DC00227979 /* WHLSLTypeReference.h */, >+ 1C33277221CF0D2E000DC9F2 /* WHLSLUnnamedType.h */, >+ C20F4F6721DFF3A70070C45A /* WHLSLUnsignedIntegerLiteral.cpp */, >+ C21BF72B21CD89E800227979 /* WHLSLUnsignedIntegerLiteral.h */, >+ 1CB69B3B21DF041E006E846A /* WHLSLUnsignedIntegerLiteralType.cpp */, >+ 1CB69B3721DED66B006E846A /* WHLSLUnsignedIntegerLiteralType.h */, >+ C21BF6FC21CD89BF00227979 /* WHLSLValue.h */, >+ C21BF71021CD89D000227979 /* WHLSLVariableDeclaration.h */, >+ C21BF71421CD89D300227979 /* WHLSLVariableDeclarationsStatement.h */, >+ C21BF71321CD89D200227979 /* WHLSLVariableReference.h */, >+ C21BF70421CD89C600227979 /* WHLSLWhileLoop.h */, >+ ); >+ path = AST; >+ sourceTree = "<group>"; >+ }; > 1CDD44660BA9C80000F90147 /* Configurations */ = { > isa = PBXGroup; > children = ( >@@ -25477,8 +25570,6 @@ > C210E91221B4BD1000B7F83D /* WHLSLLexer.h */, > 1CA0C2EC21EED6F600A11860 /* WHLSLLiteralTypeChecker.cpp */, > 1CA0C2EA21EED6F500A11860 /* WHLSLLiteralTypeChecker.h */, >- 1CA0C2F421EEDAD000A11860 /* WHLSLLoopChecker.cpp */, >- 1CA0C2F521EEDAD100A11860 /* WHLSLLoopChecker.h */, > C234A98D21E88884003C984D /* WHLSLNameContext.cpp */, > C234A98E21E88885003C984D /* WHLSLNameContext.h */, > C234A98A21E8883E003C984D /* WHLSLNameResolver.cpp */, >@@ -25494,6 +25585,8 @@ > C234A99721E90F28003C984D /* WHLSLResolveOverloadImpl.h */, > C234A99D21E910BD003C984D /* WHLSLResolvingType.h */, > C21BF74521CD969800227979 /* WHLSLStandardLibrary.txt */, >+ C234A9C921EF2C77003C984D /* WHLSLStatementBehaviorChecker.cpp */, >+ C234A9CA21EF2C77003C984D /* WHLSLStatementBehaviorChecker.h */, > C234A9A921E92C17003C984D /* WHLSLSynthesizeArrayOperatorLength.cpp */, > C234A9AF21E92C1B003C984D /* WHLSLSynthesizeArrayOperatorLength.h */, > C234A9B021E92C1C003C984D /* WHLSLSynthesizeConstructors.cpp */, >@@ -25508,100 +25601,6 @@ > path = WHLSL; > sourceTree = "<group>"; > }; >- 1CA0C2F621EEDAD200A11860 /* AST */ = { >- isa = PBXGroup; >- children = ( >- 1C840B9021EC30F900D0500D /* WHLSLAddressSpace.h */, >- C21BF72521CD89E200227979 /* WHLSLArrayReferenceType.h */, >- C21BF70921CD89CA00227979 /* WHLSLArrayType.h */, >- C21BF73021CD89ED00227979 /* WHLSLAssignmentExpression.h */, >- C21BF70A21CD89CB00227979 /* WHLSLBaseFunctionAttribute.h */, >- C21BF6FA21CD89BE00227979 /* WHLSLBaseSemantic.h */, >- C21BF71E21CD89DC00227979 /* WHLSLBlock.h */, >- C21BF6F621CD89B700227979 /* WHLSLBooleanLiteral.h */, >- C21BF71A21CD89D800227979 /* WHLSLBreak.h */, >- C2138A1321DDECD300F516BA /* WHLSLBuiltInSemantic.cpp */, >- C21BF72221CD89DF00227979 /* WHLSLBuiltInSemantic.h */, >- C21BF71621CD89D500227979 /* WHLSLCallExpression.h */, >- C21BF70621CD89C700227979 /* WHLSLCommaExpression.h */, >- C21BF73321CD89F000227979 /* WHLSLConstantExpression.h */, >- C21BF6F521CD89B500227979 /* WHLSLContinue.h */, >- C21BF70121CD89C400227979 /* WHLSLDereferenceExpression.h */, >- C21BF71821CD89D700227979 /* WHLSLDotExpression.h */, >- C21BF6FB21CD89BE00227979 /* WHLSLDoWhileLoop.h */, >- C21BF72821CD89E500227979 /* WHLSLEffectfulExpressionStatement.h */, >- 1C840B7D21EBE0B800D0500D /* WHLSLEntryPointType.h */, >- C21BF72021CD89DD00227979 /* WHLSLEnumerationDefinition.h */, >- C21BF72621CD89E300227979 /* WHLSLEnumerationMember.h */, >- C21BF70221CD89C400227979 /* WHLSLEnumerationMemberLiteral.h */, >- C21BF70C21CD89CC00227979 /* WHLSLExpression.h */, >- C21BF70021CD89C200227979 /* WHLSLFallthrough.h */, >- C21BF73521CD89F200227979 /* WHLSLFloatLiteral.h */, >- 1CB69B3821DF03E1006E846A /* WHLSLFloatLiteralType.cpp */, >- 1CB69B3421DED63A006E846A /* WHLSLFloatLiteralType.h */, >- C21BF73421CD89F100227979 /* WHLSLForLoop.h */, >- C21BF70521CD89C700227979 /* WHLSLFunctionAttribute.h */, >- C21BF6FD21CD89C000227979 /* WHLSLFunctionDeclaration.h */, >- C21BF6F421CD89B300227979 /* WHLSLFunctionDefinition.h */, >- C21BF6FF21CD89C200227979 /* WHLSLIfStatement.h */, >- C21BF6F721CD89B900227979 /* WHLSLIndexExpression.h */, >- C20F4F6621DFF2360070C45A /* WHLSLIntegerLiteral.cpp */, >- C21BF6F821CD89BB00227979 /* WHLSLIntegerLiteral.h */, >- 1CB69B3921DF03F3006E846A /* WHLSLIntegerLiteralType.cpp */, >- 1CB69B3521DED649006E846A /* WHLSLIntegerLiteralType.h */, >- C21BF73221CD89EF00227979 /* WHLSLLogicalExpression.h */, >- C21BF71521CD89D400227979 /* WHLSLLogicalNotExpression.h */, >- C21BF72D21CD89E900227979 /* WHLSLMakeArrayReferenceExpression.h */, >- C21BF72C21CD89E900227979 /* WHLSLMakePointerExpression.h */, >- 1C33277121CF0BE1000DC9F2 /* WHLSLNamedType.h */, >- C21BF72321CD89E100227979 /* WHLSLNativeFunctionDeclaration.h */, >- C21BF72A21CD89E700227979 /* WHLSLNativeTypeDeclaration.h */, >- C21BF72421CD89E100227979 /* WHLSLNode.h */, >- C21BF70721CD89C800227979 /* WHLSLNullLiteral.h */, >- 1CB69B3A21DF0403006E846A /* WHLSLNullLiteralType.cpp */, >- 1CB69B3621DED657006E846A /* WHLSLNullLiteralType.h */, >- C21BF72121CD89DE00227979 /* WHLSLNumThreadsFunctionAttribute.h */, >- C21BF72F21CD89EC00227979 /* WHLSLPointerType.h */, >- C21BF72E21CD89EA00227979 /* WHLSLPropertyAccessExpression.h */, >- C21BF70B21CD89CC00227979 /* WHLSLQualifier.h */, >- C21BF71B21CD89D900227979 /* WHLSLReadModifyWriteExpression.h */, >- C21BF70D21CD89CD00227979 /* WHLSLReferenceType.h */, >- 1CB69B3221DED40B006E846A /* WHLSLResolvableType.h */, >- C2138A1521DDECE900F516BA /* WHLSLResourceSemantic.cpp */, >- C21BF70821CD89C900227979 /* WHLSLResourceSemantic.h */, >- C21BF70321CD89C500227979 /* WHLSLReturn.h */, >- C21BF6F921CD89BD00227979 /* WHLSLSemantic.h */, >- C2138A1621DDECFB00F516BA /* WHLSLSpecializationConstantSemantic.cpp */, >- C21BF73621CD89F300227979 /* WHLSLSpecializationConstantSemantic.h */, >- C2138A1721DDED0D00F516BA /* WHLSLStageInOutSemantic.cpp */, >- C21BF70E21CD89CE00227979 /* WHLSLStageInOutSemantic.h */, >- C21BF71221CD89D100227979 /* WHLSLStatement.h */, >- C21BF72721CD89E400227979 /* WHLSLStructureDefinition.h */, >- C21BF6FE21CD89C100227979 /* WHLSLStructureElement.h */, >- C21BF71921CD89D700227979 /* WHLSLSwitchCase.h */, >- C21BF73121CD89EE00227979 /* WHLSLSwitchStatement.h */, >- C21BF71C21CD89DA00227979 /* WHLSLTernaryExpression.h */, >- C21BF6F321CD89AD00227979 /* WHLSLTrap.h */, >- C21BF71D21CD89DB00227979 /* WHLSLType.h */, >- C288C72D21C991DA002DF5CA /* WHLSLTypeArgument.cpp */, >- C21BF71121CD89D100227979 /* WHLSLTypeArgument.h */, >- C21BF72921CD89E600227979 /* WHLSLTypeDefinition.h */, >- C20F4F6421DFBE5C0070C45A /* WHLSLTypeReference.cpp */, >- C21BF71F21CD89DC00227979 /* WHLSLTypeReference.h */, >- 1C33277221CF0D2E000DC9F2 /* WHLSLUnnamedType.h */, >- C20F4F6721DFF3A70070C45A /* WHLSLUnsignedIntegerLiteral.cpp */, >- C21BF72B21CD89E800227979 /* WHLSLUnsignedIntegerLiteral.h */, >- 1CB69B3B21DF041E006E846A /* WHLSLUnsignedIntegerLiteralType.cpp */, >- 1CB69B3721DED66B006E846A /* WHLSLUnsignedIntegerLiteralType.h */, >- C21BF6FC21CD89BF00227979 /* WHLSLValue.h */, >- C21BF71021CD89D000227979 /* WHLSLVariableDeclaration.h */, >- C21BF71421CD89D300227979 /* WHLSLVariableDeclarationsStatement.h */, >- C21BF71321CD89D200227979 /* WHLSLVariableReference.h */, >- C21BF70421CD89C600227979 /* WHLSLWhileLoop.h */, >- ); >- path = AST; >- sourceTree = "<group>"; >- }; > C96F5EBF1B5872260091EA9D /* mediasession */ = { > isa = PBXGroup; > children = (
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193487
:
359262
|
359342
|
359564
|
359645