Skip to content

Commit b131520

Browse files
JinkelaLFsWang
authored andcommitted
[Misc] update llvm version to 12
1 parent b7f0911 commit b131520

File tree

11 files changed

+65
-15
lines changed

11 files changed

+65
-15
lines changed

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ include_directories(BEFORE
4444
include_directories("${LLVM_BINARY_DIR}/include" "${LLVM_INCLUDE_DIR}")
4545
link_directories("${LLVM_LIBRARY_DIR}")
4646

47+
set(THREADS_PREFER_PTHREAD_FLAG ON)
48+
find_package(Threads REQUIRED)
49+
4750
set(CMAKE_CXX_STANDARD 17)
4851
set(CMAKE_CXX_EXTENSIONS OFF)
4952
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")

include/soll/AST/ASTContext.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#include "soll/Frontend/FrontendOptions.h"
55
#include <llvm/ADT/APInt.h>
66
#include <llvm/ADT/IntrusiveRefCntPtr.h>
7+
#include <llvm/ADT/StringMap.h>
78
#include <llvm/IR/Value.h>
8-
99
namespace soll {
1010

1111
class ASTContext : public llvm::RefCountedBase<ASTContext> {

include/soll/Basic/FileManager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
#pragma once
33
#include "soll/Basic/FileSystemOptions.h"
44
#include <llvm/ADT/IntrusiveRefCntPtr.h>
5+
#include <llvm/ADT/StringMap.h>
6+
#include <llvm/Support/Allocator.h>
57
#include <llvm/Support/VirtualFileSystem.h>
68
#include <map>
79
#include <memory>

include/soll/Basic/IdentifierTable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "soll/Basic/TokenKinds.h"
44
#include <llvm/ADT/StringMap.h>
55
#include <llvm/ADT/StringRef.h>
6+
#include <llvm/Support/Allocator.h>
67

78
namespace soll {
89

lib/CodeGen/BackendUtil.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "soll/Basic/TargetOptions.h"
77
#include "soll/CodeGen/LoweringInteger.h"
88
#include <llvm/ADT/Triple.h>
9+
#include <llvm/Analysis/AliasAnalysis.h>
910
#include <llvm/Analysis/TargetLibraryInfo.h>
1011
#include <llvm/Analysis/TargetTransformInfo.h>
1112
#include <llvm/Bitcode/BitcodeWriterPass.h>
@@ -142,7 +143,10 @@ void EmitAssemblyHelper::EmitAssembly(
142143
TheModule->setDataLayout(TM->createDataLayout());
143144
}
144145

145-
#if LLVM_VERSION_MAJOR >= 9
146+
#if LLVM_VERSION_MAJOR >= 12
147+
llvm::PassBuilder PB(false, TM.get(), llvm::PipelineTuningOptions(),
148+
llvm::None);
149+
#elif LLVM_VERSION_MAJOR >= 9
146150
llvm::PassBuilder PB(TM.get(), llvm::PipelineTuningOptions(), llvm::None);
147151
#else
148152
llvm::PassBuilder PB(TM.get(), llvm::None);
@@ -183,19 +187,24 @@ void EmitAssemblyHelper::EmitAssembly(
183187
default:
184188
break;
185189
case O1:
186-
MPM.addPass(PB.buildPerModuleDefaultPipeline(llvm::PassBuilder::O1));
190+
MPM.addPass(PB.buildPerModuleDefaultPipeline(
191+
llvm::PassBuilder::OptimizationLevel::O1));
187192
break;
188193
case O2:
189-
MPM.addPass(PB.buildPerModuleDefaultPipeline(llvm::PassBuilder::O2));
194+
MPM.addPass(PB.buildPerModuleDefaultPipeline(
195+
llvm::PassBuilder::OptimizationLevel::O2));
190196
break;
191197
case O3:
192-
MPM.addPass(PB.buildPerModuleDefaultPipeline(llvm::PassBuilder::O3));
198+
MPM.addPass(PB.buildPerModuleDefaultPipeline(
199+
llvm::PassBuilder::OptimizationLevel::O3));
193200
break;
194201
case Os:
195-
MPM.addPass(PB.buildPerModuleDefaultPipeline(llvm::PassBuilder::Os));
202+
MPM.addPass(PB.buildPerModuleDefaultPipeline(
203+
llvm::PassBuilder::OptimizationLevel::Os));
196204
break;
197205
case Oz:
198-
MPM.addPass(PB.buildPerModuleDefaultPipeline(llvm::PassBuilder::Oz));
206+
MPM.addPass(PB.buildPerModuleDefaultPipeline(
207+
llvm::PassBuilder::OptimizationLevel::Oz));
199208
break;
200209
}
201210
MPM.addPass(llvm::AlwaysInlinerPass());

lib/CodeGen/CodeGenAction.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "llvm/Support/Alignment.h"
88
#include <lld/Common/Driver.h>
99
#include <llvm/IR/ConstantFolder.h>
10+
#include <llvm/IR/DerivedTypes.h>
1011
#include <llvm/IR/DiagnosticInfo.h>
1112
#include <llvm/IR/IRBuilder.h>
1213
#include <llvm/Support/ToolOutputFile.h>
@@ -131,7 +132,10 @@ class BackendConsumer : public ASTConsumer {
131132
llvm::BasicBlock *Entry =
132133
llvm::BasicBlock::Create(VMContext, "entry", Func);
133134
Builder.SetInsertPoint(Entry);
134-
llvm::Value *Result = llvm::UndefValue::get(Module.getTypeByName("bytes"));
135+
// llvm::Value *Result =
136+
// llvm::UndefValue::get(Module.getTypeByName("bytes"));
137+
llvm::Value *Result = llvm::UndefValue::get(
138+
llvm::StructType::getTypeByName(VMContext, "bytes"));
135139
Result = Builder.CreateInsertValue(Result, Builder.getIntN(256, Length), 0);
136140
Result = Builder.CreateInsertValue(
137141
Result, Builder.CreateBitCast(GV, Builder.getInt8PtrTy()), 1);
@@ -181,7 +185,7 @@ class BackendConsumer : public ASTConsumer {
181185
if (auto Error = removeExports(Wasm->TmpName)) {
182186
llvm::consumeError(Wasm->discard());
183187
llvm::consumeError(Object->discard());
184-
return Error;
188+
return std::move(Error);
185189
}
186190

187191
auto Binary = llvm::MemoryBuffer::getFile(Wasm->TmpName);
@@ -289,7 +293,7 @@ std::unique_ptr<ASTConsumer>
289293
CodeGenAction::CreateASTConsumer(CompilerInstance &CI, llvm::StringRef InFile) {
290294
return std::make_unique<BackendConsumer>(
291295
Action, CI.getDiagnostics(), CI.getCodeGenOpts(), CI.getTargetOpts(),
292-
InFile, *VMContext, CI.GetOutputStreamFunc());
296+
InFile.str(), *VMContext, CI.GetOutputStreamFunc());
293297
}
294298

295299
EmitAssemblyAction::EmitAssemblyAction(llvm::LLVMContext *VMContext)

lib/CodeGen/CodeGenModule.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1605,7 +1605,7 @@ void CodeGenModule::emitStructDecl(const StructDecl *SD) {
16051605

16061606
void CodeGenModule::emitYulObject(const YulObject *YO) {
16071607
{
1608-
const std::string Name = YO->getUniqueName();
1608+
const std::string Name = YO->getUniqueName().str();
16091609
emitNestedObjectGetter(Name + ".object");
16101610
NestedEntries.emplace_back(Name + ".main", Name + ".object", nullptr);
16111611
/*
@@ -1627,6 +1627,21 @@ void CodeGenModule::emitYulObject(const YulObject *YO) {
16271627
}
16281628
for (const auto *O : YO->getObjectList()) {
16291629
emitYulObject(O);
1630+
// FIXME
1631+
{
1632+
const std::string Name = O->getName().str();
1633+
emitNestedObjectGetter(Name + ".object");
1634+
NestedEntries.emplace_back(Name + ".main", Name + ".object", nullptr);
1635+
/*
1636+
llvm::Function *DataSize = llvm::Function::Create(
1637+
llvm::FunctionType::get(Int256Ty, false),
1638+
llvm::Function::InternalLinkage, ".datasize", TheModule);
1639+
llvm::Function *DataOffset = llvm::Function::Create(
1640+
llvm::FunctionType::get(Int8PtrTy, false),
1641+
llvm::Function::InternalLinkage, ".dataoffset", TheModule);
1642+
*/
1643+
// LookupYulDataOrYulObject.try_emplace(Name, O);
1644+
}
16301645
getEntry().clear();
16311646
getEntry().resize(1);
16321647
}

lib/Frontend/FrontendAction.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI,
5353

5454
CI.createASTContext();
5555

56-
std::string PresumedInputFile = getCurrentFileOrBufferName();
56+
std::string PresumedInputFile = getCurrentFileOrBufferName().str();
5757

5858
std::unique_ptr<ASTConsumer> Consumer =
5959
CreateASTConsumer(CI, PresumedInputFile);

lib/Parse/Parser.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ Parser::parseFunctionHeader(bool ForceEmptyName, bool AllowModifiers) {
717717
if (AllowModifiers && Tok.is(tok::identifier)) {
718718
Diag(diag::err_unimplemented_token) << tok::identifier;
719719

720-
std::string ModifierName = Tok.getIdentifierInfo()->getName();
720+
std::string ModifierName = Tok.getIdentifierInfo()->getName().str();
721721
ConsumeToken(); // identifier
722722

723723
std::vector<ExprPtr> Arguments;
@@ -963,7 +963,7 @@ Parser::parseVariableDeclaration(VarDeclParserOptions const &Options,
963963

964964
std::unique_ptr<EventDecl> Parser::parseEventDefinition() {
965965
const SourceLocation Begin = Tok.getLocation();
966-
const std::string Name = Tok.getIdentifierInfo()->getName();
966+
const std::string Name = Tok.getIdentifierInfo()->getName().str();
967967
ConsumeToken(); // identifier
968968
VarDeclParserOptions Options;
969969
Options.AllowIndexed = true;
@@ -989,7 +989,7 @@ void Parser::parseUserDefinedTypeName() {
989989
std::unique_ptr<IdentifierPath>
990990
Parser::parseIdentifierPath(tok::TokenKind SplitTok) {
991991
assert(Tok.isAnyIdentifier());
992-
std::vector<std::string> path{Tok.getIdentifierInfo()->getName()};
992+
std::vector<std::string> path{Tok.getIdentifierInfo()->getName().str()};
993993
ConsumeToken(); // identifier
994994

995995
while (Tok.is(SplitTok)) {

test/yul/metadata.yul

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
2+
// RUN: %soll --lang=Yul %s
3+
object "metadata_x" {
4+
code {
5+
// sstore(dataoffset(".metadata.x"), 0)
6+
let size := datasize("x")
7+
}
8+
9+
object ".metadata" {
10+
code {}
11+
data "x" "ABC"
12+
}
13+
14+
data "x" "CDE"
15+
}

0 commit comments

Comments
 (0)