Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(350)

Issue 992493002: Lower signatures exposing struct registers to byval struct pointers (Closed)

Created:
5 years, 9 months ago by Mircea Trofin
Modified:
5 years, 9 months ago
CC:
native-client-reviews_googlegroups.com
Base URL:
https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Target Ref:
refs/heads/master
Visibility:
Public.

Description

Lower signatures exposing struct registers to byval struct pointers The new phase, NormalizeStructRegSignatures, converts signatures having parameters, or returning struct registers; or using structs that transitively reference such function types. The phase relies on a subsequent phase to clean up the redundant alloca/load/store instructions, however, I'm still investigating which such phase should be. BUG= https://code.google.com/p/nativeclient/issues/detail?id=3857 R=dschuff@chromium.org, jfb@chromium.org, mseaborn@chromium.org Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-llvm.git;a=commit;h=6fbcecb7791690603fe502d3469cf6b639499e37

Patch Set 1 : First draft #

Total comments: 22

Patch Set 2 : Incorporated feedback #

Patch Set 3 : determinism in output, more tests #

Total comments: 69

Patch Set 4 : Partial updates #

Patch Set 5 : clang-format -ed #

Total comments: 22

Patch Set 6 : Simpler type mapping #

Patch Set 7 : Incorporated more feedback #

Patch Set 8 : Using IRBuilder #

Total comments: 13

Patch Set 9 : #

Patch Set 10 : #

Total comments: 2

Patch Set 11 : Debug Info for Functions #

Total comments: 12

Patch Set 12 : debug info #

Total comments: 2

Patch Set 13 : Tests for invoke, array, vector, vararg #

Total comments: 16

Patch Set 14 : landing pads #

Total comments: 13

Patch Set 15 : Varargs take 2 #

Total comments: 4

Patch Set 16 : Final. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1021 lines, -0 lines) Patch
M include/llvm/InitializePasses.h View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M include/llvm/Transforms/NaCl.h View 1 1 chunk +1 line, -0 lines 0 comments Download
M lib/Transforms/NaCl/CMakeLists.txt View 1 1 chunk +1 line, -0 lines 0 comments Download
M lib/Transforms/NaCl/PNaClABISimplify.cpp View 1 2 3 1 chunk +3 lines, -0 lines 0 comments Download
A lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +697 lines, -0 lines 0 comments Download
A test/Transforms/NaCl/simplify-struct-reg-pad-crash.ll View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +21 lines, -0 lines 0 comments Download
A test/Transforms/NaCl/simplify-struct-reg-resume-crash.ll View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +20 lines, -0 lines 0 comments Download
A test/Transforms/NaCl/simplify-struct-reg-signatures.ll View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +265 lines, -0 lines 0 comments Download
A test/Transforms/NaCl/simplify-struct-reg-vararg-crash.ll View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +10 lines, -0 lines 0 comments Download
M tools/bugpoint/bugpoint.cpp View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download
M tools/opt/opt.cpp View 1 2 3 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 30 (5 generated)
Mircea Trofin
5 years, 9 months ago (2015-03-08 21:17:29 UTC) #1
JF
First quick review, some comments apply to later parts of the code. Also, please run ...
5 years, 9 months ago (2015-03-08 22:04:39 UTC) #2
Mircea Trofin
https://codereview.chromium.org/992493002/diff/1/lib/Transforms/NaCl/NormalizeStructRegSignatures.cpp File lib/Transforms/NaCl/NormalizeStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/1/lib/Transforms/NaCl/NormalizeStructRegSignatures.cpp#newcode35 lib/Transforms/NaCl/NormalizeStructRegSignatures.cpp:35: #include <stddef.h> On 2015/03/08 22:04:38, JF wrote: > <cstddef> ...
5 years, 9 months ago (2015-03-09 21:21:29 UTC) #3
Mircea Trofin
5 years, 9 months ago (2015-03-10 23:18:49 UTC) #4
JF
Deeper review, I still haven't gone through all the code, and test. https://codereview.chromium.org/992493002/diff/40001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp ...
5 years, 9 months ago (2015-03-12 18:36:19 UTC) #5
Mircea Trofin
https://codereview.chromium.org/992493002/diff/40001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/40001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode2 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:2: // pointers On 2015/03/12 18:36:18, JF wrote: > That's ...
5 years, 9 months ago (2015-03-13 22:04:52 UTC) #6
Mircea Trofin
5 years, 9 months ago (2015-03-13 22:06:31 UTC) #7
JF
I'm not insisting on it, but I've found that in general using IRBuilder simplifies the ...
5 years, 9 months ago (2015-03-14 18:42:59 UTC) #9
Mircea Trofin
https://codereview.chromium.org/992493002/diff/100001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/100001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode145 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:145: LLVMContext &Ctx = Ty->getContext(); On 2015/03/14 18:42:58, JF wrote: ...
5 years, 9 months ago (2015-03-16 18:38:46 UTC) #10
JF
https://codereview.chromium.org/992493002/diff/100001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/100001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode154 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:154: // the new FT has void for the return ...
5 years, 9 months ago (2015-03-16 21:53:47 UTC) #11
Derek Schuff
https://codereview.chromium.org/992493002/diff/160001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/160001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode29 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:29: #include <cassert> standard #includes go after LLVM #includes: http://llvm.org/docs/CodingStandards.html#include-style
5 years, 9 months ago (2015-03-16 22:48:33 UTC) #12
Mircea Trofin
https://codereview.chromium.org/992493002/diff/160001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/160001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode29 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:29: #include <cassert> On 2015/03/16 22:48:33, Derek Schuff wrote: > ...
5 years, 9 months ago (2015-03-16 22:50:43 UTC) #13
jvoung (off chromium)
https://codereview.chromium.org/992493002/diff/200001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/200001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode626 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:626: // Delete leftover functions - the ones with old ...
5 years, 9 months ago (2015-03-17 16:25:45 UTC) #15
Derek Schuff
lgtm with some nits https://codereview.chromium.org/992493002/diff/240001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/240001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode29 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:29: #include <llvm/ADT/SmallString.h> make all the ...
5 years, 9 months ago (2015-03-17 21:21:09 UTC) #17
Mircea Trofin
https://codereview.chromium.org/992493002/diff/200001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/200001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode626 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:626: // Delete leftover functions - the ones with old ...
5 years, 9 months ago (2015-03-18 18:41:42 UTC) #18
JF
https://codereview.chromium.org/992493002/diff/260001/test/Transforms/NaCl/simplify-struct-reg-signatures.ll File test/Transforms/NaCl/simplify-struct-reg-signatures.ll (right): https://codereview.chromium.org/992493002/diff/260001/test/Transforms/NaCl/simplify-struct-reg-signatures.ll#newcode1 test/Transforms/NaCl/simplify-struct-reg-signatures.ll:1: ; RUN: opt %s -simplify-struct-reg-signatures -S | FileCheck %s ...
5 years, 9 months ago (2015-03-18 20:27:57 UTC) #19
Mircea Trofin
Additional tests + fix for proper handling of invoke when return is register, by adjusting ...
5 years, 9 months ago (2015-03-19 05:26:19 UTC) #21
JF
Sorry for not lgtm, I'm still finding stuff :( https://codereview.chromium.org/992493002/diff/300001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/300001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode443 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:443: ...
5 years, 9 months ago (2015-03-19 16:21:25 UTC) #22
Mircea Trofin
https://codereview.chromium.org/992493002/diff/300001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/300001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode443 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:443: auto *Alloca = Builder.CreateAlloca(OldRetType); On 2015/03/19 16:21:25, JF wrote: ...
5 years, 9 months ago (2015-03-19 22:30:50 UTC) #24
Mircea Trofin
https://codereview.chromium.org/992493002/diff/340001/test/Transforms/NaCl/simplify-struct-reg-pad-crash.ll File test/Transforms/NaCl/simplify-struct-reg-pad-crash.ll (right): https://codereview.chromium.org/992493002/diff/340001/test/Transforms/NaCl/simplify-struct-reg-pad-crash.ll#newcode7 test/Transforms/NaCl/simplify-struct-reg-pad-crash.ll:7: declare %struct @__hypothetical_personality_2(i32) I'll remove this second personality, actually. ...
5 years, 9 months ago (2015-03-20 00:07:25 UTC) #25
JF
https://codereview.chromium.org/992493002/diff/340001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/340001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode490 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:490: // correctly deal with varargs scenarios. We decided to ...
5 years, 9 months ago (2015-03-20 16:41:32 UTC) #26
Mircea Trofin
https://codereview.chromium.org/992493002/diff/340001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/340001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode490 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:490: // correctly deal with varargs scenarios. On 2015/03/20 16:41:32, ...
5 years, 9 months ago (2015-03-20 18:31:32 UTC) #27
JF
lgtm *✲゚*。✧٩(・ิᴗ・ิ๑)۶*✲゚*。✧ after fixing two small nits. https://codereview.chromium.org/992493002/diff/360001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/360001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode424 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:424: static AllocaInst ...
5 years, 9 months ago (2015-03-20 20:47:48 UTC) #28
Mircea Trofin
https://codereview.chromium.org/992493002/diff/360001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp File lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp (right): https://codereview.chromium.org/992493002/diff/360001/lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp#newcode424 lib/Transforms/NaCl/SimplifyStructRegSignatures.cpp:424: static AllocaInst *InsertAllocaAtLocation(IRBuilder<> &Builder, On 2015/03/20 20:47:48, JF wrote: ...
5 years, 9 months ago (2015-03-20 20:54:55 UTC) #29
Mircea Trofin
5 years, 9 months ago (2015-03-23 20:46:51 UTC) #30
Message was sent while issue was closed.
Committed patchset #16 (id:380001) manually as
6fbcecb7791690603fe502d3469cf6b639499e37 (presubmit successful).

Powered by Google App Engine
This is Rietveld 408576698