Xiangling_L added inline comments.

================
Comment at: clang/docs/ClangCommandLineReference.rst:2868
 
+Only supported On AIX. Specify usage of volatile and nonvolatile vector 
registers, the extended vector ABI on AIX. Defaults to '-mnovecnvol' when 
Altivec is enabled.
+
----------------
s/On/on;



================
Comment at: clang/lib/CodeGen/BackendUtil.cpp:532
   Options.EmitCallSiteInfo = CodeGenOpts.EmitCallSiteInfo;
+  Options.AIXExtendedAltivecABI = CodeGenOpts.AIXExtendedAltivecABI;
   Options.ValueTrackingVariableLocations =
----------------
The ABI specifies `When the option to use nonvolatile vector registers is 
enalbed. the compilation environment must also predefine __EXTABI__`. I didn't 
see this. Should we also cover this in this patch?


================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:4571
   }
 
+  if (Arg *A =
----------------
On clang, when we do: 
`clang -target powerpc-ibm-aix-xcoff -maltivec -S -emit-llvm test_faltivec.c`,  
clang driver passes `-target-cpu pwr4` as default arch to frontend without 
issuing any error.

However, with XL, we have: 
`"-qaltivec" is not compatible with "-qarch=pwr4". "-qnoaltivec" is being set.` 
 The same error will be issued if `pwr5` is used as well. 

So I suppose for AIX in clang, when user use `-maltivec` without specifying 
arch level, we can do:
1)  by default pass `-target-cpu pwr6` to frontend 
or  2) issue error for "-qarch=pwr4"+ enable altivec
or 3) issue error for `-qacrh = pwr4` + diable altivec like XL does?

Also we should emit error when user use `-maltivec` with -mcpu=pwr5.


================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:4579
+
+    bool haveMaltivec = false;
+
----------------
I would suggest `s/haveMaltivec/HasAltivec` to be consistent with other places 
where if altivec enabled is tested.


================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:4581
+
+    for (const Arg *A : Args) {
+      auto optID = A->getOption().getID();
----------------
Any reason why we cannot use `Args.getLastArg` here for `OPT_maltivec` as well?


================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:4591
+
+    if (A->getOption().matches(options::OPT_mnovecnvol) && haveMaltivec)
+      D.Diag(diag::err_aix_default_altivec_abi);
----------------
Since we are defaulting to default altivec ABI, so I think the logic here 
should be if (HasAltivec && !Args.getLastArg(options::OPT_mvecnvol)), then we 
emit `D.Diag(diag::err_aix_default_altivec_abi)` error?


================
Comment at: clang/test/CodeGen/altivec.c:53
 }
+
+// AIX-ERROR:  error: The default Altivec ABI on AIX is not yet supported, use 
'-mvecnvol' for the extended Altivec ABI
----------------
Could we also add a testcase to test `-mvecnvol/-mnovecnvol` are AIX only 
options?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D89684/new/

https://reviews.llvm.org/D89684

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to