-//===-- CoreCLRGC.cpp - CoreCLR Runtime GC Strategy -----------------------===//\r
-//\r
-// The LLVM Compiler Infrastructure\r
-//\r
-// This file is distributed under the University of Illinois Open Source\r
-// License. See LICENSE.TXT for details.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-//\r
-// This file contains a GCStrategy for the CoreCLR Runtime.\r
-// The strategy is similar to Statepoint-example GC, but differs from it in\r
-// certain aspects, such as:\r
-// 1) Base-pointers need not be explicitly tracked and reported for\r
-// interior pointers\r
-// 2) Uses a different format for encoding stack-maps\r
-// 3) Location of Safe-point polls: polls are only needed before loop-back edges\r
-// and before tail-calls (not needed at function-entry)\r
-//\r
-// The above differences in behavior are to be implemented in upcoming checkins.\r
-//\r
-//===----------------------------------------------------------------------===//\r
-\r
-#include "llvm/CodeGen/GCStrategy.h"\r
-#include "llvm/IR/DerivedTypes.h"\r
-#include "llvm/IR/Value.h"\r
-\r
-using namespace llvm;\r
-\r
-namespace {\r
-class CoreCLRGC : public GCStrategy {\r
-public:\r
- CoreCLRGC() {\r
- UseStatepoints = true;\r
- // These options are all gc.root specific, we specify them so that the\r
- // gc.root lowering code doesn't run.\r
- InitRoots = false;\r
- NeededSafePoints = 0;\r
- UsesMetadata = false;\r
- CustomRoots = false;\r
- }\r
- Optional<bool> isGCManagedPointer(const Value *V) const override {\r
- // Method is only valid on pointer typed values.\r
- PointerType *PT = cast<PointerType>(V->getType());\r
- // We pick addrspace(1) as our GC managed heap. \r
- return (1 == PT->getAddressSpace());\r
- }\r
-};\r
-}\r
-\r
-static GCRegistry::Add<CoreCLRGC> X("coreclr",\r
- "CoreCLR-compatible GC");\r
-\r
-namespace llvm {\r
-void linkCoreCLRGC() {}\r
-}\r
+//===-- CoreCLRGC.cpp - CoreCLR Runtime GC Strategy -----------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains a GCStrategy for the CoreCLR Runtime.
+// The strategy is similar to Statepoint-example GC, but differs from it in
+// certain aspects, such as:
+// 1) Base-pointers need not be explicitly tracked and reported for
+// interior pointers
+// 2) Uses a different format for encoding stack-maps
+// 3) Location of Safe-point polls: polls are only needed before loop-back edges
+// and before tail-calls (not needed at function-entry)
+//
+// The above differences in behavior are to be implemented in upcoming checkins.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/CodeGen/GCStrategy.h"
+#include "llvm/IR/DerivedTypes.h"
+#include "llvm/IR/Value.h"
+
+using namespace llvm;
+
+namespace {
+class CoreCLRGC : public GCStrategy {
+public:
+ CoreCLRGC() {
+ UseStatepoints = true;
+ // These options are all gc.root specific, we specify them so that the
+ // gc.root lowering code doesn't run.
+ InitRoots = false;
+ NeededSafePoints = 0;
+ UsesMetadata = false;
+ CustomRoots = false;
+ }
+ Optional<bool> isGCManagedPointer(const Value *V) const override {
+ // Method is only valid on pointer typed values.
+ PointerType *PT = cast<PointerType>(V->getType());
+ // We pick addrspace(1) as our GC managed heap.
+ return (1 == PT->getAddressSpace());
+ }
+};
+}
+
+static GCRegistry::Add<CoreCLRGC> X("coreclr", "CoreCLR-compatible GC");
+
+namespace llvm {
+void linkCoreCLRGC() {}
+}