if (Condition)
{
Foo = Bar; // this would have been replaced with: branch_flattened_temp0 = Bar;
Foo2 = Foo; // this would have been replaced with: branch_flattened_temp1 = Foo; this should have been replaced by:
branch_flattened_temp1 = branch_flattened_temp0;
}
#jira UE-164327
#rb simon.tovey
#preflight 632ddb75e23e50651b95cca4
[CL 22164425 by rob krajcarski in ue5-main branch]
Headers are updated to contain any missing #includes needed to compile and #includes are sorted. Nothing is removed.
#ushell-cherrypick of 21064294 by bryan.sefcik
#jira
#preflight 62d5c2111062f2e63015e598
#ROBOMERGE-OWNER: bryan.sefcik
#ROBOMERGE-AUTHOR: bryan.sefcik
#ROBOMERGE-SOURCE: CL 21155249 via CL 21158121 via CL 21161259
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
[CL 21182053 by bryan sefcik in ue5-main branch]
A = GetFirstValue();
B = A;
A = GetSecondValue();
C = A; // <-- this would get GetSecondValue() assigned to C instead of GetFirstValue()
Adds an SSA pass to help reduce overwriting registers, adds logic to remove self assignments, and adds logic to stop propagating when values are dirtied
From a sampling of scripts, about 2% are changed (where 1-3 unnecessary ops have been deleted).
#rb simon.tovey
#preflight 62b0d63c8e03312ad83a0c51
#jira UE-148892
[CL 20756957 by rob krajcarski in ue5-main branch]
The default threshold for loop unrolling was 32, so the compiler tried to make a dynamic loop when we had more iterations. The vector VM doesn't support that, so the codegen was never designed to understand dynamic loops, leading to an assertion failure. Increased the threshold to a large value, so we never hit this problem in practice.
#rnx
#jira none
#rb none
#ROBOMERGE-SOURCE: CL 12422302 in //UE4/Release-4.25/... via CL 12422324
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Release-Engine-Staging) (v671-12333473)
[CL 12426823 by mihnea balta in Release-Engine-Staging branch]
The default threshold for loop unrolling was 32, so the compiler tried to make a dynamic loop when we had more iterations. The vector VM doesn't support that, so the codegen was never designed to understand dynamic loops, leading to an assertion failure. Increased the threshold to a large value, so we never hit this problem in practice.
#rnx
#jira none
#rb none
[CL 12422302 by mihnea balta in 4.25 branch]
The branch flattening code assumed the function will always have a return value. Also, it never advanced the current parameter pointer when going through the function arguments, so it was trying to dereference the first parameter for all the arguments.
#rnx
#jira none
#rb Simon.Tovey
#ROBOMERGE-SOURCE: CL 12387646 in //UE4/Release-4.25/... via CL 12387649
#ROBOMERGE-BOT: RELEASE (Release-4.25Plus -> Main) (v671-12333473)
[CL 12387651 by mihnea balta in Main branch]
The branch flattening code assumed the function will always have a return value. Also, it never advanced the current parameter pointer when going through the function arguments, so it was trying to dereference the first parameter for all the arguments.
#rnx
#jira none
#rb Simon.Tovey
[CL 12387646 by mihnea balta in 4.25 branch]
#RB Rob.Krajcarski, Stu.McKenna
#JIRA UE-84463
#ROBOMERGE-OWNER: arne.schober
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 12105113 via CL 12121713
#ROBOMERGE-BOT: (v657-12064184)
[CL 12121717 by arne schober in Main branch]
The opcode was only added to the argument list when WITH_EDITOR was defined, so all the positional arguments used by the string formatter were offset by -1.
#rb none
#ROBOMERGE-SOURCE: CL 11335700 via CL 11335730
#ROBOMERGE-BOT: (v653-11302973)
[CL 11335734 by mihnea balta in Main branch]
- Defines will still be there if we're dumping the shader code for debug.
- This makes the code less unique in general case and also avoids unnecessary works that no one sees.
#rb Lukas.Hermanns
[FYI] Lukas.Hermanns, Rolando.Caloca
#ROBOMERGE-SOURCE: CL 11311362 via CL 11311438
#ROBOMERGE-BOT: (v653-11302973)
[CL 11311455 by arciel rekman in Main branch]