Open genericptr opened 10 months ago
Hello @genericptr,
I think you need to use updated clang version to be able to compile C++20
I don't use C++ much on macOS but I think you may need to add some additional flags to get c++ 20 support. It's also possible Apple hasn't implemented the full feature set.
There's the version I'm using which seems to be up to date.
Homebrew clang version 16.0.4
Target: arm64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm@16/bin
I will search about this issue and check if i can solved it by adding flag or other thing
@genericptr Can you please add this line on amun_compiler.cpp
file
#include <llvm/ADT/Optional.h>
great that fixed that error. I still get errors but these are probably because I'm using LLVM 16. I think I can download a LLVM 15 version but not sure if the build system will use the correct one.
build$ make
[ 5%] Building CXX object CMakeFiles/amun.dir/src/amun_compiler.cpp.o
In file included from /Users/ryanjoseph/Downloads/Amun-master/src/amun_compiler.cpp:4:
In file included from /Users/ryanjoseph/Downloads/Amun-master/src/../include/amun_llvm_backend.hpp:6:
/Users/ryanjoseph/Downloads/Amun-master/include/amun_llvm_builder.hpp:57:53: warning: 'getPointerElementType' is deprecated: Deprecated without replacement, see https://llvm.org/docs/OpaquePointers.html for context and migration instructions [-Wdeprecated-declarations]
auto pointer_element_type = pointer->getType()->getPointerElementType();
^
/opt/homebrew/opt/llvm@16/include/llvm/IR/Type.h:406:5: note: 'getPointerElementType' has been explicitly marked deprecated here
[[deprecated("Deprecated without replacement, see "
^
1 warning generated.
[ 10%] Building CXX object CMakeFiles/amun.dir/src/amun_compiler_options.cpp.o
[ 15%] Building CXX object CMakeFiles/amun.dir/src/amun_diagnostics.cpp.o
[ 21%] Building CXX object CMakeFiles/amun.dir/src/amun_external_linker.cpp.o
[ 26%] Building CXX object CMakeFiles/amun.dir/src/amun_files.cpp.o
[ 31%] Building CXX object CMakeFiles/amun.dir/src/amun_llvm_backend.cpp.o
In file included from /Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:1:
In file included from /Users/ryanjoseph/Downloads/Amun-master/src/../include/amun_llvm_backend.hpp:6:
/Users/ryanjoseph/Downloads/Amun-master/include/amun_llvm_builder.hpp:57:53: warning: 'getPointerElementType' is deprecated: Deprecated without replacement, see https://llvm.org/docs/OpaquePointers.html for context and migration instructions [-Wdeprecated-declarations]
auto pointer_element_type = pointer->getType()->getPointerElementType();
^
/opt/homebrew/opt/llvm@16/include/llvm/IR/Type.h:406:5: note: 'getPointerElementType' has been explicitly marked deprecated here
[[deprecated("Deprecated without replacement, see "
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:129:62: warning: 'getPointerElementType' is deprecated: Deprecated without replacement, see https://llvm.org/docs/OpaquePointers.html for context and migration instructions [-Wdeprecated-declarations]
if (init_value_type != llvm_type && init_value_type->getPointerElementType() == llvm_type) {
^
/opt/homebrew/opt/llvm@16/include/llvm/IR/Type.h:406:5: note: 'getPointerElementType' has been explicitly marked deprecated here
[[deprecated("Deprecated without replacement, see "
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:467:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(start_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:474:27: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(true_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:479:31: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(false_branch);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:499:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(end_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:549:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(condition_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:556:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(body_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:575:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(end_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:635:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(condition_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:642:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(body_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:682:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(end_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:706:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(body_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:719:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(end_block);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:739:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(condition_branch);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:745:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(loop_branch);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:759:23: error: 'getBasicBlockList' is a private member of 'llvm::Function'
current_function->getBasicBlockList().push_back(end_branch);
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:990:15: error: 'getBasicBlockList' is a private member of 'llvm::Function'
function->getBasicBlockList().push_back(elseBB);
~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:998:15: error: 'getBasicBlockList' is a private member of 'llvm::Function'
function->getBasicBlockList().push_back(mergeBB);
~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:1063:15: error: 'getBasicBlockList' is a private member of 'llvm::Function'
function->getBasicBlockList().push_back(first_branch);
~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
/Users/ryanjoseph/Downloads/Amun-master/src/amun_llvm_backend.cpp:1078:19: error: 'getBasicBlockList' is a private member of 'llvm::Function'
function->getBasicBlockList().push_back(current_branch);
~~~~~~~~~~^~~~~~~~~~~~~~~~~
/opt/homebrew/opt/llvm@16/include/llvm/IR/Function.h:728:29: note: declared private here
BasicBlockListType &getBasicBlockList() { return BasicBlocks; }
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 warnings and 20 errors generated.
make[2]: *** [CMakeFiles/amun.dir/src/amun_llvm_backend.cpp.o] Error 1
make[1]: *** [CMakeFiles/amun.dir/all] Error 2
make: *** [all] Error 2
build$
@genericptr Great, Yes i think getPointerElementType
removed from llvm 16, it will work fine on llvm 15 and i will asap modify the code to work fine on llvm 16 and above
Is my C++ compiler the wrong version maybe?