summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit-c-like.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-emit-c-like.cpp')
-rw-r--r--source/slang/slang-emit-c-like.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/source/slang/slang-emit-c-like.cpp b/source/slang/slang-emit-c-like.cpp
index 141a843f2..b2dc9b014 100644
--- a/source/slang/slang-emit-c-like.cpp
+++ b/source/slang/slang-emit-c-like.cpp
@@ -1109,9 +1109,25 @@ void CLikeSourceEmitter::appendScrubbedName(const UnownedStringSlice& name, Stri
}
}
+inline String CLikeSourceEmitter::maybeMakeEntryPointNameValid(String name, DiagnosticSink* sink)
+{
+ if (isCPUTarget(getTargetReq()) || isCUDATarget(getTargetReq()) ||
+ isMetalTarget(getTargetReq()))
+ {
+ if (name == "main")
+ {
+ String newName = _generateUniqueName(name.getUnownedSlice());
+ sink->diagnose(SourceLoc(), Diagnostics::mainEntryPointRenamed, name, newName);
+ return newName;
+ }
+ }
+ return name;
+}
+
String CLikeSourceEmitter::generateEntryPointNameImpl(IREntryPointDecoration* entryPointDecor)
{
- return entryPointDecor->getName()->getStringSlice();
+ String name = entryPointDecor->getName()->getStringSlice();
+ return maybeMakeEntryPointNameValid(name, getSink());
}
String CLikeSourceEmitter::_generateUniqueName(const UnownedStringSlice& name)