Skip to content

Orange C-v6.0.50.1

Choose a tag to compare

@LADSoft LADSoft released this 16 Jul 02:07

This version adds support for LIBCXX version 10, targeted for a C++14 compiler. It also expands the library functionality to include support for atomics and threading. And it adds support for some new C RTL functions.

a full list of changes follows:

  • various projects: fix various GCC warnings
  • various projects: add a diagnostic when an output file cannot be opened or created
  • various projects: convert ieee format to binary
  • various projects: if the command line help is too long, it will prompt you after each page
  • various projects: use unordered_map where possible, to speed things up
  • visual studio solution: make backends dependent on the programs they spawn
  • visual studio solution: update projects to VS2019
  • builds: remove duplicate rebuilds
  • builds: fix some problems with builds not erroring out properly on failure
  • occ: fix assembly language jmp [eax] to not truncate the register to word size
  • occ: fix bug in sign extension of negated unsigned short
  • occ: fix bug with not calling virtual destructors properly
  • occ: fix bug with not promoting default destructors to 'virtual' when needed
  • occ: fix bug with (double)aa = value sometimes not working properly, where 'aa' is a long long
  • occ: fix the code that enables the profiler
  • occ: enable 'inline' in the c++ headers (speedup applications)
  • occ: fix argument type lookup to work with enumeration constant in namespace
  • occ: add -LINK and -DLL command line switches (for autoconfig support)
  • occ: some internal optimizations in the source code
  • occ: fix fastcall calling convention to work with optimized code
  • occ: rewrite shared memory mapping handling to use less resources
  • occ: add __asm keyword (still supports 'asm')
  • occ: fix a case where there could be a crash if a structure is undefined
  • occ: destructor for union should not automatically delete objects defined in the union
  • occ: elide copy constructor references in certain initializations
  • occ: fix formatting on assembly language output files
  • occ: fix bug that prevented occ from working when compiled with CLANG version 10 or greater
  • occ: clean up errors (remove function reference)
  • occ: add 'referenced from' for references from higher templates
  • occ: clean up errors (fix mangling and unmangling)
  • occ: fix bug where packed arguments to a function wouldn't be fully expanded with qualifiers
  • occ: fix crashes when compiling in debug mode
  • occ: add #include_next
  • occ: sometimes the error for undefined variables would not appear
  • occ: rewrite the type alias functionality
  • occ: change padding in code segment to use nops
  • occ: fix some bugs in the name unmangling
  • occ: fix some problems with packed templates
  • occ: allow decltype to be used where a class selector could be used
  • occ: libcxx 10 support
  • occ: handle template instantion overloads where the only difference is the function return value
  • occ: clean up array access in for-range loops
  • occ: don't attempt to return a value when a template function's return type evaluates to void
  • occ: don't generate labels for inline function returns, unless absolutely needed (aids optimizations)
  • occ: the const qualifier should not be removed when evaluating a typedef
  • occ: fix bugs in auto deduction
  • occ: fix various problems with formatting, argument reference types
  • occ: don't generate const/ref member initializers error for a delegating constructor
  • occ: allow access to private constructors while generating default constructors
  • occ: handle conversion of rref to lref in function arguments properly
  • occ: don't generate an error when converting const lref to rref in function arguments
  • occ: require typename in a more standard way
  • occ: fix bugs with honoring member access specifiers
  • occ: fix some probelms with deleting default constructors
  • occ: arithmetic constants are rvalues for purposes of argument deduction
  • occ: refactor how memory allocation is done to clean up code base
  • occ: convert constants to boolean correctly
  • occ: add error if function body is redefined
  • occ: update the attribute parsing
  • occ: unique_ptr didn't compile when passing free() for the destruction function
  • occ: fix randomly occurring 'unknown suffix' errors
  • occ: fixes to typeinfo
  • occ: fix static assert to work within structures
  • occ: fix static_assert error to be more obvious, add C++17 version of static_assert
  • occ: don't reserve space for static const integral members of structures
  • occ: fix variable size arrays to convert to char* properly
  • occ: int and long are same (on x86) for purposes of argument deduction. Exact match is still prefered.
  • occ: bool was sometimes considered the same as char
  • occ: fix crash when initializing bool with a function address (should result in true)
  • occ: allow forward declaration of a non-member class, within a class
  • occ: allow _atomic in C++ mode, add new atomic intrinsics
  • occ: handle problems where the evaluation of template selectors didn't happen in a timely way
  • occ: clean up is_constructible and is_nothrow_constructible
  • occ: add some intrincs to help compiling tuples
  • occ: fix problems evaluating sfinae
  • occ: add display of timing information
  • occ: add some new command line switches
  • occ: clean up what happens when running occparse directly
  • occ: fix some problems with initializer lists
  • occ: fix some problems with poiinters to member functions
  • occ: fix rare bug where sometimes a function call would not be treated as a call
  • occ: fix problem an optimization of a pointer to an array would not allocate auto variables properly
  • occ: fix problems with finding an overload match for a nullptr_t argument
  • occ: fix bug where cast conversions combined with inlining could generate bad code
  • occ: rewrite the expression rebalancing operation to operate in real time
  • occ: fix bug with code generation for long long math
  • occ: fix some problems with extraneous extern statements in the assembly language output files
  • occ: changes to how inlining is done
  • occ: internal improvements for memory usage while compiling
  • occ: fix code completion compiler
  • occ: prefer conversion of wchar_t to char to a widening conversion, in function argument matching
  • occ: remove code generation of some unnecessary calls to empty constructors
  • occ: converting enum to long long generated bad code
  • occ: use native ints instead of long longs, for integers within the optimizer code
  • occ: support __attributed((aligned)) without specifying an alignment
  • occ: static operator new/delete can be members of a class
  • occ: fix bug surrounding VARARGS processing
  • occ: fix a bug where namespace usage could result in an infinite loop
  • occ: support for-range where the range specifier is an explicit initializer list
  • occ: add support for parsing attribute((format)) but not its functionality
  • occ: trying to scope an unnamed enum resulted in a compiler error
  • occ: when a member using statement specifies a base class, the constructures were not pulled in.
  • occ: fix bug in implicit lambda capture of 'this'
  • occ: allow access to base classes of a member function's class, from within a lambda
  • occ: allow conversion to a base class, when returning a structure
  • occ: internal modification, change unwieldy macros to constexpr functions
  • occ: fix some problems with overloading methods that have enums as arguments
  • occ: add attribute((internal_linkage))
  • occ: add attribute((exclude_from_explicit_instantiation))
  • occ: 'far' keyword not handling properly during code generation
  • occ: fix bugs with initializing a lambda function at the global level
  • occ: constexpr constructors were being duplicated in the output files
  • occ: better resolution for overload matching of mismatched qualifiers
  • occ: allow __stdcall to work with templated functions
  • occ: fix bug where simple structure with member initializers wouldn't construct properly
  • occ: fix problem with overloading cast operators that only differ by qualifiers
  • occ: fix bugs in code generation for atomics
  • occ: add new atomic intrinsics, overhaul the atomic headers
  • occ: fix generation of debug info
  • occ: fix problem with simple structures having member initializers not getting initialized
  • occ: fix problem where a container with a structured initializer list wouldn't initialize
  • occ: fix bug in peephole optimization
  • occ: fix the gcse optimizer to work again, fix various bugs in aliasing
  • occ: add -std=xxx, -x, -nostdinc, -nostdinc++, -fsyntax-only to the command line
  • occ: fix STDC_VERSION for C89
  • occ: allow dots in the file name specified on the command line (before the extension)
  • occ: handle volatiles better
  • occ: handle FILE preprocessor macro better in the presence of backslashes
  • occ: handle wchar_t better in the code generator
  • occ: allow conversions from pointer to bool
  • occ: fix various problems with specifying multiple input files on the command line
  • occil: various improvements to allow generated code to be decompiled
  • occil: add runtime support for function pointer via delegate
  • occil: fix bug in pinning
  • olib: add --noexports switch to remove exports while importing to library
  • ieeeconvert: new project for converting binary object files to more readable ascii format
  • utilites: some code cleanup
  • netlib: add support for generic classes and functions
  • netlib: add support for pinning
  • netlib: various small improvements
  • netlib: cache namespaces and classes while loading to speed up the load
  • netlib: add some improvements for GCC compiles, and MONO support
  • adl compiler: improvements and documentation
  • rtl: libcxx 10 support, atomic support, threads support
  • rtl: add flockfile and friends
  • rtl: add fmemopen and friends
  • rtl: add rpmalloc allocator and remove lea allocator
  • rtl: rename 'asm' keyword to '__asm' throughout
  • rtl: update makefiles for clang-format and format most of the runtime library
  • rtl: fix various issues with C11 threading and mutexes
  • rtl: putmkdir and friends in right header
  • rtl: add getopt implementation
  • rtl: rewrite C language headers to check for RC_INVOKED
  • rtl: fix crash in flushall
  • rtl: fix complex.h
  • rtl: newlocal() is inline now and other locale() updates for libcxx 10
  • rtl: copy header files to main include directory during a build, remove explict include directories from build command line
  • rtl: rename _DS and friends to allow compiling of filesystem header
  • rtl: add fseeko and ftello
  • rtl: fix bug in sscanf, using %c multiple times didn't work.
  • rtl: use VirtualAlloc in the memory manager
  • rtl: add various unwind functions to the dll export definitions file
  • rtl: add standardize exception handling support
  • rtl: add constructors/destructors for objects in thread local storage
  • rtl: add strerror_s and _strerror_s and errno_t
  • rtl: add enough support for fibersapi to allow libcxx10 threading to compile
  • rtl: fix some alignment issues in the WIN32 headers
  • rtl: only need one tls index, not one per thread
  • rtl: send output of 'assert' to console for console mode programs
  • rtl: fix bug in math.h, could include C++ headers with the wrong structure alignment
  • tests: run what we can in parallel
  • tests: complete libcxx tests on atomics