Skip to content
This repository was archived by the owner on Jan 8, 2023. It is now read-only.

Commit 18f67f9

Browse files
author
ApsarasX
committed
chore: upgrade to LLVM 12
1 parent 0b2aee0 commit 18f67f9

10 files changed

Lines changed: 45 additions & 124 deletions

File tree

.github/workflows/build.yml

Lines changed: 12 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ on:
2323
- '**'
2424

2525
jobs:
26-
build_on_linux:
27-
name: Build on Linux
26+
build_and_test_on_linux:
27+
name: Build and Test on Linux
2828
runs-on: ${{ matrix.os }}
2929
strategy:
3030
matrix:
@@ -48,14 +48,14 @@ jobs:
4848
run: |
4949
sudo wget https://apt.llvm.org/llvm.sh
5050
sudo chmod +x llvm.sh
51-
sudo ./llvm.sh 11
51+
sudo ./llvm.sh
5252
sudo apt-get -y install uuid-dev pkg-config doxygen graphviz
5353
- name: Install Antlr4 and Antlr4 Runtime
5454
if: steps.cache-antlr.outputs.cache-hit != 'true'
5555
run: |
5656
sudo mkdir -p thirdparty/antlr && cd thirdparty/antlr
57-
sudo wget https://www.antlr.org/download/antlr-4.9-complete.jar
58-
sudo wget -O ${{ runner.temp }}/antlr4-src.zip https://www.antlr.org/download/antlr4-cpp-runtime-4.9-source.zip
57+
sudo wget https://www.antlr.org/download/antlr-4.9.2-complete.jar
58+
sudo wget -O ${{ runner.temp }}/antlr4-src.zip https://www.antlr.org/download/antlr4-cpp-runtime-4.9.2-source.zip
5959
cd ${{ runner.temp }}
6060
sudo unzip antlr4-src.zip
6161
sudo mkdir build && cd build
@@ -74,30 +74,18 @@ jobs:
7474
cd cmake-build-debug
7575
sudo cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-w" -G "Unix Makefiles" ..
7676
sudo cmake --build . --target staticscript document -- -j $THREAD_COUNT
77+
sudo ctest --extra-verbose
7778
cd ../cmake-build-release
7879
sudo cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-w" -G "Unix Makefiles" ..
7980
sudo cmake --build . --target staticscript document -- -j $THREAD_COUNT
80-
- name: Upload Debug File
81-
uses: actions/upload-artifact@v2
82-
with:
83-
name: staticscript-${{ matrix.os }}-${{ matrix.compiler.cc }}-debug
84-
path: |
85-
cmake-build-debug/staticscript
86-
cmake-build-debug/lib/*.bc
87-
- name: Upload Release File
88-
uses: actions/upload-artifact@v2
89-
with:
90-
name: staticscript-${{ matrix.os }}-${{ matrix.compiler.cc }}-release
91-
path: |
92-
cmake-build-release/staticscript
93-
cmake-build-release/lib/*.bc
81+
sudo ctest --extra-verbose
9482
95-
build_on_macos:
96-
name: Build on macOS
83+
build_and_test_on_macos:
84+
name: Build and Test on macOS
9785
runs-on: ${{ matrix.os }}
9886
strategy:
9987
matrix:
100-
os: [ macos-10.15, macos-11.0 ]
88+
os: [ macos-10.15 ]
10189
compiler:
10290
- { cc: gcc, cxx: g++ }
10391
- { cc: clang, cxx: clang++ }
@@ -116,70 +104,8 @@ jobs:
116104
cd cmake-build-debug
117105
sudo cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-w" -G "Unix Makefiles" ..
118106
sudo cmake --build . --target staticscript document -- -j $THREAD_COUNT
107+
sudo ctest --extra-verbose
119108
cd ../cmake-build-release
120109
sudo cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-w" -G "Unix Makefiles" ..
121110
sudo cmake --build . --target staticscript document -- -j $THREAD_COUNT
122-
- name: Upload Debug File
123-
uses: actions/upload-artifact@v2
124-
with:
125-
name: staticscript-${{ matrix.os }}-${{ matrix.compiler.cc }}-debug
126-
path: |
127-
cmake-build-debug/staticscript
128-
cmake-build-debug/lib/*.bc
129-
- name: Upload Release File
130-
uses: actions/upload-artifact@v2
131-
with:
132-
name: staticscript-${{ matrix.os }}-${{ matrix.compiler.cc }}-release
133-
path: |
134-
cmake-build-release/staticscript
135-
cmake-build-release/lib/*.bc
136-
137-
test:
138-
name: Test
139-
needs: [ build_on_linux, build_on_macos ]
140-
runs-on: ${{ matrix.os }}
141-
strategy:
142-
matrix:
143-
os: [ ubuntu-18.04, ubuntu-20.04, macos-10.15, macos-11.0 ]
144-
compiler:
145-
- { cc: gcc, cxx: g++ }
146-
- { cc: clang, cxx: clang++ }
147-
steps:
148-
- name: Fetch Codebase
149-
uses: actions/checkout@v2
150-
- name: Download Debug File
151-
uses: actions/download-artifact@v2
152-
with:
153-
name: staticscript-${{ matrix.os }}-${{ matrix.compiler.cc }}-debug
154-
path: executables/debug
155-
- name: Download Release File
156-
uses: actions/download-artifact@v2
157-
with:
158-
name: staticscript-${{ matrix.os }}-${{ matrix.compiler.cc }}-release
159-
path: executables/release
160-
- name: Test Exmaple Code on Debug Compiler
161-
working-directory: executables/debug
162-
run: |
163-
chmod +x ./staticscript
164-
for file in ${{ github.workspace }}/tests/*.ss
165-
do
166-
base=$(basename $file)
167-
sudo ./staticscript $file -L lib --emit-llvm -o $base.ll
168-
sudo ./staticscript $file -L lib -c -o $base.o
169-
sudo ./staticscript $file -L lib -o $base.exe
170-
sudo clang $base.o -lm -o $base.exe
171-
sudo ./$base.exe
172-
done
173-
- name: Test Exmaple Code on Release Compiler
174-
working-directory: executables/release
175-
run: |
176-
chmod +x ./staticscript
177-
for file in ${{ github.workspace }}/tests/*.ss
178-
do
179-
base=$(basename $file)
180-
sudo ./staticscript $file -L lib --emit-llvm -o $base.ll
181-
sudo ./staticscript $file -L lib -c -o $base.o
182-
sudo ./staticscript $file -L lib -o $base.exe
183-
sudo clang $base.o -lm -o $base.exe
184-
sudo ./$base.exe
185-
done
111+
sudo ctest --extra-verbose

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ jobs:
2525
run: |
2626
sudo wget https://apt.llvm.org/llvm.sh
2727
sudo chmod +x llvm.sh
28-
sudo ./llvm.sh 11
28+
sudo ./llvm.sh
2929
sudo apt-get -y install uuid-dev pkg-config doxygen graphviz
3030
- name: Install Antlr4 and Antlr4 Runtime
3131
if: steps.cache-antlr.outputs.cache-hit != 'true'
3232
run: |
3333
sudo mkdir -p thirdparty/antlr && cd thirdparty/antlr
34-
sudo wget https://www.antlr.org/download/antlr-4.9-complete.jar
35-
sudo wget -O ${{ runner.temp }}/antlr4-src.zip https://www.antlr.org/download/antlr4-cpp-runtime-4.9-source.zip
34+
sudo wget https://www.antlr.org/download/antlr-4.9.2-complete.jar
35+
sudo wget -O ${{ runner.temp }}/antlr4-src.zip https://www.antlr.org/download/antlr4-cpp-runtime-4.9.2-source.zip
3636
cd ${{ runner.temp }}
3737
sudo unzip antlr4-src.zip
3838
sudo mkdir build && cd build

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,8 @@ add_executable(
4444

4545
add_dependencies(staticscript antlr4_static)
4646

47-
target_link_libraries(staticscript PRIVATE antlr4_static ${llvm_libs})
47+
target_link_libraries(staticscript PRIVATE antlr4_static ${llvm_libs})
48+
49+
enable_testing()
50+
51+
add_subdirectory(tests)

cmake/AddANTLR.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
list(APPEND CMAKE_PREFIX_PATH /usr/local/lib/cmake/antlr4)
22

33
if (CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
4-
set(ANTLR4_JAR_LOCATION ${PROJECT_SOURCE_DIR}/thirdparty/antlr/antlr-4.9-complete.jar)
4+
set(ANTLR4_JAR_LOCATION ${PROJECT_SOURCE_DIR}/thirdparty/antlr/antlr-4.9.2-complete.jar)
55
elseif (CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
6-
set(ANTLR4_JAR_LOCATION /usr/local/opt/antlr/antlr-4.9-complete.jar)
6+
set(ANTLR4_JAR_LOCATION /usr/local/opt/antlr/antlr-4.9.2-complete.jar)
77
endif ()
88

99
find_package(antlr4-runtime REQUIRED)

cmake/AddLLVM.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ if (CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
22
list(APPEND CMAKE_PREFIX_PATH /usr/local/opt/llvm/lib/cmake/llvm)
33
endif ()
44

5-
find_package(LLVM 11 REQUIRED CONFIG)
5+
find_package(LLVM 12 REQUIRED CONFIG)
66

77
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
88

include/Support/LLVM.h

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -65,39 +65,19 @@ inline void initLLVMTarget() {
6565
inline void initLLVMPasses() {
6666
llvm::PassRegistry &registry = *llvm::PassRegistry::getPassRegistry();
6767
llvm::initializeCore(registry);
68-
llvm::initializeCoroutines(registry);
68+
llvm::initializeTransformUtils(registry);
6969
llvm::initializeScalarOpts(registry);
7070
llvm::initializeObjCARCOpts(registry);
7171
llvm::initializeVectorization(registry);
72-
llvm::initializeIPO(registry);
73-
llvm::initializeAnalysis(registry);
74-
llvm::initializeTransformUtils(registry);
7572
llvm::initializeInstCombine(registry);
7673
llvm::initializeAggressiveInstCombine(registry);
74+
llvm::initializeIPO(registry);
7775
llvm::initializeInstrumentation(registry);
76+
llvm::initializeAnalysis(registry);
77+
llvm::initializeCoroutines(registry);
78+
llvm::initializeCodeGen(registry);
79+
llvm::initializeGlobalISel(registry);
7880
llvm::initializeTarget(registry);
79-
llvm::initializeExpandMemCmpPassPass(registry);
80-
llvm::initializeScalarizeMaskedMemIntrinPass(registry);
81-
llvm::initializeCodeGenPreparePass(registry);
82-
llvm::initializeAtomicExpandPass(registry);
83-
llvm::initializeRewriteSymbolsLegacyPassPass(registry);
84-
llvm::initializeWinEHPreparePass(registry);
85-
llvm::initializeDwarfEHPreparePass(registry);
86-
llvm::initializeSafeStackLegacyPassPass(registry);
87-
llvm::initializeSjLjEHPreparePass(registry);
88-
llvm::initializePreISelIntrinsicLoweringLegacyPassPass(registry);
89-
llvm::initializeGlobalMergePass(registry);
90-
llvm::initializeIndirectBrExpandPassPass(registry);
91-
llvm::initializeInterleavedLoadCombinePass(registry);
92-
llvm::initializeInterleavedAccessPass(registry);
93-
llvm::initializeEntryExitInstrumenterPass(registry);
94-
llvm::initializePostInlineEntryExitInstrumenterPass(registry);
95-
llvm::initializeUnreachableBlockElimLegacyPassPass(registry);
96-
llvm::initializeExpandReductionsPass(registry);
97-
llvm::initializeWasmEHPreparePass(registry);
98-
llvm::initializeWriteBitcodePassPass(registry);
99-
llvm::initializeHardwareLoopsPass(registry);
100-
llvm::initializeTypePromotionPass(registry);
10181
}
10282

10383
inline void initLLVMCodeGen() {
@@ -118,7 +98,7 @@ inline llvm::CodeGenOpt::Level getCodeGenOptLevel(unsigned optLevel = 2) {
11898
}
11999

120100
inline String getTargetTriple() {
121-
return llvm::sys::getDefaultTargetTriple();
101+
return llvm::sys::getProcessTriple();
122102
}
123103

124104
inline llvm::TargetMachine *getTargetMachine(unsigned optLevel = 2) {
@@ -129,7 +109,7 @@ inline llvm::TargetMachine *getTargetMachine(unsigned optLevel = 2) {
129109
return target->createTargetMachine(targetTriple,
130110
llvm::codegen::getCPUStr(),
131111
llvm::codegen::getFeaturesStr(),
132-
llvm::codegen::InitTargetOptionsFromCodeGenFlags(),
112+
llvm::codegen::InitTargetOptionsFromCodeGenFlags(llvm::Triple(targetTriple)),
133113
llvm::codegen::getExplicitRelocModel(),
134114
llvm::codegen::getExplicitCodeModel(),
135115
getCodeGenOptLevel(optLevel));

install-macos.sh

100644100755
File mode changed.

install-ubuntu.sh

100644100755
File mode changed.

src/CodeGen/Builtin.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void BuiltinError::linkModule(LLVMModule &module, LLVMContext &context) {
5555
}
5656

5757
void BuiltinError::getTypeAndFunction(LLVMModule &module) {
58-
llvm::StructType *errStructType = module.getTypeByName("struct.ss_error");
58+
llvm::StructType *errStructType = llvm::StructType::getTypeByName(module.getContext(), "struct.ss_error");
5959
type = errStructType->getPointerTo();
6060
exitIfErrorFunc = module.getFunction("ss_exit_if_error");
6161
assertFunc = module.getFunction("ss_assert");
@@ -66,7 +66,7 @@ void BuiltinString::linkModule(LLVMModule &module, LLVMContext &context) {
6666
}
6767

6868
void BuiltinString::getTypeAndFunction(LLVMModule &module) {
69-
llvm::StructType *strStructType = module.getTypeByName("struct.ss_string");
69+
llvm::StructType *strStructType = llvm::StructType::getTypeByName(module.getContext(), "struct.ss_string");
7070
type = strStructType->getPointerTo();
7171
createFunc = module.getFunction("ss_string_create");
7272
deleteFunc = module.getFunction("ss_string_delete");
@@ -87,7 +87,7 @@ void BuiltinArray::linkModule(LLVMModule &module, LLVMContext &context) {
8787
}
8888

8989
void BuiltinArray::getTypeAndFunction(LLVMModule &module) {
90-
llvm::StructType *arrStructType = module.getTypeByName("struct.ss_array");
90+
llvm::StructType *arrStructType = llvm::StructType::getTypeByName(module.getContext(), "struct.ss_array");
9191
type = arrStructType->getPointerTo();
9292
createIntegerArrayFunc = module.getFunction("ss_array_create_integer_array");
9393
createFloatArrayFunc = module.getFunction("ss_array_create_float_array");

tests/CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
file(GLOB TEST_CASES_FILE *.ss)
2+
3+
set(LINK_LIBRARY_PATH ${PROJECT_BINARY_DIR}/lib)
4+
5+
foreach(filepath ${TEST_CASES_FILE})
6+
string(REGEX REPLACE ".+/(.+)\\..*" "\\1" filename ${filepath})
7+
add_test(
8+
NAME test_${filename}
9+
COMMAND staticscript ${filepath} -L ${LINK_LIBRARY_PATH}
10+
)
11+
endforeach()

0 commit comments

Comments
 (0)