I am using a registered version of TwineCompile 5.2.3.319 with C++Builder 10.4 (with Update 2 applied).
When compiling a large app (24 DLLs plus EXE) using the CLANG 32-bit compiler, TwineCompile (TC) speeds build times up enormously and works without issue.
However, When compiling the same app using the CLANG 64-bit compiler, TC displays two problems:
On doing a Make All, TC compiles all sources files, whether they need to be re-compiled or not. This negates any gain in speed that TC provides and forces me to build individual DLLs one by one
For two of the DLLs, TC emits the following error from several of the source files
ICE: Internal compiler error: 0 @ 00000000
Is there anything I can do to resolve these issues?
Geocentrix wrote: ↑Fri Aug 20, 2021 10:21 amOn doing a Make All, TC compiles all sources files, whether they need to be re-compiled or not. This negates any gain in speed that TC provides and forces me to build individual DLLs one by one
Is this specific to this particular project, or you encounter it with any 64-bit projects?
Geocentrix wrote: ↑Fri Aug 20, 2021 10:21 amFor two of the DLLs, TC emits the following error from several of the source files ICE: Internal compiler error: 0 @ 00000000
This is unfortunately some internal bug in the 64-bit CLANG compiler that we haven't been able to pinpoint the cause for, to be able to get Embarcadero to fix. Some other users have been able to find specific code sequences that cause it and change the code slightly to prevent the bug from being encountered. It's almost impossible to reproduce once you start to trim the code down to create a test case.
Is this specific to this particular project, or you encounter it with any 64-bit projects?
All my 64-bit projects are affected. I normally open a Project Group and do a make all for that. TC receopiles all the source files in all the projects. It also occurs if I open a single 64-bit project and make that.
Is it possible to turn TC off for some Projects in a Project Group but not for others? The Enable Twine Compile options appears to turn TC on or off globally.
This is unfortunately some internal bug in the 64-bit CLANG compiler that we haven't been able to pinpoint the cause for
Any suggestions how to change existing code to avoid this? Or is it just try-and-see?
Is it possible that you have the "generate dependency information" turned off in the 64-bit compiler options? TwineCompile does rely on the dependency files being created to track which files have been modified.
Regarding the ICE - it's just a try-and-see unfortunately.
How do I set the "generate dependency information" flag for the 64-bit compiler? I could not find that option in the Project Options dialog box or in the list of bcc64.exe command line switches.
The closest I can find is "Include system headers in dependency output, Windows 64-bit platform only". However, turning that flag on made no difference - TwineCompile still rebuilds everything on invoking make all.
Can you do the following (to hopefully identify the cause):
1. Run a Build All
2. Once it's complete, run a Make on one of the projects. (Based on your description, this should recompile the files in this project)
3. Copy the entire contents of the Console Output tab from the compile window and save into a text file.
4. Attach both this text file and the twfiles.@@@ file from the project directory here.
1. Run a Build All - done
2. Once it's complete, run a Make on one of the projects. (Based on your description, this should recompile the files in this project) - done and yes it did
3. Copy the entire contents of the Console Output tab from the compile window and save into a text file. - done
4. Attach both this text file and the twfiles.@@@ file from the project directory here. - attached
Everything looks good there, it should have just performed a Make. Can you try deleting all the .d files in the C:\Software Development\CB10.4 Sydney\Win64\Obj\Debug\Platform\ folder, run a Build, and then try another Make?
If that doesn't work, can you send one of the .d files that was re-compiled during the Make to support@jomitech.com?