[lld] Allow args::getInterger to parse args larger than 2^31-1
authorSam Clegg <sbc@chromium.org>
Fri, 7 Jun 2019 06:05:26 +0000 (06:05 +0000)
committerSam Clegg <sbc@chromium.org>
Fri, 7 Jun 2019 06:05:26 +0000 (06:05 +0000)
Differential Revision: https://reviews.llvm.org/D62933

llvm-svn: 362770

lld/Common/Args.cpp
lld/include/lld/Common/Args.h
lld/test/wasm/large-memory.test [new file with mode: 0644]

index b57b940..0691189 100644 (file)
@@ -26,12 +26,13 @@ CodeGenOpt::Level lld::args::getCGOptLevel(int OptLevelLTO) {
   return CodeGenOpt::Default;
 }
 
-int lld::args::getInteger(opt::InputArgList &Args, unsigned Key, int Default) {
+int64_t lld::args::getInteger(opt::InputArgList &Args, unsigned Key,
+                              int64_t Default) {
   auto *A = Args.getLastArg(Key);
   if (!A)
     return Default;
 
-  int V;
+  int64_t V;
   if (to_integer(A->getValue(), V, 10))
     return V;
 
index d943646..cf8002d 100644 (file)
@@ -25,7 +25,8 @@ namespace args {
 
 llvm::CodeGenOpt::Level getCGOptLevel(int OptLevelLTO);
 
-int getInteger(llvm::opt::InputArgList &Args, unsigned Key, int Default);
+int64_t getInteger(llvm::opt::InputArgList &Args, unsigned Key,
+                   int64_t Default);
 
 std::vector<StringRef> getStrings(llvm::opt::InputArgList &Args, int Id);
 
diff --git a/lld/test/wasm/large-memory.test b/lld/test/wasm/large-memory.test
new file mode 100644 (file)
index 0000000..8d403b5
--- /dev/null
@@ -0,0 +1,5 @@
+RUN: llc -filetype=obj %p/Inputs/start.ll -o %t.o
+
+; Verify we can parse large integers such as when we ask for 2G of total
+; memory.
+RUN: wasm-ld %t.o -o %t.wasm --max-memory=2147483648