summaryrefslogtreecommitdiff
path: root/source/slang/slang-ast-modifier.h
diff options
context:
space:
mode:
authorTim Foley <tfoleyNV@users.noreply.github.com>2021-01-07 12:18:55 -0800
committerGitHub <noreply@github.com>2021-01-07 12:18:55 -0800
commit66d4466d680bcd97b7eb561f08bd6da80a1d6c4e (patch)
treea83e3ee0e2662d2ffc77485ccd77da77da81a5f0 /source/slang/slang-ast-modifier.h
parent92636513abe72d2da0c45f0e2c1235415e0671c3 (diff)
Add support for [noinline] attribute (#1650)
This adds the `[noinline]` attribute to the front-end, and passes it through when generating HLSL output. Notes: * This change doesn't include a test since the dxc version I have locally parses `[noinline]` but then generates DXIL that fails validation. * This change doesn't include logic to handle `[noinline]` for other targets. Notably, SPIR-V has decorations that convey the same intention, but we don't yet take advantage of the GLSL extension(s) that would let us generate those decorations. * By necesstiy, `[noinline]` is only a "strong suggestion" and not actually something the compiler can ever guarantee/enforce.
Diffstat (limited to 'source/slang/slang-ast-modifier.h')
-rw-r--r--source/slang/slang-ast-modifier.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/source/slang/slang-ast-modifier.h b/source/slang/slang-ast-modifier.h
index 55b62483b..3d0c3c6c1 100644
--- a/source/slang/slang-ast-modifier.h
+++ b/source/slang/slang-ast-modifier.h
@@ -937,4 +937,16 @@ class NVAPISlotModifier : public Modifier
String spaceName;
};
+ /// A `[noinline]` attribute represents a request by the application that,
+ /// to the extent possible, a function should not be inlined into call sites.
+ ///
+ /// Note that due to various limitations of different targets, it is entirely
+ /// possible for such functions to be inlined or specialized to call sites.
+ ///
+class NoInlineAttribute : public Attribute
+{
+ SLANG_AST_CLASS(NoInlineAttribute)
+};
+
+
} // namespace Slang