diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-10-12 10:30:48 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-12 10:30:48 -0700 |
| commit | 9a231a5efb0ddce635e7e40c2d5b086ff4bd389a (patch) | |
| tree | 7e9d6a2b97928820687fbc04927bf2224964d40f /source/slang/emit.cpp | |
| parent | 28ca4dc60aecc0acda8b364d0553a72d2e6c7964 (diff) | |
Do loop fix (#209)
* Bug fix: emit logic for `do` loops
This case was never tested, and I was outputting some garbage characters. This comit fixes the codegen and adds a test case.
* Bug fix: make sure to pass through `[allow_uav_condition]`
This also fixes the standard library definition of `IncrementCounter()` so that it returns a `uint` instead of `void`.
Diffstat (limited to 'source/slang/emit.cpp')
| -rw-r--r-- | source/slang/emit.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/slang/emit.cpp b/source/slang/emit.cpp index 8483caefc..7d7553bc5 100644 --- a/source/slang/emit.cpp +++ b/source/slang/emit.cpp @@ -2637,6 +2637,10 @@ struct EmitVisitor { Emit("[unroll]"); } + else if(getText(attr->getName()) == "allow_uav_condition") + { + Emit("[allow_uav_condition]"); + } } } @@ -2790,11 +2794,11 @@ struct EmitVisitor { EmitLoopAttributes(doWhileStmt); - Emit("do("); + Emit("do\n"); EmitBlockStmt(doWhileStmt->Statement); Emit(" while("); EmitExpr(doWhileStmt->Predicate); - Emit(")\n"); + Emit(");\n"); return; } else if (auto discardStmt = stmt.As<DiscardStmt>()) |
