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

Issue 12481021: PNaCl: Add ExpandVarArgs pass for expanding out variable-args function calls (Closed)

Created:
7 years, 9 months ago by Mark Seaborn
Modified:
7 years, 9 months ago
Reviewers:
Derek Schuff, eliben
CC:
native-client-reviews_googlegroups.com
Base URL:
http://git.chromium.org/native_client/pnacl-llvm.git@master
Visibility:
Public.

Description

PNaCl: Add ExpandVarArgs pass for expanding out variable-args function calls Once this pass is enabled, it will simplify the language to reduce the set of constructs that a PNaCl translator needs to handle as part of a stable wire format for PNaCl. BUG=https://code.google.com/p/nativeclient/issues/detail?id=3338 TEST=test/Transforms/NaCl/expand-varargs.ll Committed: https://gerrit.chromium.org/gerrit/gitweb?p=native_client/pnacl-llvm.git;a=commit;h=7216560

Patch Set 1 #

Patch Set 2 : Handle invokes #

Patch Set 3 : Handle invokes (retry upload) #

Patch Set 4 : Handle invokes (retry upload) #

Total comments: 25

Patch Set 5 : Review #

Total comments: 5

Patch Set 6 : Style - review #

Patch Set 7 : Preserve debug info (line numbers) #

Patch Set 8 : Rebase #

Unified diffs Side-by-side diffs Delta from patch set Stats (+460 lines, -0 lines) Patch
M include/llvm/InitializePasses.h View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download
M include/llvm/Transforms/NaCl.h View 1 chunk +1 line, -0 lines 0 comments Download
M lib/Transforms/NaCl/CMakeLists.txt View 1 chunk +1 line, -0 lines 0 comments Download
A lib/Transforms/NaCl/ExpandVarArgs.cpp View 1 2 3 4 5 6 1 chunk +327 lines, -0 lines 0 comments Download
A test/Transforms/NaCl/expand-varargs.ll View 1 2 3 4 1 chunk +129 lines, -0 lines 0 comments Download
M tools/opt/opt.cpp View 1 2 3 4 5 6 7 1 chunk +1 line, -0 lines 0 comments Download

Messages

Total messages: 5 (0 generated)
Mark Seaborn
7 years, 9 months ago (2013-03-21 15:12:35 UTC) #1
eliben
Great work. The comments are mostly very minor. https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/ExpandVarArgs.cpp File lib/Transforms/NaCl/ExpandVarArgs.cpp (right): https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/ExpandVarArgs.cpp#newcode67 lib/Transforms/NaCl/ExpandVarArgs.cpp:67: static ...
7 years, 9 months ago (2013-03-21 16:10:11 UTC) #2
Mark Seaborn
https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/ExpandVarArgs.cpp File lib/Transforms/NaCl/ExpandVarArgs.cpp (right): https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/ExpandVarArgs.cpp#newcode67 lib/Transforms/NaCl/ExpandVarArgs.cpp:67: static void ExpandVarArgFunc(Function *Func) { On 2013/03/21 16:10:11, eliben ...
7 years, 9 months ago (2013-03-21 18:07:55 UTC) #3
eliben
lgtm https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/ExpandVarArgs.cpp File lib/Transforms/NaCl/ExpandVarArgs.cpp (right): https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/ExpandVarArgs.cpp#newcode67 lib/Transforms/NaCl/ExpandVarArgs.cpp:67: static void ExpandVarArgFunc(Function *Func) { On 2013/03/21 18:07:55, ...
7 years, 9 months ago (2013-03-21 18:36:40 UTC) #4
Mark Seaborn
7 years, 9 months ago (2013-03-21 19:50:54 UTC) #5
https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/Expand...
File lib/Transforms/NaCl/ExpandVarArgs.cpp (right):

https://codereview.chromium.org/12481021/diff/5001/lib/Transforms/NaCl/Expand...
lib/Transforms/NaCl/ExpandVarArgs.cpp:93: Func->replaceAllUsesWith(
On 2013/03/21 18:07:55, Mark Seaborn wrote:
> On 2013/03/21 16:10:11, eliben wrote:
> > Would it also be useful to preserve the debug information for the function?
> 
> Yes; I'll have to investigate this.

AFAICT, replaceAllUsesWith() preserves the debug metadata's reference to the
function OK, and I see debug info generated in the assembly output OK.

I've added setDebugLoc() calls to preserve debug line numbers for the
instructions we rewrite.  Please take a look to see if the CopyDebug() helper is
OK with you.

https://codereview.chromium.org/12481021/diff/10001/lib/Transforms/NaCl/Expan...
File lib/Transforms/NaCl/ExpandVarArgs.cpp (right):

https://codereview.chromium.org/12481021/diff/10001/lib/Transforms/NaCl/Expan...
lib/Transforms/NaCl/ExpandVarArgs.cpp:72: SmallVector<Type*,8>
Params(FTy->param_begin(), FTy->param_end());
On 2013/03/21 18:36:40, eliben wrote:
> Idiomatic LLVM style whitespace is:
> 
> SmallVector<Type *, 8>
> 
> [not that I particularly love it, but it's the standard...]

OK, fixed.

https://codereview.chromium.org/12481021/diff/10001/lib/Transforms/NaCl/Expan...
lib/Transforms/NaCl/ExpandVarArgs.cpp:129: SmallVector<Value*,1> Indexes;
On 2013/03/21 18:36:40, eliben wrote:
> ditto

Done.

Powered by Google App Engine
This is Rietveld 408576698